@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,94 @@
|
|
|
1
|
+
// Solana-specific parsers
|
|
2
|
+
import { PublicKey, Keypair } from '@solana/web3.js';
|
|
3
|
+
import { invalidParamsError } from '../../core/errors/mcp-error.js';
|
|
4
|
+
// PublicKey parsing
|
|
5
|
+
export function parsePublicKey(value, fieldName) {
|
|
6
|
+
if (!value) {
|
|
7
|
+
throw invalidParamsError(`Missing required parameter: ${fieldName}`);
|
|
8
|
+
}
|
|
9
|
+
if (value instanceof PublicKey) {
|
|
10
|
+
return value;
|
|
11
|
+
}
|
|
12
|
+
if (typeof value !== 'string') {
|
|
13
|
+
throw invalidParamsError(`Parameter ${fieldName} must be a string (base58 public key)`);
|
|
14
|
+
}
|
|
15
|
+
try {
|
|
16
|
+
return new PublicKey(value);
|
|
17
|
+
}
|
|
18
|
+
catch {
|
|
19
|
+
throw invalidParamsError(`Parameter ${fieldName} is not a valid Solana public key: ${value}`);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
export function parseOptionalPublicKey(value, fieldName) {
|
|
23
|
+
if (value === undefined || value === null || value === '') {
|
|
24
|
+
return undefined;
|
|
25
|
+
}
|
|
26
|
+
return parsePublicKey(value, fieldName);
|
|
27
|
+
}
|
|
28
|
+
// Keypair parsing (supports JSON array, hex, base58)
|
|
29
|
+
export function parseKeypair(value, fieldName) {
|
|
30
|
+
if (!value) {
|
|
31
|
+
throw invalidParamsError(`Missing required parameter: ${fieldName}`);
|
|
32
|
+
}
|
|
33
|
+
let secretKey;
|
|
34
|
+
if (typeof value === 'string') {
|
|
35
|
+
const trimmed = value.trim();
|
|
36
|
+
// JSON array format
|
|
37
|
+
if (trimmed.startsWith('[')) {
|
|
38
|
+
try {
|
|
39
|
+
const arr = JSON.parse(trimmed);
|
|
40
|
+
secretKey = Uint8Array.from(arr);
|
|
41
|
+
}
|
|
42
|
+
catch {
|
|
43
|
+
throw invalidParamsError(`Parameter ${fieldName} is not a valid JSON array`);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
// Hex format
|
|
47
|
+
else if (trimmed.startsWith('0x') || (trimmed.length === 128 && /^[0-9a-fA-F]+$/.test(trimmed))) {
|
|
48
|
+
const hex = trimmed.startsWith('0x') ? trimmed.slice(2) : trimmed;
|
|
49
|
+
secretKey = Uint8Array.from(Buffer.from(hex, 'hex'));
|
|
50
|
+
}
|
|
51
|
+
// Base58 format
|
|
52
|
+
else {
|
|
53
|
+
try {
|
|
54
|
+
const decoded = Buffer.from(value, 'base64');
|
|
55
|
+
if (decoded.length === 64) {
|
|
56
|
+
secretKey = Uint8Array.from(decoded);
|
|
57
|
+
}
|
|
58
|
+
else {
|
|
59
|
+
// Try importing as base58
|
|
60
|
+
const keypair = Keypair.fromSecretKey(Uint8Array.from(Buffer.from(value, 'base64')));
|
|
61
|
+
return keypair;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
catch {
|
|
65
|
+
throw invalidParamsError(`Parameter ${fieldName} is not a valid keypair format`);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
else if (Array.isArray(value)) {
|
|
70
|
+
secretKey = Uint8Array.from(value);
|
|
71
|
+
}
|
|
72
|
+
else {
|
|
73
|
+
throw invalidParamsError(`Parameter ${fieldName} must be a string or array`);
|
|
74
|
+
}
|
|
75
|
+
if (secretKey.length !== 64) {
|
|
76
|
+
throw invalidParamsError(`Parameter ${fieldName} must be 64 bytes, got ${secretKey.length}`);
|
|
77
|
+
}
|
|
78
|
+
return Keypair.fromSecretKey(secretKey);
|
|
79
|
+
}
|
|
80
|
+
// Parse write options for SDK
|
|
81
|
+
export function parseWriteOptions(obj) {
|
|
82
|
+
const options = {};
|
|
83
|
+
if (obj.skipSend !== undefined) {
|
|
84
|
+
options.skipSend = obj.skipSend === true;
|
|
85
|
+
}
|
|
86
|
+
if (obj.signer !== undefined) {
|
|
87
|
+
options.signer = parseKeypair(obj.signer, 'signer');
|
|
88
|
+
}
|
|
89
|
+
if (obj.feePayer !== undefined) {
|
|
90
|
+
options.feePayer = parsePublicKey(obj.feePayer, 'feePayer');
|
|
91
|
+
}
|
|
92
|
+
return options;
|
|
93
|
+
}
|
|
94
|
+
//# sourceMappingURL=parsers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parsers.js","sourceRoot":"","sources":["../../../src/chains/solana/parsers.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import type { IChainProvider, IChainConfig, IWriteOptions, ITransactionResult } from '../../core/interfaces/chain-provider.js';
|
|
2
|
+
import type { IAgent, ISearchParams, ISearchResult, ChainType, ChainPrefix } from '../../core/interfaces/agent.js';
|
|
3
|
+
import type { IFeedback, IFeedbackQuery, IFeedbackResult, IFeedbackInput } from '../../core/interfaces/feedback.js';
|
|
4
|
+
import type { IReputationSummary, ILeaderboardOptions, ILeaderboardResult } from '../../core/interfaces/reputation.js';
|
|
5
|
+
import { SolanaStateManager } from './state.js';
|
|
6
|
+
import type { ISolanaConfig } from './state.js';
|
|
7
|
+
export declare class SolanaChainProvider implements IChainProvider {
|
|
8
|
+
readonly chainType: ChainType;
|
|
9
|
+
readonly chainPrefix: ChainPrefix;
|
|
10
|
+
readonly chainId: string;
|
|
11
|
+
readonly displayName: string;
|
|
12
|
+
private readonly state;
|
|
13
|
+
private _ready;
|
|
14
|
+
constructor(config?: Partial<ISolanaConfig>, privateKey?: string);
|
|
15
|
+
initialize(): Promise<void>;
|
|
16
|
+
isReady(): boolean;
|
|
17
|
+
canWrite(): boolean;
|
|
18
|
+
getConfig(): IChainConfig;
|
|
19
|
+
getState(): SolanaStateManager;
|
|
20
|
+
getAgent(agentId: string): Promise<IAgent | null>;
|
|
21
|
+
agentExists(agentId: string): Promise<boolean>;
|
|
22
|
+
searchAgents(params: ISearchParams): Promise<ISearchResult>;
|
|
23
|
+
getFeedback(agentId: string, client: string, index: bigint): Promise<IFeedback | null>;
|
|
24
|
+
listFeedbacks(query: IFeedbackQuery): Promise<IFeedbackResult>;
|
|
25
|
+
getReputationSummary(agentId: string): Promise<IReputationSummary | null>;
|
|
26
|
+
isIndexerAvailable(): Promise<boolean>;
|
|
27
|
+
getLeaderboard(options?: ILeaderboardOptions): Promise<ILeaderboardResult>;
|
|
28
|
+
giveFeedback(input: IFeedbackInput, options?: IWriteOptions): Promise<ITransactionResult>;
|
|
29
|
+
private mapAgentAccount;
|
|
30
|
+
private mapAgentAccountToSummary;
|
|
31
|
+
private mapIndexedAgent;
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=provider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../../src/chains/solana/provider.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,cAAc,EACd,YAAY,EACZ,aAAa,EACb,kBAAkB,EACnB,MAAM,yCAAyC,CAAC;AACjD,OAAO,KAAK,EACV,MAAM,EAEN,aAAa,EACb,aAAa,EACb,SAAS,EACT,WAAW,EACZ,MAAM,gCAAgC,CAAC;AAExC,OAAO,KAAK,EACV,SAAS,EACT,cAAc,EACd,eAAe,EACf,cAAc,EACf,MAAM,mCAAmC,CAAC;AAC3C,OAAO,KAAK,EACV,kBAAkB,EAClB,mBAAmB,EACnB,kBAAkB,EACnB,MAAM,qCAAqC,CAAC;AAE7C,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAGhD,qBAAa,mBAAoB,YAAW,cAAc;IACxD,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAY;IACzC,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAS;IAC1C,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAS;IACjC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAE7B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAqB;IAC3C,OAAO,CAAC,MAAM,CAAS;gBAEX,MAAM,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,EAAE,UAAU,CAAC,EAAE,MAAM;IAM1D,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAMjC,OAAO,IAAI,OAAO;IAIlB,QAAQ,IAAI,OAAO;IAInB,SAAS,IAAI,YAAY;IAczB,QAAQ,IAAI,kBAAkB;IAKxB,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAYjD,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAK9C,YAAY,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC;IA0J3D,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC;IAwBtF,aAAa,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC,eAAe,CAAC;IA8C9D,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC;IAwBzE,kBAAkB,IAAI,OAAO,CAAC,OAAO,CAAC;IAItC,cAAc,CAAC,OAAO,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IA6B1E,YAAY,CAAC,KAAK,EAAE,cAAc,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,kBAAkB,CAAC;IA0D/F,OAAO,CAAC,eAAe;IAevB,OAAO,CAAC,wBAAwB;IAahC,OAAO,CAAC,eAAe;CAgBxB"}
|
|
@@ -0,0 +1,407 @@
|
|
|
1
|
+
// Solana chain provider implementation
|
|
2
|
+
import { PublicKey } from '@solana/web3.js';
|
|
3
|
+
import { toGlobalId } from '../../core/interfaces/agent.js';
|
|
4
|
+
import { TrustTier, getTrustTierName } from '../../core/interfaces/reputation.js';
|
|
5
|
+
import { SolanaStateManager } from './state.js';
|
|
6
|
+
export class SolanaChainProvider {
|
|
7
|
+
chainType = 'solana';
|
|
8
|
+
chainPrefix = 'sol';
|
|
9
|
+
chainId = 'sol';
|
|
10
|
+
displayName;
|
|
11
|
+
state;
|
|
12
|
+
_ready = false;
|
|
13
|
+
constructor(config, privateKey) {
|
|
14
|
+
this.state = new SolanaStateManager(config, privateKey);
|
|
15
|
+
this.displayName = `Solana ${this.state.config.cluster}`;
|
|
16
|
+
}
|
|
17
|
+
// Lifecycle
|
|
18
|
+
async initialize() {
|
|
19
|
+
// Pre-initialize SDK to verify connection
|
|
20
|
+
this.state.getSdk();
|
|
21
|
+
this._ready = true;
|
|
22
|
+
}
|
|
23
|
+
isReady() {
|
|
24
|
+
return this._ready;
|
|
25
|
+
}
|
|
26
|
+
canWrite() {
|
|
27
|
+
return this.state.canWrite();
|
|
28
|
+
}
|
|
29
|
+
getConfig() {
|
|
30
|
+
const config = this.state.config;
|
|
31
|
+
return {
|
|
32
|
+
chainType: this.chainType,
|
|
33
|
+
chainPrefix: this.chainPrefix,
|
|
34
|
+
displayName: this.displayName,
|
|
35
|
+
rpcUrl: config.rpcUrl ?? '',
|
|
36
|
+
indexerUrl: config.indexerUrl,
|
|
37
|
+
isDefault: true,
|
|
38
|
+
priority: 1,
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
// State access
|
|
42
|
+
getState() {
|
|
43
|
+
return this.state;
|
|
44
|
+
}
|
|
45
|
+
// Agent Operations
|
|
46
|
+
async getAgent(agentId) {
|
|
47
|
+
const sdk = this.state.getSdk();
|
|
48
|
+
try {
|
|
49
|
+
const pubkey = new PublicKey(agentId);
|
|
50
|
+
const agent = await sdk.loadAgent(pubkey);
|
|
51
|
+
if (!agent)
|
|
52
|
+
return null;
|
|
53
|
+
return this.mapAgentAccount(agentId, agent);
|
|
54
|
+
}
|
|
55
|
+
catch {
|
|
56
|
+
return null;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
async agentExists(agentId) {
|
|
60
|
+
const agent = await this.getAgent(agentId);
|
|
61
|
+
return agent !== null;
|
|
62
|
+
}
|
|
63
|
+
async searchAgents(params) {
|
|
64
|
+
const sdk = this.state.getSdk();
|
|
65
|
+
const indexer = this.state.getIndexer();
|
|
66
|
+
const offset = params.offset ?? 0;
|
|
67
|
+
const limit = params.limit ?? 20;
|
|
68
|
+
// Use indexer if available
|
|
69
|
+
if (indexer && !this.state.config.forceOnChain) {
|
|
70
|
+
try {
|
|
71
|
+
let results = [];
|
|
72
|
+
let indexerPaginated = false;
|
|
73
|
+
if (params.owner) {
|
|
74
|
+
// getAgentsByOwner returns all agents, no pagination
|
|
75
|
+
results = await indexer.getAgentsByOwner(params.owner);
|
|
76
|
+
}
|
|
77
|
+
else if (params.collection) {
|
|
78
|
+
// getAgentsByCollection returns all agents, no pagination
|
|
79
|
+
results = await indexer.getAgentsByCollection(params.collection);
|
|
80
|
+
}
|
|
81
|
+
else if (params.query || params.minQualityScore !== undefined || params.minTrustTier !== undefined) {
|
|
82
|
+
// Text search or filters: fetch larger batch for client-side filtering
|
|
83
|
+
// Indexer doesn't support text search, so we fetch more and filter
|
|
84
|
+
const searchLimit = 500; // Fetch up to 500 agents for search
|
|
85
|
+
results = await indexer.getAgents({
|
|
86
|
+
limit: searchLimit,
|
|
87
|
+
offset: 0, // Start from 0, apply offset after filtering
|
|
88
|
+
});
|
|
89
|
+
// Will apply client-side pagination after filtering
|
|
90
|
+
}
|
|
91
|
+
else {
|
|
92
|
+
// No filters: use normal pagination
|
|
93
|
+
results = await indexer.getAgents({
|
|
94
|
+
limit,
|
|
95
|
+
offset,
|
|
96
|
+
});
|
|
97
|
+
indexerPaginated = true;
|
|
98
|
+
}
|
|
99
|
+
// Apply client-side query filtering based on search mode
|
|
100
|
+
const mode = params.searchMode ?? 'all';
|
|
101
|
+
const nameQ = (params.nameQuery ?? params.query ?? '').toLowerCase();
|
|
102
|
+
const descQ = (params.descriptionQuery ?? '').toLowerCase();
|
|
103
|
+
const endpointQ = (params.endpointQuery ?? '').toLowerCase();
|
|
104
|
+
const generalQ = (params.query ?? '').toLowerCase();
|
|
105
|
+
if (nameQ || descQ || endpointQ || generalQ) {
|
|
106
|
+
results = results.filter(a => {
|
|
107
|
+
const name = (a.nft_name ?? '').toLowerCase();
|
|
108
|
+
// Name-specific search
|
|
109
|
+
if (mode === 'name' && nameQ) {
|
|
110
|
+
return name.includes(nameQ);
|
|
111
|
+
}
|
|
112
|
+
// Description search (would need metadata lookup - for now use name)
|
|
113
|
+
if (mode === 'description' && descQ) {
|
|
114
|
+
// TODO: Fetch metadata from indexer to search description
|
|
115
|
+
// For now, fall back to name search
|
|
116
|
+
return name.includes(descQ);
|
|
117
|
+
}
|
|
118
|
+
// Endpoint search (would need metadata lookup)
|
|
119
|
+
if (mode === 'endpoint' && endpointQ) {
|
|
120
|
+
// TODO: Fetch metadata from indexer to search endpoints
|
|
121
|
+
// For now, skip endpoint-only searches
|
|
122
|
+
return false;
|
|
123
|
+
}
|
|
124
|
+
// Search all fields (default)
|
|
125
|
+
if (mode === 'all') {
|
|
126
|
+
if (nameQ && name.includes(nameQ))
|
|
127
|
+
return true;
|
|
128
|
+
if (generalQ && name.includes(generalQ))
|
|
129
|
+
return true;
|
|
130
|
+
// If specific queries provided, require at least one match
|
|
131
|
+
if (nameQ || descQ || endpointQ)
|
|
132
|
+
return false;
|
|
133
|
+
return true;
|
|
134
|
+
}
|
|
135
|
+
return true;
|
|
136
|
+
});
|
|
137
|
+
}
|
|
138
|
+
// Apply minQualityScore filter if specified
|
|
139
|
+
if (params.minQualityScore !== undefined) {
|
|
140
|
+
results = results.filter(a => (a.quality_score ?? 0) >= params.minQualityScore);
|
|
141
|
+
}
|
|
142
|
+
// Apply minTrustTier filter if specified
|
|
143
|
+
if (params.minTrustTier !== undefined) {
|
|
144
|
+
results = results.filter(a => (a.trust_tier ?? 0) >= params.minTrustTier);
|
|
145
|
+
}
|
|
146
|
+
// Only apply client-side pagination if indexer didn't paginate
|
|
147
|
+
// (or if we had to filter results client-side)
|
|
148
|
+
const hasTextSearch = !!(params.query || params.nameQuery || params.descriptionQuery || params.endpointQuery);
|
|
149
|
+
const needsClientPagination = !indexerPaginated || hasTextSearch ||
|
|
150
|
+
params.minQualityScore !== undefined || params.minTrustTier !== undefined;
|
|
151
|
+
if (needsClientPagination) {
|
|
152
|
+
const paginated = results.slice(offset, offset + limit);
|
|
153
|
+
return {
|
|
154
|
+
results: paginated.map((a) => this.mapIndexedAgent(a)),
|
|
155
|
+
total: results.length,
|
|
156
|
+
hasMore: offset + paginated.length < results.length,
|
|
157
|
+
offset,
|
|
158
|
+
limit,
|
|
159
|
+
};
|
|
160
|
+
}
|
|
161
|
+
// Indexer already paginated, return as-is
|
|
162
|
+
return {
|
|
163
|
+
results: results.map((a) => this.mapIndexedAgent(a)),
|
|
164
|
+
total: results.length, // Note: indexer doesn't return total count
|
|
165
|
+
hasMore: results.length === limit, // Assume more if we got a full page
|
|
166
|
+
offset,
|
|
167
|
+
limit,
|
|
168
|
+
};
|
|
169
|
+
}
|
|
170
|
+
catch {
|
|
171
|
+
if (!this.state.config.indexerFallback) {
|
|
172
|
+
throw new Error('Indexer query failed and fallback is disabled');
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
// Fallback to on-chain query (limited)
|
|
177
|
+
let agents = [];
|
|
178
|
+
if (params.owner) {
|
|
179
|
+
const pubkey = new PublicKey(params.owner);
|
|
180
|
+
agents = await sdk.getAgentsByOwner(pubkey);
|
|
181
|
+
}
|
|
182
|
+
// Apply client-side filtering
|
|
183
|
+
let filtered = agents;
|
|
184
|
+
if (params.query) {
|
|
185
|
+
const query = params.query.toLowerCase();
|
|
186
|
+
filtered = agents.filter(a => a.account.nft_name.toLowerCase().includes(query));
|
|
187
|
+
}
|
|
188
|
+
// Apply pagination (using offset/limit from top of function)
|
|
189
|
+
const paginated = filtered.slice(offset, offset + limit);
|
|
190
|
+
return {
|
|
191
|
+
results: paginated.map(a => this.mapAgentAccountToSummary(a.account)),
|
|
192
|
+
total: filtered.length,
|
|
193
|
+
hasMore: offset + paginated.length < filtered.length,
|
|
194
|
+
offset,
|
|
195
|
+
limit,
|
|
196
|
+
};
|
|
197
|
+
}
|
|
198
|
+
// Feedback Operations
|
|
199
|
+
async getFeedback(agentId, client, index) {
|
|
200
|
+
const sdk = this.state.getSdk();
|
|
201
|
+
try {
|
|
202
|
+
const assetPubkey = new PublicKey(agentId);
|
|
203
|
+
const clientPubkey = new PublicKey(client);
|
|
204
|
+
const feedback = await sdk.readFeedback(assetPubkey, clientPubkey, index);
|
|
205
|
+
if (!feedback)
|
|
206
|
+
return null;
|
|
207
|
+
return {
|
|
208
|
+
agentId,
|
|
209
|
+
client,
|
|
210
|
+
index,
|
|
211
|
+
// Note: value/valueDecimals not available in SDK read response
|
|
212
|
+
score: feedback.score,
|
|
213
|
+
tag1: feedback.tag1,
|
|
214
|
+
tag2: feedback.tag2,
|
|
215
|
+
endpoint: feedback.endpoint,
|
|
216
|
+
timestamp: Date.now(),
|
|
217
|
+
chainType: 'solana',
|
|
218
|
+
};
|
|
219
|
+
}
|
|
220
|
+
catch {
|
|
221
|
+
return null;
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
async listFeedbacks(query) {
|
|
225
|
+
const sdk = this.state.getSdk();
|
|
226
|
+
const assetPubkey = new PublicKey(query.agentId);
|
|
227
|
+
const includeRevoked = query.includeRevoked ?? false;
|
|
228
|
+
const feedbacks = await sdk.readAllFeedback(assetPubkey, includeRevoked);
|
|
229
|
+
const mapped = feedbacks.map((f) => ({
|
|
230
|
+
agentId: query.agentId,
|
|
231
|
+
client: f.client.toBase58(),
|
|
232
|
+
index: f.feedbackIndex,
|
|
233
|
+
// Note: value/valueDecimals not available in SDK read response
|
|
234
|
+
score: f.score,
|
|
235
|
+
tag1: f.tag1,
|
|
236
|
+
tag2: f.tag2,
|
|
237
|
+
endpoint: f.endpoint,
|
|
238
|
+
timestamp: Date.now(),
|
|
239
|
+
chainType: 'solana',
|
|
240
|
+
}));
|
|
241
|
+
// Apply filtering
|
|
242
|
+
// Note: Feedbacks with null score (ATOM skipped) are treated as:
|
|
243
|
+
// - score=0 for minScore filter (included in any minScore >= 0 query)
|
|
244
|
+
// - score=100 for maxScore filter (included in any maxScore <= 100 query)
|
|
245
|
+
// This ensures ATOM-skipped feedbacks appear in most queries. To exclude them,
|
|
246
|
+
// filter client-side by checking f.score !== null.
|
|
247
|
+
let filtered = mapped;
|
|
248
|
+
if (query.minScore !== undefined) {
|
|
249
|
+
filtered = filtered.filter(f => (f.score ?? 0) >= query.minScore);
|
|
250
|
+
}
|
|
251
|
+
if (query.maxScore !== undefined) {
|
|
252
|
+
filtered = filtered.filter(f => (f.score ?? 100) <= query.maxScore);
|
|
253
|
+
}
|
|
254
|
+
// Apply pagination
|
|
255
|
+
const offset = query.offset ?? 0;
|
|
256
|
+
const limit = query.limit ?? 20;
|
|
257
|
+
const paginated = filtered.slice(offset, offset + limit);
|
|
258
|
+
return {
|
|
259
|
+
feedbacks: paginated,
|
|
260
|
+
total: filtered.length,
|
|
261
|
+
hasMore: offset + paginated.length < filtered.length,
|
|
262
|
+
};
|
|
263
|
+
}
|
|
264
|
+
// Reputation Operations
|
|
265
|
+
async getReputationSummary(agentId) {
|
|
266
|
+
const sdk = this.state.getSdk();
|
|
267
|
+
try {
|
|
268
|
+
const assetPubkey = new PublicKey(agentId);
|
|
269
|
+
const summary = await sdk.getReputationSummary(assetPubkey);
|
|
270
|
+
const atomStats = await sdk.getAtomStats(assetPubkey).catch(() => null);
|
|
271
|
+
const trustTier = atomStats?.trust_tier ?? TrustTier.Unrated;
|
|
272
|
+
return {
|
|
273
|
+
agentId,
|
|
274
|
+
chainType: 'solana',
|
|
275
|
+
trustTier,
|
|
276
|
+
trustTierName: getTrustTierName(trustTier),
|
|
277
|
+
qualityScore: atomStats?.quality_score ?? summary.averageScore,
|
|
278
|
+
totalFeedbacks: summary.count,
|
|
279
|
+
averageScore: summary.averageScore,
|
|
280
|
+
};
|
|
281
|
+
}
|
|
282
|
+
catch {
|
|
283
|
+
return null;
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
// Optional: Indexer operations
|
|
287
|
+
async isIndexerAvailable() {
|
|
288
|
+
return this.state.isIndexerAvailable();
|
|
289
|
+
}
|
|
290
|
+
async getLeaderboard(options) {
|
|
291
|
+
const indexer = this.state.getIndexer();
|
|
292
|
+
if (!indexer) {
|
|
293
|
+
return { entries: [], total: 0, hasMore: false };
|
|
294
|
+
}
|
|
295
|
+
const result = await indexer.getLeaderboard({
|
|
296
|
+
collection: options?.collection,
|
|
297
|
+
minTier: options?.minFeedbacks ? 1 : undefined,
|
|
298
|
+
limit: options?.limit,
|
|
299
|
+
});
|
|
300
|
+
return {
|
|
301
|
+
entries: result.map((a, i) => ({
|
|
302
|
+
rank: (options?.offset ?? 0) + i + 1,
|
|
303
|
+
agentId: a.asset,
|
|
304
|
+
globalId: toGlobalId('sol', a.asset),
|
|
305
|
+
name: a.nft_name ?? 'Unknown',
|
|
306
|
+
chainType: 'solana',
|
|
307
|
+
trustTier: a.trust_tier ?? TrustTier.Unrated,
|
|
308
|
+
qualityScore: a.quality_score ?? 0,
|
|
309
|
+
totalFeedbacks: a.feedback_count ?? 0,
|
|
310
|
+
})),
|
|
311
|
+
total: result.length,
|
|
312
|
+
hasMore: false,
|
|
313
|
+
};
|
|
314
|
+
}
|
|
315
|
+
// Write operations
|
|
316
|
+
async giveFeedback(input, options) {
|
|
317
|
+
const skipSend = options?.skipSend ?? false;
|
|
318
|
+
// For skipSend, we don't need a signer - we'll return unsigned tx
|
|
319
|
+
if (!skipSend && !this.canWrite()) {
|
|
320
|
+
throw new Error('Write operations require a configured signer. Use skipSend=true to get unsigned transaction.');
|
|
321
|
+
}
|
|
322
|
+
const sdk = this.state.getSdk();
|
|
323
|
+
const assetPubkey = new PublicKey(input.agentId);
|
|
324
|
+
// Build GiveFeedbackParams (SDK v0.5.0 format)
|
|
325
|
+
const feedbackParams = {
|
|
326
|
+
value: typeof input.value === 'bigint' ? input.value : BigInt(input.value),
|
|
327
|
+
valueDecimals: input.valueDecimals ?? 0,
|
|
328
|
+
score: input.score,
|
|
329
|
+
tag1: input.tag1,
|
|
330
|
+
tag2: input.tag2,
|
|
331
|
+
endpoint: input.endpoint,
|
|
332
|
+
feedbackUri: input.feedbackUri ?? '',
|
|
333
|
+
feedbackHash: input.feedbackHash ?? Buffer.alloc(32),
|
|
334
|
+
};
|
|
335
|
+
const result = await sdk.giveFeedback(assetPubkey, feedbackParams, { skipSend });
|
|
336
|
+
if (skipSend) {
|
|
337
|
+
// Return unsigned transaction in base64 format
|
|
338
|
+
if ('transaction' in result && result.transaction) {
|
|
339
|
+
// SDK returns transaction as base64 string when skipSend=true
|
|
340
|
+
const txBase64 = String(result.transaction);
|
|
341
|
+
return {
|
|
342
|
+
unsigned: true,
|
|
343
|
+
transaction: txBase64,
|
|
344
|
+
message: 'Sign this transaction with your wallet and broadcast it to the network.',
|
|
345
|
+
};
|
|
346
|
+
}
|
|
347
|
+
throw new Error('SDK did not return a transaction for skipSend=true');
|
|
348
|
+
}
|
|
349
|
+
// Transaction was sent - check if it succeeded
|
|
350
|
+
// SDK returns { signature: string, success: boolean, error?: string }
|
|
351
|
+
const txResult = result;
|
|
352
|
+
if (txResult.success === false && txResult.error) {
|
|
353
|
+
throw new Error(txResult.error);
|
|
354
|
+
}
|
|
355
|
+
if (txResult.signature) {
|
|
356
|
+
return {
|
|
357
|
+
unsigned: false,
|
|
358
|
+
signature: txResult.signature,
|
|
359
|
+
};
|
|
360
|
+
}
|
|
361
|
+
throw new Error('Unexpected SDK response: no signature returned');
|
|
362
|
+
}
|
|
363
|
+
// Mapping helpers
|
|
364
|
+
mapAgentAccount(id, agent) {
|
|
365
|
+
const globalId = toGlobalId('sol', id);
|
|
366
|
+
return {
|
|
367
|
+
id,
|
|
368
|
+
globalId,
|
|
369
|
+
chainType: 'solana',
|
|
370
|
+
chainPrefix: 'sol',
|
|
371
|
+
name: agent.nft_name,
|
|
372
|
+
owner: agent.getOwnerPublicKey().toBase58(),
|
|
373
|
+
collection: agent.getCollectionPublicKey().toBase58(),
|
|
374
|
+
createdAt: Date.now(),
|
|
375
|
+
updatedAt: Date.now(),
|
|
376
|
+
};
|
|
377
|
+
}
|
|
378
|
+
mapAgentAccountToSummary(agent) {
|
|
379
|
+
const id = agent.getAssetPublicKey().toBase58();
|
|
380
|
+
return {
|
|
381
|
+
id,
|
|
382
|
+
globalId: toGlobalId('sol', id),
|
|
383
|
+
chainType: 'solana',
|
|
384
|
+
chainPrefix: 'sol',
|
|
385
|
+
name: agent.nft_name,
|
|
386
|
+
owner: agent.getOwnerPublicKey().toBase58(),
|
|
387
|
+
collection: agent.getCollectionPublicKey().toBase58(),
|
|
388
|
+
};
|
|
389
|
+
}
|
|
390
|
+
mapIndexedAgent(agent) {
|
|
391
|
+
return {
|
|
392
|
+
id: agent.asset,
|
|
393
|
+
globalId: toGlobalId('sol', agent.asset),
|
|
394
|
+
chainType: 'solana',
|
|
395
|
+
chainPrefix: 'sol',
|
|
396
|
+
name: agent.nft_name ?? 'Unknown',
|
|
397
|
+
description: undefined,
|
|
398
|
+
image: undefined,
|
|
399
|
+
owner: agent.owner,
|
|
400
|
+
collection: agent.collection ?? undefined,
|
|
401
|
+
trustTier: agent.trust_tier ?? undefined,
|
|
402
|
+
qualityScore: agent.quality_score ?? undefined,
|
|
403
|
+
totalFeedbacks: agent.feedback_count ?? undefined,
|
|
404
|
+
};
|
|
405
|
+
}
|
|
406
|
+
}
|
|
407
|
+
//# sourceMappingURL=provider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provider.js","sourceRoot":"","sources":["../../../src/chains/solana/provider.ts"],"names":[],"mappings":"AAAA,uCAAuC;AAEvC,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAe5C,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAY5D,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,qCAAqC,CAAC;AAClF,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAIhD,MAAM,OAAO,mBAAmB;IACrB,SAAS,GAAc,QAAQ,CAAC;IAChC,WAAW,GAAgB,KAAK,CAAC;IACjC,OAAO,GAAW,KAAK,CAAC;IACxB,WAAW,CAAS;IAEZ,KAAK,CAAqB;IACnC,MAAM,GAAG,KAAK,CAAC;IAEvB,YAAY,MAA+B,EAAE,UAAmB;QAC9D,IAAI,CAAC,KAAK,GAAG,IAAI,kBAAkB,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;QACxD,IAAI,CAAC,WAAW,GAAG,UAAU,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;IAC3D,CAAC;IAED,YAAY;IACZ,KAAK,CAAC,UAAU;QACd,0CAA0C;QAC1C,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;QACpB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;IACrB,CAAC;IAED,OAAO;QACL,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;IAC/B,CAAC;IAED,SAAS;QACP,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;QACjC,OAAO;YACL,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,EAAE;YAC3B,UAAU,EAAE,MAAM,CAAC,UAAU;YAC7B,SAAS,EAAE,IAAI;YACf,QAAQ,EAAE,CAAC;SACZ,CAAC;IACJ,CAAC;IAED,eAAe;IACf,QAAQ;QACN,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED,mBAAmB;IACnB,KAAK,CAAC,QAAQ,CAAC,OAAe;QAC5B,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;QAChC,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC,OAAO,CAAC,CAAC;YACtC,MAAM,KAAK,GAAG,MAAM,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;YAC1C,IAAI,CAAC,KAAK;gBAAE,OAAO,IAAI,CAAC;YACxB,OAAO,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAC9C,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,OAAe;QAC/B,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QAC3C,OAAO,KAAK,KAAK,IAAI,CAAC;IACxB,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,MAAqB;QACtC,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;QAChC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC;QACxC,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,CAAC,CAAC;QAClC,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC;QAEjC,2BAA2B;QAC3B,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;YAC/C,IAAI,CAAC;gBACH,IAAI,OAAO,GAAmB,EAAE,CAAC;gBACjC,IAAI,gBAAgB,GAAG,KAAK,CAAC;gBAE7B,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;oBACjB,qDAAqD;oBACrD,OAAO,GAAG,MAAM,OAAO,CAAC,gBAAgB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBACzD,CAAC;qBAAM,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;oBAC7B,0DAA0D;oBAC1D,OAAO,GAAG,MAAM,OAAO,CAAC,qBAAqB,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;gBACnE,CAAC;qBAAM,IAAI,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,eAAe,KAAK,SAAS,IAAI,MAAM,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;oBACrG,uEAAuE;oBACvE,mEAAmE;oBACnE,MAAM,WAAW,GAAG,GAAG,CAAC,CAAC,oCAAoC;oBAC7D,OAAO,GAAG,MAAM,OAAO,CAAC,SAAS,CAAC;wBAChC,KAAK,EAAE,WAAW;wBAClB,MAAM,EAAE,CAAC,EAAE,6CAA6C;qBACzD,CAAC,CAAC;oBACH,oDAAoD;gBACtD,CAAC;qBAAM,CAAC;oBACN,oCAAoC;oBACpC,OAAO,GAAG,MAAM,OAAO,CAAC,SAAS,CAAC;wBAChC,KAAK;wBACL,MAAM;qBACP,CAAC,CAAC;oBACH,gBAAgB,GAAG,IAAI,CAAC;gBAC1B,CAAC;gBAED,yDAAyD;gBACzD,MAAM,IAAI,GAAG,MAAM,CAAC,UAAU,IAAI,KAAK,CAAC;gBACxC,MAAM,KAAK,GAAG,CAAC,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;gBACrE,MAAM,KAAK,GAAG,CAAC,MAAM,CAAC,gBAAgB,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;gBAC5D,MAAM,SAAS,GAAG,CAAC,MAAM,CAAC,aAAa,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;gBAC7D,MAAM,QAAQ,GAAG,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;gBAEpD,IAAI,KAAK,IAAI,KAAK,IAAI,SAAS,IAAI,QAAQ,EAAE,CAAC;oBAC5C,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;wBAC3B,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;wBAE9C,uBAAuB;wBACvB,IAAI,IAAI,KAAK,MAAM,IAAI,KAAK,EAAE,CAAC;4BAC7B,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;wBAC9B,CAAC;wBAED,qEAAqE;wBACrE,IAAI,IAAI,KAAK,aAAa,IAAI,KAAK,EAAE,CAAC;4BACpC,0DAA0D;4BAC1D,oCAAoC;4BACpC,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;wBAC9B,CAAC;wBAED,+CAA+C;wBAC/C,IAAI,IAAI,KAAK,UAAU,IAAI,SAAS,EAAE,CAAC;4BACrC,wDAAwD;4BACxD,uCAAuC;4BACvC,OAAO,KAAK,CAAC;wBACf,CAAC;wBAED,8BAA8B;wBAC9B,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;4BACnB,IAAI,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;gCAAE,OAAO,IAAI,CAAC;4BAC/C,IAAI,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;gCAAE,OAAO,IAAI,CAAC;4BACrD,2DAA2D;4BAC3D,IAAI,KAAK,IAAI,KAAK,IAAI,SAAS;gCAAE,OAAO,KAAK,CAAC;4BAC9C,OAAO,IAAI,CAAC;wBACd,CAAC;wBAED,OAAO,IAAI,CAAC;oBACd,CAAC,CAAC,CAAC;gBACL,CAAC;gBAED,4CAA4C;gBAC5C,IAAI,MAAM,CAAC,eAAe,KAAK,SAAS,EAAE,CAAC;oBACzC,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAC3B,CAAC,CAAC,CAAC,aAAa,IAAI,CAAC,CAAC,IAAI,MAAM,CAAC,eAAgB,CAClD,CAAC;gBACJ,CAAC;gBAED,yCAAyC;gBACzC,IAAI,MAAM,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;oBACtC,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAC3B,CAAC,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,IAAI,MAAM,CAAC,YAAa,CAC5C,CAAC;gBACJ,CAAC;gBAED,+DAA+D;gBAC/D,+CAA+C;gBAC/C,MAAM,aAAa,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,gBAAgB,IAAI,MAAM,CAAC,aAAa,CAAC,CAAC;gBAC9G,MAAM,qBAAqB,GAAG,CAAC,gBAAgB,IAAI,aAAa;oBAC9D,MAAM,CAAC,eAAe,KAAK,SAAS,IAAI,MAAM,CAAC,YAAY,KAAK,SAAS,CAAC;gBAE5E,IAAI,qBAAqB,EAAE,CAAC;oBAC1B,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,KAAK,CAAC,CAAC;oBACxD,OAAO;wBACL,OAAO,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAe,EAAE,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;wBACpE,KAAK,EAAE,OAAO,CAAC,MAAM;wBACrB,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM;wBACnD,MAAM;wBACN,KAAK;qBACN,CAAC;gBACJ,CAAC;gBAED,0CAA0C;gBAC1C,OAAO;oBACL,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAe,EAAE,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;oBAClE,KAAK,EAAE,OAAO,CAAC,MAAM,EAAE,2CAA2C;oBAClE,OAAO,EAAE,OAAO,CAAC,MAAM,KAAK,KAAK,EAAE,oCAAoC;oBACvE,MAAM;oBACN,KAAK;iBACN,CAAC;YACJ,CAAC;YAAC,MAAM,CAAC;gBACP,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,eAAe,EAAE,CAAC;oBACvC,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;gBACnE,CAAC;YACH,CAAC;QACH,CAAC;QAED,uCAAuC;QACvC,IAAI,MAAM,GAAgC,EAAE,CAAC;QAC7C,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;YACjB,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC3C,MAAM,GAAG,MAAM,GAAG,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;QAC9C,CAAC;QAED,8BAA8B;QAC9B,IAAI,QAAQ,GAAG,MAAM,CAAC;QACtB,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;YACjB,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;YACzC,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAC3B,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CACjD,CAAC;QACJ,CAAC;QAED,6DAA6D;QAC7D,MAAM,SAAS,GAAG,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,KAAK,CAAC,CAAC;QAEzD,OAAO;YACL,OAAO,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;YACrE,KAAK,EAAE,QAAQ,CAAC,MAAM;YACtB,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM;YACpD,MAAM;YACN,KAAK;SACN,CAAC;IACJ,CAAC;IAED,sBAAsB;IACtB,KAAK,CAAC,WAAW,CAAC,OAAe,EAAE,MAAc,EAAE,KAAa;QAC9D,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;QAChC,IAAI,CAAC;YACH,MAAM,WAAW,GAAG,IAAI,SAAS,CAAC,OAAO,CAAC,CAAC;YAC3C,MAAM,YAAY,GAAG,IAAI,SAAS,CAAC,MAAM,CAAC,CAAC;YAC3C,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,YAAY,CAAC,WAAW,EAAE,YAAY,EAAE,KAAK,CAAC,CAAC;YAC1E,IAAI,CAAC,QAAQ;gBAAE,OAAO,IAAI,CAAC;YAC3B,OAAO;gBACL,OAAO;gBACP,MAAM;gBACN,KAAK;gBACL,+DAA+D;gBAC/D,KAAK,EAAE,QAAQ,CAAC,KAAK;gBACrB,IAAI,EAAE,QAAQ,CAAC,IAAI;gBACnB,IAAI,EAAE,QAAQ,CAAC,IAAI;gBACnB,QAAQ,EAAE,QAAQ,CAAC,QAAQ;gBAC3B,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;gBACrB,SAAS,EAAE,QAAQ;aACpB,CAAC;QACJ,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,KAAqB;QACvC,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;QAChC,MAAM,WAAW,GAAG,IAAI,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACjD,MAAM,cAAc,GAAG,KAAK,CAAC,cAAc,IAAI,KAAK,CAAC;QACrD,MAAM,SAAS,GAAG,MAAM,GAAG,CAAC,eAAe,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;QAEzE,MAAM,MAAM,GAAgB,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAChD,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ,EAAE;YAC3B,KAAK,EAAE,CAAC,CAAC,aAAa;YACtB,+DAA+D;YAC/D,KAAK,EAAE,CAAC,CAAC,KAAK;YACd,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,QAAQ,EAAE,CAAC,CAAC,QAAQ;YACpB,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;YACrB,SAAS,EAAE,QAAiB;SAC7B,CAAC,CAAC,CAAC;QAEJ,kBAAkB;QAClB,iEAAiE;QACjE,sEAAsE;QACtE,0EAA0E;QAC1E,+EAA+E;QAC/E,mDAAmD;QACnD,IAAI,QAAQ,GAAG,MAAM,CAAC;QACtB,IAAI,KAAK,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;YACjC,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,QAAS,CAAC,CAAC;QACrE,CAAC;QACD,IAAI,KAAK,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;YACjC,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,CAAC,IAAI,KAAK,CAAC,QAAS,CAAC,CAAC;QACvE,CAAC;QAED,mBAAmB;QACnB,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC;QACjC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC;QAChC,MAAM,SAAS,GAAG,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,KAAK,CAAC,CAAC;QAEzD,OAAO;YACL,SAAS,EAAE,SAAS;YACpB,KAAK,EAAE,QAAQ,CAAC,MAAM;YACtB,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM;SACrD,CAAC;IACJ,CAAC;IAED,wBAAwB;IACxB,KAAK,CAAC,oBAAoB,CAAC,OAAe;QACxC,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;QAEhC,IAAI,CAAC;YACH,MAAM,WAAW,GAAG,IAAI,SAAS,CAAC,OAAO,CAAC,CAAC;YAC3C,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,oBAAoB,CAAC,WAAW,CAAC,CAAC;YAC5D,MAAM,SAAS,GAAG,MAAM,GAAG,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;YACxE,MAAM,SAAS,GAAG,SAAS,EAAE,UAAU,IAAI,SAAS,CAAC,OAAO,CAAC;YAE7D,OAAO;gBACL,OAAO;gBACP,SAAS,EAAE,QAAQ;gBACnB,SAAS;gBACT,aAAa,EAAE,gBAAgB,CAAC,SAAS,CAAC;gBAC1C,YAAY,EAAE,SAAS,EAAE,aAAa,IAAI,OAAO,CAAC,YAAY;gBAC9D,cAAc,EAAE,OAAO,CAAC,KAAK;gBAC7B,YAAY,EAAE,OAAO,CAAC,YAAY;aACnC,CAAC;QACJ,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,+BAA+B;IAC/B,KAAK,CAAC,kBAAkB;QACtB,OAAO,IAAI,CAAC,KAAK,CAAC,kBAAkB,EAAE,CAAC;IACzC,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,OAA6B;QAChD,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC;QACxC,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;QACnD,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,cAAc,CAAC;YAC1C,UAAU,EAAE,OAAO,EAAE,UAAU;YAC/B,OAAO,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS;YAC9C,KAAK,EAAE,OAAO,EAAE,KAAK;SACtB,CAAC,CAAC;QAEH,OAAO;YACL,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAe,EAAE,CAAS,EAAE,EAAE,CAAC,CAAC;gBACnD,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;gBACpC,OAAO,EAAE,CAAC,CAAC,KAAK;gBAChB,QAAQ,EAAE,UAAU,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC;gBACpC,IAAI,EAAE,CAAC,CAAC,QAAQ,IAAI,SAAS;gBAC7B,SAAS,EAAE,QAAiB;gBAC5B,SAAS,EAAE,CAAC,CAAC,UAAU,IAAI,SAAS,CAAC,OAAO;gBAC5C,YAAY,EAAE,CAAC,CAAC,aAAa,IAAI,CAAC;gBAClC,cAAc,EAAE,CAAC,CAAC,cAAc,IAAI,CAAC;aACtC,CAAC,CAAC;YACH,KAAK,EAAE,MAAM,CAAC,MAAM;YACpB,OAAO,EAAE,KAAK;SACf,CAAC;IACJ,CAAC;IAED,mBAAmB;IACnB,KAAK,CAAC,YAAY,CAAC,KAAqB,EAAE,OAAuB;QAC/D,MAAM,QAAQ,GAAG,OAAO,EAAE,QAAQ,IAAI,KAAK,CAAC;QAE5C,kEAAkE;QAClE,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC;YAClC,MAAM,IAAI,KAAK,CAAC,8FAA8F,CAAC,CAAC;QAClH,CAAC;QAED,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;QAChC,MAAM,WAAW,GAAG,IAAI,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAEjD,+CAA+C;QAC/C,MAAM,cAAc,GAAG;YACrB,KAAK,EAAE,OAAO,KAAK,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC;YAC1E,aAAa,EAAE,KAAK,CAAC,aAAa,IAAI,CAAC;YACvC,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,WAAW,EAAE,KAAK,CAAC,WAAW,IAAI,EAAE;YACpC,YAAY,EAAE,KAAK,CAAC,YAAY,IAAI,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;SACrD,CAAC;QAEF,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,YAAY,CAAC,WAAW,EAAE,cAAc,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;QAEjF,IAAI,QAAQ,EAAE,CAAC;YACb,+CAA+C;YAC/C,IAAI,aAAa,IAAI,MAAM,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;gBAClD,8DAA8D;gBAC9D,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;gBAC5C,OAAO;oBACL,QAAQ,EAAE,IAAI;oBACd,WAAW,EAAE,QAAQ;oBACrB,OAAO,EAAE,yEAAyE;iBACnF,CAAC;YACJ,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;QACxE,CAAC;QAED,+CAA+C;QAC/C,sEAAsE;QACtE,MAAM,QAAQ,GAAG,MAAmE,CAAC;QAErF,IAAI,QAAQ,CAAC,OAAO,KAAK,KAAK,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;YACjD,MAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAClC,CAAC;QAED,IAAI,QAAQ,CAAC,SAAS,EAAE,CAAC;YACvB,OAAO;gBACL,QAAQ,EAAE,KAAK;gBACf,SAAS,EAAE,QAAQ,CAAC,SAAS;aAC9B,CAAC;QACJ,CAAC;QAED,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;IACpE,CAAC;IAED,kBAAkB;IACV,eAAe,CAAC,EAAU,EAAE,KAAmB;QACrD,MAAM,QAAQ,GAAG,UAAU,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QACvC,OAAO;YACL,EAAE;YACF,QAAQ;YACR,SAAS,EAAE,QAAQ;YACnB,WAAW,EAAE,KAAK;YAClB,IAAI,EAAE,KAAK,CAAC,QAAQ;YACpB,KAAK,EAAE,KAAK,CAAC,iBAAiB,EAAE,CAAC,QAAQ,EAAE;YAC3C,UAAU,EAAE,KAAK,CAAC,sBAAsB,EAAE,CAAC,QAAQ,EAAE;YACrD,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;YACrB,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;SACtB,CAAC;IACJ,CAAC;IAEO,wBAAwB,CAAC,KAAmB;QAClD,MAAM,EAAE,GAAG,KAAK,CAAC,iBAAiB,EAAE,CAAC,QAAQ,EAAE,CAAC;QAChD,OAAO;YACL,EAAE;YACF,QAAQ,EAAE,UAAU,CAAC,KAAK,EAAE,EAAE,CAAC;YAC/B,SAAS,EAAE,QAAQ;YACnB,WAAW,EAAE,KAAK;YAClB,IAAI,EAAE,KAAK,CAAC,QAAQ;YACpB,KAAK,EAAE,KAAK,CAAC,iBAAiB,EAAE,CAAC,QAAQ,EAAE;YAC3C,UAAU,EAAE,KAAK,CAAC,sBAAsB,EAAE,CAAC,QAAQ,EAAE;SACtD,CAAC;IACJ,CAAC;IAEO,eAAe,CAAC,KAAmB;QACzC,OAAO;YACL,EAAE,EAAE,KAAK,CAAC,KAAK;YACf,QAAQ,EAAE,UAAU,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC;YACxC,SAAS,EAAE,QAAQ;YACnB,WAAW,EAAE,KAAK;YAClB,IAAI,EAAE,KAAK,CAAC,QAAQ,IAAI,SAAS;YACjC,WAAW,EAAE,SAAS;YACtB,KAAK,EAAE,SAAS;YAChB,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,UAAU,EAAE,KAAK,CAAC,UAAU,IAAI,SAAS;YACzC,SAAS,EAAE,KAAK,CAAC,UAAU,IAAI,SAAS;YACxC,YAAY,EAAE,KAAK,CAAC,aAAa,IAAI,SAAS;YAC9C,cAAc,EAAE,KAAK,CAAC,cAAc,IAAI,SAAS;SAClD,CAAC;IACJ,CAAC;CACF"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { Keypair } from '@solana/web3.js';
|
|
2
|
+
import { SolanaSDK, IndexerClient, type IPFSClient } from '8004-solana';
|
|
3
|
+
import type { IPFSClientConfig } from '8004-solana';
|
|
4
|
+
export type SolanaCluster = 'devnet';
|
|
5
|
+
export interface ISolanaConfig {
|
|
6
|
+
cluster: SolanaCluster;
|
|
7
|
+
rpcUrl?: string;
|
|
8
|
+
indexerUrl?: string;
|
|
9
|
+
indexerApiKey?: string;
|
|
10
|
+
useIndexer: boolean;
|
|
11
|
+
indexerFallback: boolean;
|
|
12
|
+
forceOnChain: boolean;
|
|
13
|
+
}
|
|
14
|
+
export interface ISolanaState {
|
|
15
|
+
config: ISolanaConfig;
|
|
16
|
+
ipfsConfig?: IPFSClientConfig;
|
|
17
|
+
sdk?: SolanaSDK;
|
|
18
|
+
ipfs?: IPFSClient;
|
|
19
|
+
indexer?: IndexerClient;
|
|
20
|
+
keypair?: Keypair;
|
|
21
|
+
}
|
|
22
|
+
export interface ISignerInfo {
|
|
23
|
+
configured: boolean;
|
|
24
|
+
publicKey?: string;
|
|
25
|
+
error?: string;
|
|
26
|
+
}
|
|
27
|
+
export declare function createDefaultConfig(): ISolanaConfig;
|
|
28
|
+
export declare function parseKeypairFromEnv(privateKey?: string): Keypair | undefined;
|
|
29
|
+
export declare class SolanaStateManager {
|
|
30
|
+
private _config;
|
|
31
|
+
private _sdk?;
|
|
32
|
+
private _indexer?;
|
|
33
|
+
private _keypair?;
|
|
34
|
+
constructor(config?: Partial<ISolanaConfig>, privateKey?: string);
|
|
35
|
+
get config(): ISolanaConfig;
|
|
36
|
+
setConfig(updates: Partial<ISolanaConfig>): void;
|
|
37
|
+
setIpfsConfig(config: IPFSClientConfig): void;
|
|
38
|
+
get keypair(): Keypair | undefined;
|
|
39
|
+
setKeypair(keypair: Keypair | undefined): void;
|
|
40
|
+
getSignerInfo(): ISignerInfo;
|
|
41
|
+
canWrite(): boolean;
|
|
42
|
+
invalidateSdk(): void;
|
|
43
|
+
getSdk(): SolanaSDK;
|
|
44
|
+
getIndexer(): IndexerClient | undefined;
|
|
45
|
+
getIpfs(): IPFSClient;
|
|
46
|
+
hasIpfs(): boolean;
|
|
47
|
+
isIndexerAvailable(): Promise<boolean>;
|
|
48
|
+
getSnapshot(): {
|
|
49
|
+
config: ISolanaConfig;
|
|
50
|
+
signer: ISignerInfo;
|
|
51
|
+
hasIpfs: boolean;
|
|
52
|
+
hasIndexer: boolean;
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=state.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../../src/chains/solana/state.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,KAAK,UAAU,EAAE,MAAM,aAAa,CAAC;AACxE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAMpD,MAAM,MAAM,aAAa,GAAG,QAAQ,CAAC;AAErC,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,aAAa,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,OAAO,CAAC;IACpB,eAAe,EAAE,OAAO,CAAC;IACzB,YAAY,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,aAAa,CAAC;IACtB,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAC9B,GAAG,CAAC,EAAE,SAAS,CAAC;IAChB,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,WAAW;IAC1B,UAAU,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAGD,wBAAgB,mBAAmB,IAAI,aAAa,CASnD;AAGD,wBAAgB,mBAAmB,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CA4B5E;AAGD,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,OAAO,CAAgB;IAC/B,OAAO,CAAC,IAAI,CAAC,CAAY;IACzB,OAAO,CAAC,QAAQ,CAAC,CAAgB;IACjC,OAAO,CAAC,QAAQ,CAAC,CAAU;gBAEf,MAAM,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,EAAE,UAAU,CAAC,EAAE,MAAM;IAMhE,IAAI,MAAM,IAAI,aAAa,CAE1B;IAED,SAAS,CAAC,OAAO,EAAE,OAAO,CAAC,aAAa,CAAC,GAAG,IAAI;IAOhD,aAAa,CAAC,MAAM,EAAE,gBAAgB,GAAG,IAAI;IAM7C,IAAI,OAAO,IAAI,OAAO,GAAG,SAAS,CAOjC;IAED,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,SAAS,GAAG,IAAI;IAM9C,aAAa,IAAI,WAAW;IAW5B,QAAQ,IAAI,OAAO;IAKnB,aAAa,IAAI,IAAI;IAKrB,MAAM,IAAI,SAAS;IAkBnB,UAAU,IAAI,aAAa,GAAG,SAAS;IAcvC,OAAO,IAAI,UAAU;IAKrB,OAAO,IAAI,OAAO;IAMZ,kBAAkB,IAAI,OAAO,CAAC,OAAO,CAAC;IAY5C,WAAW,IAAI;QACb,MAAM,EAAE,aAAa,CAAC;QACtB,MAAM,EAAE,WAAW,CAAC;QACpB,OAAO,EAAE,OAAO,CAAC;QACjB,UAAU,EAAE,OAAO,CAAC;KACrB;CAQF"}
|