@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,162 @@
|
|
|
1
|
+
// Solana runtime state management
|
|
2
|
+
import { Keypair } from '@solana/web3.js';
|
|
3
|
+
import { SolanaSDK, IndexerClient } from '8004-solana';
|
|
4
|
+
import { DEFAULT_SOLANA_CLUSTER, DEFAULT_INDEXER_URL, DEFAULT_INDEXER_API_KEY } from '../../config/defaults.js';
|
|
5
|
+
import { getWalletManager } from '../../core/wallet/index.js';
|
|
6
|
+
import { globalState } from '../../state/global-state.js';
|
|
7
|
+
// Create default config
|
|
8
|
+
export function createDefaultConfig() {
|
|
9
|
+
return {
|
|
10
|
+
cluster: DEFAULT_SOLANA_CLUSTER,
|
|
11
|
+
useIndexer: true,
|
|
12
|
+
indexerFallback: true,
|
|
13
|
+
forceOnChain: false,
|
|
14
|
+
indexerUrl: DEFAULT_INDEXER_URL,
|
|
15
|
+
indexerApiKey: DEFAULT_INDEXER_API_KEY,
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
// Parse keypair from environment or string
|
|
19
|
+
export function parseKeypairFromEnv(privateKey) {
|
|
20
|
+
if (!privateKey)
|
|
21
|
+
return undefined;
|
|
22
|
+
try {
|
|
23
|
+
const trimmed = privateKey.trim();
|
|
24
|
+
// JSON array format
|
|
25
|
+
if (trimmed.startsWith('[')) {
|
|
26
|
+
const arr = JSON.parse(trimmed);
|
|
27
|
+
return Keypair.fromSecretKey(Uint8Array.from(arr));
|
|
28
|
+
}
|
|
29
|
+
// Hex format
|
|
30
|
+
if (trimmed.startsWith('0x') || (trimmed.length === 128 && /^[0-9a-fA-F]+$/.test(trimmed))) {
|
|
31
|
+
const hex = trimmed.startsWith('0x') ? trimmed.slice(2) : trimmed;
|
|
32
|
+
return Keypair.fromSecretKey(Uint8Array.from(Buffer.from(hex, 'hex')));
|
|
33
|
+
}
|
|
34
|
+
// Base64 format
|
|
35
|
+
const decoded = Buffer.from(trimmed, 'base64');
|
|
36
|
+
if (decoded.length === 64) {
|
|
37
|
+
return Keypair.fromSecretKey(Uint8Array.from(decoded));
|
|
38
|
+
}
|
|
39
|
+
return undefined;
|
|
40
|
+
}
|
|
41
|
+
catch {
|
|
42
|
+
return undefined;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
// Solana state manager (per-instance, not singleton)
|
|
46
|
+
export class SolanaStateManager {
|
|
47
|
+
_config;
|
|
48
|
+
_sdk;
|
|
49
|
+
_indexer;
|
|
50
|
+
_keypair;
|
|
51
|
+
constructor(config, privateKey) {
|
|
52
|
+
this._config = { ...createDefaultConfig(), ...config };
|
|
53
|
+
this._keypair = parseKeypairFromEnv(privateKey);
|
|
54
|
+
}
|
|
55
|
+
// Config management
|
|
56
|
+
get config() {
|
|
57
|
+
return this._config;
|
|
58
|
+
}
|
|
59
|
+
setConfig(updates) {
|
|
60
|
+
this._config = { ...this._config, ...updates };
|
|
61
|
+
// Invalidate cached instances
|
|
62
|
+
this._sdk = undefined;
|
|
63
|
+
this._indexer = undefined;
|
|
64
|
+
}
|
|
65
|
+
setIpfsConfig(config) {
|
|
66
|
+
// Delegate to global IPFS service for multi-chain compatibility
|
|
67
|
+
globalState.ipfs.configure(config);
|
|
68
|
+
}
|
|
69
|
+
// Keypair management - supports both env-based and wallet manager
|
|
70
|
+
get keypair() {
|
|
71
|
+
// Priority: 1. Env keypair, 2. Wallet manager (any unlocked Solana wallet)
|
|
72
|
+
if (this._keypair) {
|
|
73
|
+
return this._keypair;
|
|
74
|
+
}
|
|
75
|
+
// Check wallet manager for any unlocked Solana keypair
|
|
76
|
+
return getWalletManager().getAnyUnlockedSolanaKeypair() ?? undefined;
|
|
77
|
+
}
|
|
78
|
+
setKeypair(keypair) {
|
|
79
|
+
this._keypair = keypair;
|
|
80
|
+
// Invalidate SDK as signer changed
|
|
81
|
+
this._sdk = undefined;
|
|
82
|
+
}
|
|
83
|
+
getSignerInfo() {
|
|
84
|
+
const keypair = this.keypair;
|
|
85
|
+
if (!keypair) {
|
|
86
|
+
return { configured: false };
|
|
87
|
+
}
|
|
88
|
+
return {
|
|
89
|
+
configured: true,
|
|
90
|
+
publicKey: keypair.publicKey.toBase58(),
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
canWrite() {
|
|
94
|
+
return this.keypair !== undefined;
|
|
95
|
+
}
|
|
96
|
+
// Force SDK to rebuild (e.g., after wallet unlock)
|
|
97
|
+
invalidateSdk() {
|
|
98
|
+
this._sdk = undefined;
|
|
99
|
+
}
|
|
100
|
+
// SDK access (lazy initialization)
|
|
101
|
+
getSdk() {
|
|
102
|
+
if (!this._sdk) {
|
|
103
|
+
// Use this.keypair (includes wallet manager fallback) instead of this._keypair
|
|
104
|
+
this._sdk = new SolanaSDK({
|
|
105
|
+
cluster: this._config.cluster,
|
|
106
|
+
rpcUrl: this._config.rpcUrl,
|
|
107
|
+
signer: this.keypair,
|
|
108
|
+
indexerUrl: this._config.useIndexer ? this._config.indexerUrl : undefined,
|
|
109
|
+
indexerApiKey: this._config.indexerApiKey,
|
|
110
|
+
useIndexer: this._config.useIndexer,
|
|
111
|
+
indexerFallback: this._config.indexerFallback,
|
|
112
|
+
forceOnChain: this._config.forceOnChain,
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
return this._sdk;
|
|
116
|
+
}
|
|
117
|
+
// Indexer access
|
|
118
|
+
getIndexer() {
|
|
119
|
+
if (!this._config.useIndexer || !this._config.indexerUrl || !this._config.indexerApiKey) {
|
|
120
|
+
return undefined;
|
|
121
|
+
}
|
|
122
|
+
if (!this._indexer) {
|
|
123
|
+
this._indexer = new IndexerClient({
|
|
124
|
+
baseUrl: this._config.indexerUrl,
|
|
125
|
+
apiKey: this._config.indexerApiKey,
|
|
126
|
+
});
|
|
127
|
+
}
|
|
128
|
+
return this._indexer;
|
|
129
|
+
}
|
|
130
|
+
// IPFS access - delegates to global service for multi-chain compatibility
|
|
131
|
+
getIpfs() {
|
|
132
|
+
// Use global IPFS service
|
|
133
|
+
return globalState.ipfs.getClient();
|
|
134
|
+
}
|
|
135
|
+
hasIpfs() {
|
|
136
|
+
// Delegate to global IPFS service
|
|
137
|
+
return globalState.ipfs.isConfigured();
|
|
138
|
+
}
|
|
139
|
+
// Async initialization check
|
|
140
|
+
async isIndexerAvailable() {
|
|
141
|
+
const indexer = this.getIndexer();
|
|
142
|
+
if (!indexer)
|
|
143
|
+
return false;
|
|
144
|
+
try {
|
|
145
|
+
await indexer.getGlobalStats();
|
|
146
|
+
return true;
|
|
147
|
+
}
|
|
148
|
+
catch {
|
|
149
|
+
return false;
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
// Get snapshot for debugging
|
|
153
|
+
getSnapshot() {
|
|
154
|
+
return {
|
|
155
|
+
config: this._config,
|
|
156
|
+
signer: this.getSignerInfo(),
|
|
157
|
+
hasIpfs: this.hasIpfs(),
|
|
158
|
+
hasIndexer: this._config.useIndexer && !!this._config.indexerUrl,
|
|
159
|
+
};
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
//# sourceMappingURL=state.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"state.js","sourceRoot":"","sources":["../../../src/chains/solana/state.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import type { SolanaStateManager } from '../state.js';
|
|
2
|
+
export declare function createAtomTools(getState: () => SolanaStateManager): {
|
|
3
|
+
tools: {
|
|
4
|
+
inputSchema: {
|
|
5
|
+
[x: string]: unknown;
|
|
6
|
+
type: "object";
|
|
7
|
+
properties?: {
|
|
8
|
+
[x: string]: object;
|
|
9
|
+
} | undefined;
|
|
10
|
+
required?: string[] | undefined;
|
|
11
|
+
};
|
|
12
|
+
name: string;
|
|
13
|
+
description?: string | undefined;
|
|
14
|
+
outputSchema?: {
|
|
15
|
+
[x: string]: unknown;
|
|
16
|
+
type: "object";
|
|
17
|
+
properties?: {
|
|
18
|
+
[x: string]: object;
|
|
19
|
+
} | undefined;
|
|
20
|
+
required?: string[] | undefined;
|
|
21
|
+
} | undefined;
|
|
22
|
+
annotations?: {
|
|
23
|
+
title?: string | undefined;
|
|
24
|
+
readOnlyHint?: boolean | undefined;
|
|
25
|
+
destructiveHint?: boolean | undefined;
|
|
26
|
+
idempotentHint?: boolean | undefined;
|
|
27
|
+
openWorldHint?: boolean | undefined;
|
|
28
|
+
} | undefined;
|
|
29
|
+
execution?: {
|
|
30
|
+
taskSupport?: "optional" | "required" | "forbidden" | undefined;
|
|
31
|
+
} | undefined;
|
|
32
|
+
_meta?: {
|
|
33
|
+
[x: string]: unknown;
|
|
34
|
+
} | undefined;
|
|
35
|
+
icons?: {
|
|
36
|
+
src: string;
|
|
37
|
+
mimeType?: string | undefined;
|
|
38
|
+
sizes?: string[] | undefined;
|
|
39
|
+
theme?: "light" | "dark" | undefined;
|
|
40
|
+
}[] | undefined;
|
|
41
|
+
title?: string | undefined;
|
|
42
|
+
}[];
|
|
43
|
+
handlers: Record<string, (args: unknown) => Promise<unknown>>;
|
|
44
|
+
};
|
|
45
|
+
//# sourceMappingURL=atom.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"atom.d.ts","sourceRoot":"","sources":["../../../../src/chains/solana/tools/atom.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAGtD,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oCAE1B,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC;EA+GnE"}
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
// Solana ATOM engine tools
|
|
2
|
+
import { PublicKey } from '@solana/web3.js';
|
|
3
|
+
import { getArgs, readString, readBoolean } from '../../../core/parsers/common.js';
|
|
4
|
+
import { successResponse } from '../../../core/serializers/common.js';
|
|
5
|
+
import { getTrustTierName } from '../../../core/interfaces/reputation.js';
|
|
6
|
+
export function createAtomTools(getState) {
|
|
7
|
+
const tools = [];
|
|
8
|
+
const handlers = {};
|
|
9
|
+
// solana_atom_stats_get
|
|
10
|
+
tools.push({
|
|
11
|
+
name: 'solana_atom_stats_get',
|
|
12
|
+
description: 'Get ATOM reputation engine statistics for a Solana agent including quality score, HyperLogLog cardinality, EMA scores, and historical data',
|
|
13
|
+
inputSchema: {
|
|
14
|
+
type: 'object',
|
|
15
|
+
properties: {
|
|
16
|
+
asset: {
|
|
17
|
+
type: 'string',
|
|
18
|
+
description: 'Agent asset public key (base58)',
|
|
19
|
+
},
|
|
20
|
+
},
|
|
21
|
+
required: ['asset'],
|
|
22
|
+
},
|
|
23
|
+
});
|
|
24
|
+
handlers['solana_atom_stats_get'] = async (args) => {
|
|
25
|
+
const input = getArgs(args);
|
|
26
|
+
const assetStr = readString(input, 'asset', true);
|
|
27
|
+
const asset = new PublicKey(assetStr);
|
|
28
|
+
const sdk = getState().getSdk();
|
|
29
|
+
const stats = await sdk.getAtomStats(asset);
|
|
30
|
+
return successResponse(stats);
|
|
31
|
+
};
|
|
32
|
+
// solana_atom_stats_initialize
|
|
33
|
+
tools.push({
|
|
34
|
+
name: 'solana_atom_stats_initialize',
|
|
35
|
+
description: 'Initialize ATOM stats account for a Solana agent (required before receiving feedback)',
|
|
36
|
+
inputSchema: {
|
|
37
|
+
type: 'object',
|
|
38
|
+
properties: {
|
|
39
|
+
asset: {
|
|
40
|
+
type: 'string',
|
|
41
|
+
description: 'Agent asset public key (base58)',
|
|
42
|
+
},
|
|
43
|
+
skipSend: {
|
|
44
|
+
type: 'boolean',
|
|
45
|
+
description: 'If true, returns unsigned transaction instead of sending',
|
|
46
|
+
},
|
|
47
|
+
},
|
|
48
|
+
required: ['asset'],
|
|
49
|
+
},
|
|
50
|
+
});
|
|
51
|
+
handlers['solana_atom_stats_initialize'] = async (args) => {
|
|
52
|
+
const input = getArgs(args);
|
|
53
|
+
const assetStr = readString(input, 'asset', true);
|
|
54
|
+
const asset = new PublicKey(assetStr);
|
|
55
|
+
const skipSend = readBoolean(input, 'skipSend') ?? false;
|
|
56
|
+
const sdk = getState().getSdk();
|
|
57
|
+
const result = await sdk.initializeAtomStats(asset, { skipSend });
|
|
58
|
+
return successResponse(result);
|
|
59
|
+
};
|
|
60
|
+
// solana_trust_tier_get
|
|
61
|
+
tools.push({
|
|
62
|
+
name: 'solana_trust_tier_get',
|
|
63
|
+
description: 'Get trust tier (0-4: Unrated, Bronze, Silver, Gold, Platinum) for a Solana agent',
|
|
64
|
+
inputSchema: {
|
|
65
|
+
type: 'object',
|
|
66
|
+
properties: {
|
|
67
|
+
asset: {
|
|
68
|
+
type: 'string',
|
|
69
|
+
description: 'Agent asset public key (base58)',
|
|
70
|
+
},
|
|
71
|
+
},
|
|
72
|
+
required: ['asset'],
|
|
73
|
+
},
|
|
74
|
+
});
|
|
75
|
+
handlers['solana_trust_tier_get'] = async (args) => {
|
|
76
|
+
const input = getArgs(args);
|
|
77
|
+
const assetStr = readString(input, 'asset', true);
|
|
78
|
+
const asset = new PublicKey(assetStr);
|
|
79
|
+
const sdk = getState().getSdk();
|
|
80
|
+
const stats = await sdk.getAtomStats(asset);
|
|
81
|
+
if (!stats) {
|
|
82
|
+
return successResponse({ trustTier: 0, trustTierName: 'Unrated', qualityScore: 0 });
|
|
83
|
+
}
|
|
84
|
+
return successResponse({
|
|
85
|
+
trustTier: stats.trust_tier,
|
|
86
|
+
trustTierName: getTrustTierName(stats.trust_tier),
|
|
87
|
+
qualityScore: stats.quality_score,
|
|
88
|
+
});
|
|
89
|
+
};
|
|
90
|
+
// solana_enriched_summary_get
|
|
91
|
+
tools.push({
|
|
92
|
+
name: 'solana_enriched_summary_get',
|
|
93
|
+
description: 'Get enriched reputation summary combining ATOM metrics with feedback statistics',
|
|
94
|
+
inputSchema: {
|
|
95
|
+
type: 'object',
|
|
96
|
+
properties: {
|
|
97
|
+
asset: {
|
|
98
|
+
type: 'string',
|
|
99
|
+
description: 'Agent asset public key (base58)',
|
|
100
|
+
},
|
|
101
|
+
},
|
|
102
|
+
required: ['asset'],
|
|
103
|
+
},
|
|
104
|
+
});
|
|
105
|
+
handlers['solana_enriched_summary_get'] = async (args) => {
|
|
106
|
+
const input = getArgs(args);
|
|
107
|
+
const assetStr = readString(input, 'asset', true);
|
|
108
|
+
const asset = new PublicKey(assetStr);
|
|
109
|
+
const sdk = getState().getSdk();
|
|
110
|
+
const summary = await sdk.getEnrichedSummary(asset);
|
|
111
|
+
return successResponse(summary);
|
|
112
|
+
};
|
|
113
|
+
return { tools, handlers };
|
|
114
|
+
}
|
|
115
|
+
//# sourceMappingURL=atom.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"atom.js","sourceRoot":"","sources":["../../../../src/chains/solana/tools/atom.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import type { SolanaStateManager } from '../state.js';
|
|
2
|
+
export declare function createValidationTools(getState: () => SolanaStateManager): {
|
|
3
|
+
tools: {
|
|
4
|
+
inputSchema: {
|
|
5
|
+
[x: string]: unknown;
|
|
6
|
+
type: "object";
|
|
7
|
+
properties?: {
|
|
8
|
+
[x: string]: object;
|
|
9
|
+
} | undefined;
|
|
10
|
+
required?: string[] | undefined;
|
|
11
|
+
};
|
|
12
|
+
name: string;
|
|
13
|
+
description?: string | undefined;
|
|
14
|
+
outputSchema?: {
|
|
15
|
+
[x: string]: unknown;
|
|
16
|
+
type: "object";
|
|
17
|
+
properties?: {
|
|
18
|
+
[x: string]: object;
|
|
19
|
+
} | undefined;
|
|
20
|
+
required?: string[] | undefined;
|
|
21
|
+
} | undefined;
|
|
22
|
+
annotations?: {
|
|
23
|
+
title?: string | undefined;
|
|
24
|
+
readOnlyHint?: boolean | undefined;
|
|
25
|
+
destructiveHint?: boolean | undefined;
|
|
26
|
+
idempotentHint?: boolean | undefined;
|
|
27
|
+
openWorldHint?: boolean | undefined;
|
|
28
|
+
} | undefined;
|
|
29
|
+
execution?: {
|
|
30
|
+
taskSupport?: "optional" | "required" | "forbidden" | undefined;
|
|
31
|
+
} | undefined;
|
|
32
|
+
_meta?: {
|
|
33
|
+
[x: string]: unknown;
|
|
34
|
+
} | undefined;
|
|
35
|
+
icons?: {
|
|
36
|
+
src: string;
|
|
37
|
+
mimeType?: string | undefined;
|
|
38
|
+
sizes?: string[] | undefined;
|
|
39
|
+
theme?: "light" | "dark" | undefined;
|
|
40
|
+
}[] | undefined;
|
|
41
|
+
title?: string | undefined;
|
|
42
|
+
}[];
|
|
43
|
+
handlers: Record<string, (args: unknown) => Promise<unknown>>;
|
|
44
|
+
};
|
|
45
|
+
//# sourceMappingURL=validation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../../../src/chains/solana/tools/validation.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAEtD,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oCAEhC,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC;EAkNnE"}
|
|
@@ -0,0 +1,212 @@
|
|
|
1
|
+
// Solana validation tools
|
|
2
|
+
import { PublicKey } from '@solana/web3.js';
|
|
3
|
+
import { getArgs, readString, readNumber, readBoolean, parseBuffer } from '../../../core/parsers/common.js';
|
|
4
|
+
import { successResponse } from '../../../core/serializers/common.js';
|
|
5
|
+
export function createValidationTools(getState) {
|
|
6
|
+
const tools = [];
|
|
7
|
+
const handlers = {};
|
|
8
|
+
// solana_validation_request
|
|
9
|
+
tools.push({
|
|
10
|
+
name: 'solana_validation_request',
|
|
11
|
+
description: 'Request third-party validation for a Solana agent',
|
|
12
|
+
inputSchema: {
|
|
13
|
+
type: 'object',
|
|
14
|
+
properties: {
|
|
15
|
+
asset: {
|
|
16
|
+
type: 'string',
|
|
17
|
+
description: 'Agent asset public key (base58)',
|
|
18
|
+
},
|
|
19
|
+
validator: {
|
|
20
|
+
type: 'string',
|
|
21
|
+
description: 'Validator public key (base58)',
|
|
22
|
+
},
|
|
23
|
+
nonce: {
|
|
24
|
+
type: 'number',
|
|
25
|
+
description: 'Validation request nonce',
|
|
26
|
+
},
|
|
27
|
+
requestUri: {
|
|
28
|
+
type: 'string',
|
|
29
|
+
description: 'Request URI (IPFS/Arweave)',
|
|
30
|
+
},
|
|
31
|
+
requestHash: {
|
|
32
|
+
type: 'string',
|
|
33
|
+
description: 'Request hash (base64 or hex, 32 bytes)',
|
|
34
|
+
},
|
|
35
|
+
skipSend: {
|
|
36
|
+
type: 'boolean',
|
|
37
|
+
description: 'If true, returns unsigned transaction',
|
|
38
|
+
},
|
|
39
|
+
},
|
|
40
|
+
required: ['asset', 'validator', 'nonce', 'requestUri', 'requestHash'],
|
|
41
|
+
},
|
|
42
|
+
});
|
|
43
|
+
handlers['solana_validation_request'] = async (args) => {
|
|
44
|
+
const input = getArgs(args);
|
|
45
|
+
const assetStr = readString(input, 'asset', true);
|
|
46
|
+
const validatorStr = readString(input, 'validator', true);
|
|
47
|
+
const nonce = readNumber(input, 'nonce', true);
|
|
48
|
+
const requestUri = readString(input, 'requestUri', true);
|
|
49
|
+
const requestHashStr = readString(input, 'requestHash', true);
|
|
50
|
+
const requestHash = parseBuffer(requestHashStr, 'requestHash');
|
|
51
|
+
const skipSend = readBoolean(input, 'skipSend') ?? false;
|
|
52
|
+
const asset = new PublicKey(assetStr);
|
|
53
|
+
const validator = new PublicKey(validatorStr);
|
|
54
|
+
const sdk = getState().getSdk();
|
|
55
|
+
const result = await sdk.requestValidation(asset, validator, requestUri, { nonce, requestHash, skipSend });
|
|
56
|
+
return successResponse(result);
|
|
57
|
+
};
|
|
58
|
+
// solana_validation_respond
|
|
59
|
+
tools.push({
|
|
60
|
+
name: 'solana_validation_respond',
|
|
61
|
+
description: 'Respond to a validation request (as validator)',
|
|
62
|
+
inputSchema: {
|
|
63
|
+
type: 'object',
|
|
64
|
+
properties: {
|
|
65
|
+
asset: {
|
|
66
|
+
type: 'string',
|
|
67
|
+
description: 'Agent asset public key (base58)',
|
|
68
|
+
},
|
|
69
|
+
nonce: {
|
|
70
|
+
type: 'number',
|
|
71
|
+
description: 'Validation request nonce',
|
|
72
|
+
},
|
|
73
|
+
response: {
|
|
74
|
+
type: 'number',
|
|
75
|
+
description: 'Response score (0-100)',
|
|
76
|
+
},
|
|
77
|
+
responseUri: {
|
|
78
|
+
type: 'string',
|
|
79
|
+
description: 'Response URI (IPFS/Arweave)',
|
|
80
|
+
},
|
|
81
|
+
responseHash: {
|
|
82
|
+
type: 'string',
|
|
83
|
+
description: 'Response hash (base64 or hex, 32 bytes)',
|
|
84
|
+
},
|
|
85
|
+
tag: {
|
|
86
|
+
type: 'string',
|
|
87
|
+
description: 'Response tag (optional, max 32 bytes)',
|
|
88
|
+
},
|
|
89
|
+
skipSend: {
|
|
90
|
+
type: 'boolean',
|
|
91
|
+
description: 'If true, returns unsigned transaction',
|
|
92
|
+
},
|
|
93
|
+
},
|
|
94
|
+
required: ['asset', 'nonce', 'response', 'responseUri', 'responseHash'],
|
|
95
|
+
},
|
|
96
|
+
});
|
|
97
|
+
handlers['solana_validation_respond'] = async (args) => {
|
|
98
|
+
const input = getArgs(args);
|
|
99
|
+
const assetStr = readString(input, 'asset', true);
|
|
100
|
+
const nonce = readNumber(input, 'nonce', true);
|
|
101
|
+
const response = readNumber(input, 'response', true);
|
|
102
|
+
const responseUri = readString(input, 'responseUri', true);
|
|
103
|
+
const responseHashStr = readString(input, 'responseHash', true);
|
|
104
|
+
const responseHash = parseBuffer(responseHashStr, 'responseHash');
|
|
105
|
+
const tag = readString(input, 'tag');
|
|
106
|
+
const skipSend = readBoolean(input, 'skipSend') ?? false;
|
|
107
|
+
const asset = new PublicKey(assetStr);
|
|
108
|
+
const sdk = getState().getSdk();
|
|
109
|
+
const result = await sdk.respondToValidation(asset, nonce, response, responseUri, { responseHash, tag, skipSend });
|
|
110
|
+
return successResponse(result);
|
|
111
|
+
};
|
|
112
|
+
// solana_validation_read
|
|
113
|
+
tools.push({
|
|
114
|
+
name: 'solana_validation_read',
|
|
115
|
+
description: 'Read validation request details',
|
|
116
|
+
inputSchema: {
|
|
117
|
+
type: 'object',
|
|
118
|
+
properties: {
|
|
119
|
+
asset: {
|
|
120
|
+
type: 'string',
|
|
121
|
+
description: 'Agent asset public key (base58)',
|
|
122
|
+
},
|
|
123
|
+
validator: {
|
|
124
|
+
type: 'string',
|
|
125
|
+
description: 'Validator public key (base58)',
|
|
126
|
+
},
|
|
127
|
+
nonce: {
|
|
128
|
+
type: 'number',
|
|
129
|
+
description: 'Validation request nonce',
|
|
130
|
+
},
|
|
131
|
+
},
|
|
132
|
+
required: ['asset', 'validator', 'nonce'],
|
|
133
|
+
},
|
|
134
|
+
});
|
|
135
|
+
handlers['solana_validation_read'] = async (args) => {
|
|
136
|
+
const input = getArgs(args);
|
|
137
|
+
const assetStr = readString(input, 'asset', true);
|
|
138
|
+
const validatorStr = readString(input, 'validator', true);
|
|
139
|
+
const nonce = readNumber(input, 'nonce', true);
|
|
140
|
+
const asset = new PublicKey(assetStr);
|
|
141
|
+
const validator = new PublicKey(validatorStr);
|
|
142
|
+
const sdk = getState().getSdk();
|
|
143
|
+
const validation = await sdk.readValidation(asset, validator, nonce);
|
|
144
|
+
return successResponse(validation);
|
|
145
|
+
};
|
|
146
|
+
// solana_validation_wait
|
|
147
|
+
tools.push({
|
|
148
|
+
name: 'solana_validation_wait',
|
|
149
|
+
description: 'Wait for validation response with retry logic',
|
|
150
|
+
inputSchema: {
|
|
151
|
+
type: 'object',
|
|
152
|
+
properties: {
|
|
153
|
+
asset: {
|
|
154
|
+
type: 'string',
|
|
155
|
+
description: 'Agent asset public key (base58)',
|
|
156
|
+
},
|
|
157
|
+
validator: {
|
|
158
|
+
type: 'string',
|
|
159
|
+
description: 'Validator public key (base58)',
|
|
160
|
+
},
|
|
161
|
+
nonce: {
|
|
162
|
+
type: 'number',
|
|
163
|
+
description: 'Validation request nonce',
|
|
164
|
+
},
|
|
165
|
+
timeoutMs: {
|
|
166
|
+
type: 'number',
|
|
167
|
+
description: 'Timeout in milliseconds (default: 30000)',
|
|
168
|
+
},
|
|
169
|
+
},
|
|
170
|
+
required: ['asset', 'validator', 'nonce'],
|
|
171
|
+
},
|
|
172
|
+
});
|
|
173
|
+
handlers['solana_validation_wait'] = async (args) => {
|
|
174
|
+
const input = getArgs(args);
|
|
175
|
+
const assetStr = readString(input, 'asset', true);
|
|
176
|
+
const validatorStr = readString(input, 'validator', true);
|
|
177
|
+
const nonce = readNumber(input, 'nonce', true);
|
|
178
|
+
const timeoutMs = readNumber(input, 'timeoutMs') ?? 30000;
|
|
179
|
+
const asset = new PublicKey(assetStr);
|
|
180
|
+
const validator = new PublicKey(validatorStr);
|
|
181
|
+
const sdk = getState().getSdk();
|
|
182
|
+
const result = await sdk.waitForValidation(asset, validator, nonce, { timeout: timeoutMs });
|
|
183
|
+
return successResponse(result);
|
|
184
|
+
};
|
|
185
|
+
// solana_validation_pending_get
|
|
186
|
+
tools.push({
|
|
187
|
+
name: 'solana_validation_pending_get',
|
|
188
|
+
description: 'Get pending validation requests for a validator (requires indexer)',
|
|
189
|
+
inputSchema: {
|
|
190
|
+
type: 'object',
|
|
191
|
+
properties: {
|
|
192
|
+
validator: {
|
|
193
|
+
type: 'string',
|
|
194
|
+
description: 'Validator public key (base58)',
|
|
195
|
+
},
|
|
196
|
+
},
|
|
197
|
+
required: ['validator'],
|
|
198
|
+
},
|
|
199
|
+
});
|
|
200
|
+
handlers['solana_validation_pending_get'] = async (args) => {
|
|
201
|
+
const input = getArgs(args);
|
|
202
|
+
const validatorStr = readString(input, 'validator', true);
|
|
203
|
+
const indexer = getState().getIndexer();
|
|
204
|
+
if (!indexer) {
|
|
205
|
+
throw new Error('Indexer not available. Configure INDEXER_URL to use this feature.');
|
|
206
|
+
}
|
|
207
|
+
const result = await indexer.getPendingValidations(validatorStr);
|
|
208
|
+
return successResponse(result);
|
|
209
|
+
};
|
|
210
|
+
return { tools, handlers };
|
|
211
|
+
}
|
|
212
|
+
//# sourceMappingURL=validation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validation.js","sourceRoot":"","sources":["../../../../src/chains/solana/tools/validation.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import type { SolanaStateManager } from '../state.js';
|
|
2
|
+
export declare function createWalletTools(getState: () => SolanaStateManager): {
|
|
3
|
+
tools: {
|
|
4
|
+
inputSchema: {
|
|
5
|
+
[x: string]: unknown;
|
|
6
|
+
type: "object";
|
|
7
|
+
properties?: {
|
|
8
|
+
[x: string]: object;
|
|
9
|
+
} | undefined;
|
|
10
|
+
required?: string[] | undefined;
|
|
11
|
+
};
|
|
12
|
+
name: string;
|
|
13
|
+
description?: string | undefined;
|
|
14
|
+
outputSchema?: {
|
|
15
|
+
[x: string]: unknown;
|
|
16
|
+
type: "object";
|
|
17
|
+
properties?: {
|
|
18
|
+
[x: string]: object;
|
|
19
|
+
} | undefined;
|
|
20
|
+
required?: string[] | undefined;
|
|
21
|
+
} | undefined;
|
|
22
|
+
annotations?: {
|
|
23
|
+
title?: string | undefined;
|
|
24
|
+
readOnlyHint?: boolean | undefined;
|
|
25
|
+
destructiveHint?: boolean | undefined;
|
|
26
|
+
idempotentHint?: boolean | undefined;
|
|
27
|
+
openWorldHint?: boolean | undefined;
|
|
28
|
+
} | undefined;
|
|
29
|
+
execution?: {
|
|
30
|
+
taskSupport?: "optional" | "required" | "forbidden" | undefined;
|
|
31
|
+
} | undefined;
|
|
32
|
+
_meta?: {
|
|
33
|
+
[x: string]: unknown;
|
|
34
|
+
} | undefined;
|
|
35
|
+
icons?: {
|
|
36
|
+
src: string;
|
|
37
|
+
mimeType?: string | undefined;
|
|
38
|
+
sizes?: string[] | undefined;
|
|
39
|
+
theme?: "light" | "dark" | undefined;
|
|
40
|
+
}[] | undefined;
|
|
41
|
+
title?: string | undefined;
|
|
42
|
+
}[];
|
|
43
|
+
handlers: Record<string, (args: unknown) => Promise<unknown>>;
|
|
44
|
+
};
|
|
45
|
+
//# sourceMappingURL=wallet.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wallet.d.ts","sourceRoot":"","sources":["../../../../src/chains/solana/tools/wallet.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAEtD,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oCAE5B,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC;EAmGnE"}
|