@ghostspeak/sdk 2.0.6 → 2.0.8
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/README.md +295 -30
- package/dist/GhostSpeakClient-bnXwUPHI.d.ts +1011 -0
- package/dist/StakingModule-DunDShLq.d.ts +2446 -0
- package/dist/{agent-M74TCRON.js → agent-S42FIMR7.js} +4 -4
- package/dist/{agent-M74TCRON.js.map → agent-S42FIMR7.js.map} +1 -1
- package/dist/batch-operations-45CQFEID.js +4 -0
- package/dist/batch-operations-45CQFEID.js.map +1 -0
- package/dist/browser-CI5_6Gzk.d.ts +234 -0
- package/dist/browser.d.ts +6 -576
- package/dist/browser.js +15 -842
- package/dist/browser.js.map +1 -1
- package/dist/chunk-46QWY3MG.js +156 -0
- package/dist/chunk-46QWY3MG.js.map +1 -0
- package/dist/{chunk-F3DZMBUA.js → chunk-5QBSC4T4.js} +327 -493
- package/dist/chunk-5QBSC4T4.js.map +1 -0
- package/dist/chunk-5QZVFUXB.js +4176 -0
- package/dist/chunk-5QZVFUXB.js.map +1 -0
- package/dist/chunk-6XCCMJ6M.js +1865 -0
- package/dist/chunk-6XCCMJ6M.js.map +1 -0
- package/dist/chunk-A7ALCVUI.js +98 -0
- package/dist/chunk-A7ALCVUI.js.map +1 -0
- package/dist/chunk-AWMGX3OX.js +814 -0
- package/dist/chunk-AWMGX3OX.js.map +1 -0
- package/dist/chunk-BF3IQ35I.js +284 -0
- package/dist/chunk-BF3IQ35I.js.map +1 -0
- package/dist/chunk-BQDGRTVP.js +168 -0
- package/dist/chunk-BQDGRTVP.js.map +1 -0
- package/dist/chunk-IQM5RASO.js +8502 -0
- package/dist/chunk-IQM5RASO.js.map +1 -0
- package/dist/chunk-JYXSOXCP.js +3850 -0
- package/dist/chunk-JYXSOXCP.js.map +1 -0
- package/dist/chunk-OXA7MECJ.js +7787 -0
- package/dist/chunk-OXA7MECJ.js.map +1 -0
- package/dist/chunk-QLRWUHN2.js +231 -0
- package/dist/chunk-QLRWUHN2.js.map +1 -0
- package/dist/chunk-SKMJJ3Q6.js +125 -0
- package/dist/chunk-SKMJJ3Q6.js.map +1 -0
- package/dist/chunk-TTB4OS2D.js +69 -0
- package/dist/chunk-TTB4OS2D.js.map +1 -0
- package/dist/chunk-UP2VWCW5.js +33 -0
- package/dist/{chunk-NSBPE2FW.js.map → chunk-UP2VWCW5.js.map} +1 -1
- package/dist/{chunk-UJUGGLMT.js → chunk-VQZQCHUT.js} +5 -5
- package/dist/{chunk-UJUGGLMT.js.map → chunk-VQZQCHUT.js.map} +1 -1
- package/dist/client.d.ts +4 -4
- package/dist/client.js +11 -10
- package/dist/createAgentAuthorization-KGZNXZBT.js +5 -0
- package/dist/createAgentAuthorization-KGZNXZBT.js.map +1 -0
- package/dist/credentials.js +1 -1
- package/dist/crypto.js +2 -2
- package/dist/errors.js +1 -1
- package/dist/feature-flags-B1g0DCPe.d.ts +1181 -0
- package/dist/generated-QJREJQ2C.js +9 -0
- package/dist/{generated-VNLHMR6Y.js.map → generated-QJREJQ2C.js.map} +1 -1
- package/dist/{ghostspeak_wasm-SB2RPJ3D.js → ghostspeak_wasm-F227HOSM.js} +3 -3
- package/dist/{ghostspeak_wasm-SB2RPJ3D.js.map → ghostspeak_wasm-F227HOSM.js.map} +1 -1
- package/dist/index.d.ts +1179 -1498
- package/dist/index.js +356 -3578
- package/dist/index.js.map +1 -1
- package/dist/metafile-esm.json +1 -1
- package/dist/minimal/core-minimal.d.ts +2446 -1245
- package/dist/minimal/core-minimal.js +9 -9
- package/dist/minimal/core-minimal.js.map +1 -1
- package/dist/nacl-fast-W5BJ3KZ2.js +2229 -0
- package/dist/nacl-fast-W5BJ3KZ2.js.map +1 -0
- package/dist/pda-4KP7CURF.js +4 -0
- package/dist/pda-4KP7CURF.js.map +1 -0
- package/dist/pda-Ce7VYg4T.d.ts +25 -0
- package/dist/reputation-types-Yebf0Rm_.d.ts +1071 -0
- package/dist/revokeAuthorization-2ZRO6GUZ.js +5 -0
- package/dist/revokeAuthorization-2ZRO6GUZ.js.map +1 -0
- package/dist/signature-verification-DGxR4aYQ.d.ts +448 -0
- package/dist/types.js +1 -1
- package/dist/updateReputationWithAuth-PCEUOCFV.js +5 -0
- package/dist/updateReputationWithAuth-PCEUOCFV.js.map +1 -0
- package/dist/utils.d.ts +69 -203
- package/dist/utils.js +15 -153
- package/dist/utils.js.map +1 -1
- package/package.json +27 -34
- package/dist/.tsbuildinfo +0 -1
- package/dist/GhostSpeakClient-D_66Uzsf.d.ts +0 -707
- package/dist/GovernanceModule-DQYYys-H.d.ts +0 -1766
- package/dist/chunk-APCKGD23.js +0 -1328
- package/dist/chunk-APCKGD23.js.map +0 -1
- package/dist/chunk-ASQXX4IT.js +0 -572
- package/dist/chunk-ASQXX4IT.js.map +0 -1
- package/dist/chunk-COGZFWOT.js +0 -19657
- package/dist/chunk-COGZFWOT.js.map +0 -1
- package/dist/chunk-F3DZMBUA.js.map +0 -1
- package/dist/chunk-GMHIUK2R.js +0 -7526
- package/dist/chunk-GMHIUK2R.js.map +0 -1
- package/dist/chunk-IAWBZYPE.js +0 -356
- package/dist/chunk-IAWBZYPE.js.map +0 -1
- package/dist/chunk-NSBPE2FW.js +0 -15
- package/dist/chunk-OWYHJG6H.js +0 -13311
- package/dist/chunk-OWYHJG6H.js.map +0 -1
- package/dist/chunk-RDDPOFR5.js +0 -3
- package/dist/chunk-RDDPOFR5.js.map +0 -1
- package/dist/chunk-RERCHKZP.js +0 -35
- package/dist/chunk-RERCHKZP.js.map +0 -1
- package/dist/chunk-TVVGXYCI.js +0 -2887
- package/dist/chunk-TVVGXYCI.js.map +0 -1
- package/dist/chunk-ZGP5552B.js +0 -377
- package/dist/chunk-ZGP5552B.js.map +0 -1
- package/dist/chunk-ZWOYNHVK.js +0 -196
- package/dist/chunk-ZWOYNHVK.js.map +0 -1
- package/dist/dist/.tsbuildinfo +0 -1
- package/dist/elgamal-VZLWB3XK.js +0 -5
- package/dist/elgamal-VZLWB3XK.js.map +0 -1
- package/dist/feature-flags-V722ZuXO.d.ts +0 -3512
- package/dist/generated-VNLHMR6Y.js +0 -5
- package/dist/ipfs-types-BOt9ZNg4.d.ts +0 -592
- package/dist/multisigConfig-BzEhy6jy.d.ts +0 -58
- package/dist/pda-B_nS8SbD.d.ts +0 -114
- package/dist/pda-S4BFJVGE.js +0 -4
- package/dist/pda-S4BFJVGE.js.map +0 -1
- package/dist/system-addresses-BFNLEbFx.d.ts +0 -857
- package/dist/token-2022-rpc-RALH4RK7.js +0 -593
- package/dist/token-2022-rpc-RALH4RK7.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/types/reputation-tags.ts","../src/utils/reputation-tag-engine.ts","../src/types/privacy-types.ts","../src/types/index.ts","../src/types/api-types.ts","../src/generated/instruction-mappings.ts","../src/utils/instruction-error-handler.ts","../src/utils/enhanced-client-errors.ts","../src/utils/ipfs-client.ts","../src/utils/test-ipfs-provider.ts","../src/constants/system-addresses.ts","../src/types/reputation-types.ts","../src/utils/reputation-calculator.ts"],"names":["TagCategory","SkillTag","BehaviorTag","ComplianceTag","TagConfidenceLevel","PrivacyMode","VisibilityLevel","ScoreRange","address","ReputationTier","BadgeType"],"mappings":"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","file":"chunk-OXA7MECJ.js","sourcesContent":["/**\n * Reputation Tags System\n *\n * Granular tagging system for agent reputation with confidence scoring.\n * Tags are automatically assigned based on metrics and evidence strength.\n *\n * Three tag categories:\n * - Skill Tags: Technical capabilities and domain expertise\n * - Behavior Tags: Service quality patterns and reliability\n * - Compliance Tags: Regulatory and security compliance status\n */\n\n/**\n * Tag confidence score (basis points)\n * 0-10000 where 10000 = 100% confidence\n */\nexport interface TagScore {\n /** Tag identifier (e.g., \"fast-responder\", \"defi-expert\") */\n tagName: string\n /** Confidence level in basis points (0-10000) */\n confidence: number\n /** Number of supporting data points */\n evidenceCount: number\n /** Timestamp when tag was last updated */\n lastUpdated: number\n}\n\n/**\n * Tag categories for organization\n */\nexport enum TagCategory {\n Skill = 'skill',\n Behavior = 'behavior',\n Compliance = 'compliance'\n}\n\n/**\n * Skill-based reputation tags (20+ tags)\n *\n * These tags indicate technical capabilities and domain expertise\n * based on service delivery patterns and client feedback.\n */\nexport enum SkillTag {\n // AI/ML Services\n CodeGeneration = 'code-generation',\n DataAnalysis = 'data-analysis',\n ContentCreation = 'content-creation',\n ImageGeneration = 'image-generation',\n AudioProcessing = 'audio-processing',\n VideoProcessing = 'video-processing',\n NaturalLanguageProcessing = 'nlp-specialist',\n ComputerVision = 'computer-vision',\n ReinforcementLearning = 'reinforcement-learning',\n\n // Blockchain/Web3 Services\n DeFiExpert = 'defi-expert',\n NFTSpecialist = 'nft-specialist',\n SmartContractAudit = 'smart-contract-audit',\n BlockchainDevelopment = 'blockchain-dev',\n DAOGovernance = 'dao-governance',\n\n // Development Services\n GameDevelopment = 'game-dev',\n WebDevelopment = 'web-dev',\n MobileDevelopment = 'mobile-dev',\n APIIntegration = 'api-integration',\n DatabaseManagement = 'database-management',\n DevOpsAutomation = 'devops-automation',\n\n // Business Services\n FinancialAnalysis = 'financial-analysis',\n MarketResearch = 'market-research',\n LegalCompliance = 'legal-compliance',\n CustomerSupport = 'customer-support',\n TranslationServices = 'translation-services',\n\n // Security Services\n SecurityAudit = 'security-audit',\n PenetrationTesting = 'penetration-testing',\n ThreatDetection = 'threat-detection',\n IncidentResponse = 'incident-response',\n\n // Data Services\n DataEngineering = 'data-engineering',\n DataVisualization = 'data-visualization',\n PredictiveModeling = 'predictive-modeling',\n StatisticalAnalysis = 'statistical-analysis'\n}\n\n/**\n * Behavior-based reputation tags (20+ tags)\n *\n * These tags indicate service quality patterns, reliability,\n * and professional conduct based on performance metrics.\n */\nexport enum BehaviorTag {\n // Response Speed\n FastResponder = 'fast-responder', // avg < 60s\n QuickResponder = 'quick-responder', // avg < 5min\n SameDay = 'same-day', // avg < 24h\n\n // Quality & Consistency\n ConsistentQuality = 'consistent-quality', // low variance in ratings\n HighQuality = 'high-quality', // avg rating > 4.5\n TopRated = 'top-rated', // avg rating > 4.8\n PerfectRecord = 'perfect-record', // 100% success rate\n\n // Volume & Activity\n HighVolume = 'high-volume', // >1000 transactions\n VeryHighVolume = 'very-high-volume', // >10000 transactions\n MegaVolume = 'mega-volume', // >100000 transactions\n LongTermActive = 'long-term-active', // active >1 year\n MultiYear = 'multi-year', // active >3 years\n\n // Specialization\n CategorySpecialist = 'category-specialist', // >80% in one category\n MultiDomain = 'multi-domain', // active in 5+ categories\n Generalist = 'generalist', // balanced across categories\n\n // Reliability\n DisputeFree = 'dispute-free', // 0 disputes in 90 days\n LowDispute = 'low-dispute', // <1% dispute rate\n HighResolution = 'high-resolution', // >90% disputes resolved favorably\n\n // Tier Status\n PlatinumTier = 'platinum-tier', // reputation >9000\n GoldTier = 'gold-tier', // reputation >7500\n SilverTier = 'silver-tier', // reputation >5000\n BronzeTier = 'bronze-tier', // reputation >2000\n\n // Engagement\n Responsive = 'responsive', // quick message replies\n Communicative = 'communicative', // frequent updates\n Proactive = 'proactive', // ahead of schedule\n DetailOriented = 'detail-oriented', // thorough documentation\n\n // Trust Signals\n VerifiedIdentity = 'verified-identity', // KYC completed\n LongStanding = 'long-standing', // established reputation\n CommunityTrusted = 'community-trusted', // high peer ratings\n ClientFavorite = 'client-favorite', // high repeat client rate\n}\n\n/**\n * Compliance-based reputation tags (10+ tags)\n *\n * These tags indicate regulatory compliance, security certifications,\n * and adherence to industry standards.\n */\nexport enum ComplianceTag {\n // Identity Verification\n KYCVerified = 'kyc-verified', // Know Your Customer verification complete\n KYBVerified = 'kyb-verified', // Know Your Business verification complete\n AccreditedInvestor = 'accredited-investor', // SEC accreditation\n\n // Security Compliance\n SOC2Compliant = 'soc2-compliant', // SOC 2 Type II certification\n ISO27001 = 'iso-27001', // ISO 27001 certified\n GDPR = 'gdpr-compliant', // GDPR compliant processing\n HIPAA = 'hipaa-compliant', // HIPAA compliant for healthcare data\n PCI_DSS = 'pci-dss', // PCI DSS for payment card data\n\n // Code & Service Quality\n AuditedCode = 'audited-code', // Smart contract audit completed\n BugBounty = 'bug-bounty', // Active bug bounty program\n OpenSource = 'open-source', // Open source codebase\n\n // Insurance & Guarantees\n InsuredService = 'insured-service', // Service liability insurance\n BondedAgent = 'bonded-agent', // Performance bond posted\n\n // Regulatory\n LicensedProfessional = 'licensed-professional', // Professional license verified\n RegulatedEntity = 'regulated-entity', // Operating under regulatory framework\n\n // Transparency\n PublicAuditTrail = 'public-audit-trail', // Public transaction history\n TransparentPricing = 'transparent-pricing', // Clear pricing structure\n VerifiedMetrics = 'verified-metrics', // Third-party verified metrics\n}\n\n/**\n * Tag assignment criteria\n * Defines the rules for automatic tag assignment\n */\nexport interface TagCriteria {\n /** Tag to assign */\n tag: SkillTag | BehaviorTag | ComplianceTag\n /** Category of the tag */\n category: TagCategory\n /** Minimum confidence threshold (basis points) */\n minConfidence: number\n /** Evaluation function */\n evaluate: (metrics: ReputationMetrics) => TagEvaluation\n}\n\n/**\n * Result of tag evaluation\n */\nexport interface TagEvaluation {\n /** Whether tag should be assigned */\n shouldAssign: boolean\n /** Confidence score (0-10000 basis points) */\n confidence: number\n /** Evidence count supporting this tag */\n evidenceCount: number\n /** Explanation of why tag was assigned */\n reason?: string\n}\n\n/**\n * Reputation metrics for tag evaluation\n */\nexport interface ReputationMetrics {\n // Payment metrics\n successfulPayments: bigint\n failedPayments: bigint\n totalResponseTime: bigint\n responseTimeCount: bigint\n\n // Quality metrics\n totalDisputes: number\n disputesResolved: number\n totalRating: number\n totalRatingsCount: number\n\n // Time metrics\n createdAt: number\n updatedAt: number\n\n // Derived metrics\n avgResponseTime: number // milliseconds\n successRate: number // basis points\n avgRating: number // 0-100 scale\n disputeResolutionRate: number // basis points\n}\n\n/**\n * Tag filtering options\n */\nexport interface TagFilters {\n /** Filter by category */\n category?: TagCategory\n /** Minimum confidence threshold */\n minConfidence?: number\n /** Maximum age in seconds */\n maxAge?: number\n /** Include only active tags */\n activeOnly?: boolean\n}\n\n/**\n * Tag update request\n */\nexport interface TagUpdateRequest {\n /** Tag name to update */\n tagName: string\n /** New confidence score */\n confidence: number\n /** Evidence count */\n evidenceCount: number\n /** Timestamp */\n timestamp?: number\n}\n\n/**\n * Bulk tag update request\n */\nexport interface BulkTagUpdateRequest {\n /** Skill tags to add */\n skillTags?: string[]\n /** Behavior tags to add */\n behaviorTags?: string[]\n /** Compliance tags to add */\n complianceTags?: string[]\n /** Tag scores to update */\n tagScores?: TagUpdateRequest[]\n /** Timestamp for updates */\n timestamp?: number\n}\n\n/**\n * Tag query result\n */\nexport interface TagQueryResult {\n /** All tags */\n allTags: string[]\n /** Skill tags */\n skillTags: string[]\n /** Behavior tags */\n behaviorTags: string[]\n /** Compliance tags */\n complianceTags: string[]\n /** Tag scores */\n tagScores: TagScore[]\n /** Last updated timestamp */\n lastUpdated: number\n}\n\n/**\n * Constants for tag system\n */\nexport const TAG_CONSTANTS = {\n /** Maximum skill tags per agent */\n MAX_SKILL_TAGS: 20,\n /** Maximum behavior tags per agent */\n MAX_BEHAVIOR_TAGS: 20,\n /** Maximum compliance tags per agent */\n MAX_COMPLIANCE_TAGS: 10,\n /** Maximum total tag scores */\n MAX_TAG_SCORES: 50,\n /** Maximum tag name length */\n MAX_TAG_NAME_LENGTH: 32,\n /** Stale tag threshold (90 days in seconds) */\n STALE_TAG_THRESHOLD: 90 * 24 * 60 * 60,\n /** Minimum confidence for tag assignment */\n MIN_TAG_CONFIDENCE: 5000, // 50%\n /** Maximum confidence */\n MAX_TAG_CONFIDENCE: 10000, // 100%\n /** Basis points max */\n BASIS_POINTS_MAX: 10000,\n} as const\n\n/**\n * Tag decay configuration\n */\nexport interface TagDecayConfig {\n /** Decay rate per day (basis points) */\n decayRatePerDay: number\n /** Minimum confidence before removal */\n minConfidence: number\n /** Maximum age before forced decay */\n maxAgeSeconds: number\n}\n\n/**\n * Default tag decay settings\n */\nexport const DEFAULT_TAG_DECAY: TagDecayConfig = {\n decayRatePerDay: 10, // 0.1% per day\n minConfidence: 2000, // Remove when below 20%\n maxAgeSeconds: 90 * 24 * 60 * 60, // 90 days\n}\n\n/**\n * Tag confidence levels\n */\nexport enum TagConfidenceLevel {\n VeryLow = 2000, // 20%\n Low = 4000, // 40%\n Medium = 6000, // 60%\n High = 8000, // 80%\n VeryHigh = 9500, // 95%\n Absolute = 10000, // 100%\n}\n","/**\n * Reputation Tag Engine\n *\n * Automatically assigns and manages reputation tags based on agent metrics.\n * Implements confidence scoring, evidence tracking, and tag decay mechanisms.\n *\n * Features:\n * - Auto-tagging based on performance metrics\n * - Confidence calculation with evidence counting\n * - Time-based tag decay (stale tags after 90 days)\n * - Tag validation and limits enforcement\n */\n\nimport {\n type TagScore,\n type TagCriteria,\n type TagEvaluation,\n type ReputationMetrics,\n type TagFilters,\n type TagUpdateRequest,\n type BulkTagUpdateRequest,\n type TagQueryResult,\n type TagDecayConfig,\n TagCategory,\n SkillTag,\n BehaviorTag,\n ComplianceTag,\n TAG_CONSTANTS,\n DEFAULT_TAG_DECAY,\n TagConfidenceLevel,\n} from '../types/reputation-tags.js'\n\n/**\n * Reputation Tag Engine\n *\n * Core engine for automatic tag assignment and management\n */\nexport class ReputationTagEngine {\n private tagCriteria: TagCriteria[] = []\n private decayConfig: TagDecayConfig\n\n constructor(decayConfig: TagDecayConfig = DEFAULT_TAG_DECAY) {\n this.decayConfig = decayConfig\n this.initializeTagCriteria()\n }\n\n /**\n * Initialize all tag assignment criteria\n */\n private initializeTagCriteria(): void {\n this.tagCriteria = [\n // ========================================\n // BEHAVIOR TAGS\n // ========================================\n\n // Fast Responder: avg response time < 60s\n {\n tag: BehaviorTag.FastResponder,\n category: TagCategory.Behavior,\n minConfidence: TAG_CONSTANTS.MIN_TAG_CONFIDENCE,\n evaluate: (metrics: ReputationMetrics): TagEvaluation => {\n if (metrics.responseTimeCount === 0n) {\n return { shouldAssign: false, confidence: 0, evidenceCount: 0 }\n }\n\n const avgResponseTime = metrics.avgResponseTime\n const evidenceCount = Number(metrics.responseTimeCount)\n\n if (avgResponseTime < 60000) {\n // < 60 seconds\n const confidence = Math.min(\n 10000,\n 10000 - Math.floor((avgResponseTime / 60000) * 2000)\n ) // 100% at 0s, 80% at 60s\n return {\n shouldAssign: true,\n confidence,\n evidenceCount,\n reason: `Average response time ${avgResponseTime}ms`,\n }\n }\n\n return { shouldAssign: false, confidence: 0, evidenceCount }\n },\n },\n\n // Quick Responder: avg < 5 minutes\n {\n tag: BehaviorTag.QuickResponder,\n category: TagCategory.Behavior,\n minConfidence: TAG_CONSTANTS.MIN_TAG_CONFIDENCE,\n evaluate: (metrics: ReputationMetrics): TagEvaluation => {\n if (metrics.responseTimeCount === 0n) {\n return { shouldAssign: false, confidence: 0, evidenceCount: 0 }\n }\n\n const avgResponseTime = metrics.avgResponseTime\n const evidenceCount = Number(metrics.responseTimeCount)\n\n if (avgResponseTime < 300000) {\n // < 5 minutes\n const confidence = Math.min(\n 10000,\n 10000 - Math.floor((avgResponseTime / 300000) * 3000)\n )\n return {\n shouldAssign: true,\n confidence,\n evidenceCount,\n reason: `Average response time ${avgResponseTime}ms`,\n }\n }\n\n return { shouldAssign: false, confidence: 0, evidenceCount }\n },\n },\n\n // Dispute Free: 0 disputes in last 90 days\n {\n tag: BehaviorTag.DisputeFree,\n category: TagCategory.Behavior,\n minConfidence: TAG_CONSTANTS.MIN_TAG_CONFIDENCE,\n evaluate: (metrics: ReputationMetrics): TagEvaluation => {\n const totalPayments = Number(metrics.successfulPayments + metrics.failedPayments)\n\n if (totalPayments < 10) {\n return { shouldAssign: false, confidence: 0, evidenceCount: 0 }\n }\n\n if (metrics.totalDisputes === 0) {\n const confidence = Math.min(10000, 7000 + totalPayments * 10) // Scale with volume\n return {\n shouldAssign: true,\n confidence,\n evidenceCount: totalPayments,\n reason: `0 disputes over ${totalPayments} transactions`,\n }\n }\n\n return { shouldAssign: false, confidence: 0, evidenceCount: totalPayments }\n },\n },\n\n // Low Dispute: <1% dispute rate\n {\n tag: BehaviorTag.LowDispute,\n category: TagCategory.Behavior,\n minConfidence: TAG_CONSTANTS.MIN_TAG_CONFIDENCE,\n evaluate: (metrics: ReputationMetrics): TagEvaluation => {\n const totalPayments = Number(metrics.successfulPayments + metrics.failedPayments)\n\n if (totalPayments < 100) {\n return { shouldAssign: false, confidence: 0, evidenceCount: 0 }\n }\n\n const disputeRate = (metrics.totalDisputes / totalPayments) * 100\n\n if (disputeRate < 1) {\n const confidence = Math.min(\n 10000,\n 10000 - Math.floor(disputeRate * 1000)\n )\n return {\n shouldAssign: true,\n confidence,\n evidenceCount: totalPayments,\n reason: `${disputeRate.toFixed(2)}% dispute rate`,\n }\n }\n\n return { shouldAssign: false, confidence: 0, evidenceCount: totalPayments }\n },\n },\n\n // High Volume: >1000 transactions\n {\n tag: BehaviorTag.HighVolume,\n category: TagCategory.Behavior,\n minConfidence: TAG_CONSTANTS.MIN_TAG_CONFIDENCE,\n evaluate: (metrics: ReputationMetrics): TagEvaluation => {\n const totalPayments = Number(metrics.successfulPayments)\n\n if (totalPayments >= 1000) {\n const confidence = Math.min(10000, 6000 + Math.floor(totalPayments / 100))\n return {\n shouldAssign: true,\n confidence,\n evidenceCount: totalPayments,\n reason: `${totalPayments} successful transactions`,\n }\n }\n\n return { shouldAssign: false, confidence: 0, evidenceCount: totalPayments }\n },\n },\n\n // Very High Volume: >10000 transactions\n {\n tag: BehaviorTag.VeryHighVolume,\n category: TagCategory.Behavior,\n minConfidence: TAG_CONSTANTS.MIN_TAG_CONFIDENCE,\n evaluate: (metrics: ReputationMetrics): TagEvaluation => {\n const totalPayments = Number(metrics.successfulPayments)\n\n if (totalPayments >= 10000) {\n const confidence = Math.min(10000, 8000 + Math.floor(totalPayments / 1000))\n return {\n shouldAssign: true,\n confidence,\n evidenceCount: totalPayments,\n reason: `${totalPayments} successful transactions`,\n }\n }\n\n return { shouldAssign: false, confidence: 0, evidenceCount: totalPayments }\n },\n },\n\n // Top Rated: avg rating > 4.8\n {\n tag: BehaviorTag.TopRated,\n category: TagCategory.Behavior,\n minConfidence: TAG_CONSTANTS.MIN_TAG_CONFIDENCE,\n evaluate: (metrics: ReputationMetrics): TagEvaluation => {\n if (metrics.totalRatingsCount < 10) {\n return { shouldAssign: false, confidence: 0, evidenceCount: 0 }\n }\n\n const avgRating = metrics.avgRating / 20 // Convert 0-100 scale to 0-5\n const evidenceCount = metrics.totalRatingsCount\n\n if (avgRating > 4.8) {\n const confidence = Math.min(\n 10000,\n Math.floor((avgRating - 4.8) * 50000) + 8000\n )\n return {\n shouldAssign: true,\n confidence,\n evidenceCount,\n reason: `Average rating ${avgRating.toFixed(2)}/5.0`,\n }\n }\n\n return { shouldAssign: false, confidence: 0, evidenceCount }\n },\n },\n\n // High Quality: avg rating > 4.5\n {\n tag: BehaviorTag.HighQuality,\n category: TagCategory.Behavior,\n minConfidence: TAG_CONSTANTS.MIN_TAG_CONFIDENCE,\n evaluate: (metrics: ReputationMetrics): TagEvaluation => {\n if (metrics.totalRatingsCount < 5) {\n return { shouldAssign: false, confidence: 0, evidenceCount: 0 }\n }\n\n const avgRating = metrics.avgRating / 20 // Convert to 0-5 scale\n const evidenceCount = metrics.totalRatingsCount\n\n if (avgRating > 4.5) {\n const confidence = Math.min(\n 10000,\n Math.floor((avgRating - 4.5) * 20000) + 7000\n )\n return {\n shouldAssign: true,\n confidence,\n evidenceCount,\n reason: `Average rating ${avgRating.toFixed(2)}/5.0`,\n }\n }\n\n return { shouldAssign: false, confidence: 0, evidenceCount }\n },\n },\n\n // Consistent Quality: low variance in ratings\n {\n tag: BehaviorTag.ConsistentQuality,\n category: TagCategory.Behavior,\n minConfidence: TAG_CONSTANTS.MIN_TAG_CONFIDENCE,\n evaluate: (metrics: ReputationMetrics): TagEvaluation => {\n if (metrics.totalRatingsCount < 20) {\n return { shouldAssign: false, confidence: 0, evidenceCount: 0 }\n }\n\n const avgRating = metrics.avgRating / 20\n const evidenceCount = metrics.totalRatingsCount\n\n // Assume consistency if high average (actual variance calculation would require more data)\n if (avgRating > 4.3) {\n const confidence = Math.min(\n 10000,\n Math.floor((avgRating - 4.0) * 10000) + 5000\n )\n return {\n shouldAssign: true,\n confidence,\n evidenceCount,\n reason: `Consistent high ratings (${avgRating.toFixed(2)}/5.0)`,\n }\n }\n\n return { shouldAssign: false, confidence: 0, evidenceCount }\n },\n },\n\n // Perfect Record: 100% success rate\n {\n tag: BehaviorTag.PerfectRecord,\n category: TagCategory.Behavior,\n minConfidence: TAG_CONSTANTS.MIN_TAG_CONFIDENCE,\n evaluate: (metrics: ReputationMetrics): TagEvaluation => {\n const totalPayments = Number(metrics.successfulPayments + metrics.failedPayments)\n\n if (totalPayments < 50) {\n return { shouldAssign: false, confidence: 0, evidenceCount: 0 }\n }\n\n const successRate = metrics.successRate / 100 // Convert basis points to percentage\n\n if (successRate === 100 && metrics.failedPayments === 0n) {\n const confidence = Math.min(10000, 8000 + Math.floor(totalPayments / 10))\n return {\n shouldAssign: true,\n confidence,\n evidenceCount: totalPayments,\n reason: `100% success rate over ${totalPayments} transactions`,\n }\n }\n\n return { shouldAssign: false, confidence: 0, evidenceCount: totalPayments }\n },\n },\n\n // High Resolution: >90% disputes resolved favorably\n {\n tag: BehaviorTag.HighResolution,\n category: TagCategory.Behavior,\n minConfidence: TAG_CONSTANTS.MIN_TAG_CONFIDENCE,\n evaluate: (metrics: ReputationMetrics): TagEvaluation => {\n if (metrics.totalDisputes < 5) {\n return { shouldAssign: false, confidence: 0, evidenceCount: 0 }\n }\n\n const resolutionRate = (metrics.disputesResolved / metrics.totalDisputes) * 100\n const evidenceCount = metrics.totalDisputes\n\n if (resolutionRate > 90) {\n const confidence = Math.min(\n 10000,\n Math.floor((resolutionRate - 90) * 1000) + 8000\n )\n return {\n shouldAssign: true,\n confidence,\n evidenceCount,\n reason: `${resolutionRate.toFixed(1)}% disputes resolved favorably`,\n }\n }\n\n return { shouldAssign: false, confidence: 0, evidenceCount }\n },\n },\n\n // Long Term Active: active >1 year\n {\n tag: BehaviorTag.LongTermActive,\n category: TagCategory.Behavior,\n minConfidence: TAG_CONSTANTS.MIN_TAG_CONFIDENCE,\n evaluate: (metrics: ReputationMetrics): TagEvaluation => {\n const currentTime = Math.floor(Date.now() / 1000)\n const ageSeconds = currentTime - metrics.createdAt\n const ageYears = ageSeconds / (365 * 24 * 60 * 60)\n\n if (ageYears >= 1) {\n const confidence = Math.min(10000, Math.floor(ageYears * 2000) + 6000)\n return {\n shouldAssign: true,\n confidence,\n evidenceCount: Math.floor(ageYears),\n reason: `Active for ${ageYears.toFixed(1)} years`,\n }\n }\n\n return { shouldAssign: false, confidence: 0, evidenceCount: 0 }\n },\n },\n\n // Multi-Year: active >3 years\n {\n tag: BehaviorTag.MultiYear,\n category: TagCategory.Behavior,\n minConfidence: TAG_CONSTANTS.MIN_TAG_CONFIDENCE,\n evaluate: (metrics: ReputationMetrics): TagEvaluation => {\n const currentTime = Math.floor(Date.now() / 1000)\n const ageSeconds = currentTime - metrics.createdAt\n const ageYears = ageSeconds / (365 * 24 * 60 * 60)\n\n if (ageYears >= 3) {\n const confidence = Math.min(10000, Math.floor(ageYears * 1000) + 7000)\n return {\n shouldAssign: true,\n confidence,\n evidenceCount: Math.floor(ageYears),\n reason: `Active for ${ageYears.toFixed(1)} years`,\n }\n }\n\n return { shouldAssign: false, confidence: 0, evidenceCount: 0 }\n },\n },\n ]\n }\n\n /**\n * Calculate tags for an agent based on their metrics\n */\n async calculateTags(metrics: ReputationMetrics): Promise<TagScore[]> {\n const tagScores: TagScore[] = []\n const currentTime = Math.floor(Date.now() / 1000)\n\n // Evaluate all tag criteria\n for (const criteria of this.tagCriteria) {\n const evaluation = criteria.evaluate(metrics)\n\n if (evaluation.shouldAssign && evaluation.confidence >= criteria.minConfidence) {\n tagScores.push({\n tagName: criteria.tag,\n confidence: evaluation.confidence,\n evidenceCount: evaluation.evidenceCount,\n lastUpdated: currentTime,\n })\n }\n }\n\n return tagScores\n }\n\n /**\n * Apply decay to existing tags based on age\n */\n applyTagDecay(tagScores: TagScore[], currentTimestamp?: number): TagScore[] {\n const now = currentTimestamp || Math.floor(Date.now() / 1000)\n const decayedTags: TagScore[] = []\n\n for (const tag of tagScores) {\n const ageSeconds = now - tag.lastUpdated\n const ageDays = ageSeconds / (24 * 60 * 60)\n\n // Calculate decay\n const totalDecay = Math.floor(ageDays * this.decayConfig.decayRatePerDay)\n const newConfidence = Math.max(0, tag.confidence - totalDecay)\n\n // Keep tag if above minimum confidence and not too old\n if (\n newConfidence >= this.decayConfig.minConfidence &&\n ageSeconds <= this.decayConfig.maxAgeSeconds\n ) {\n decayedTags.push({\n ...tag,\n confidence: newConfidence,\n })\n }\n }\n\n return decayedTags\n }\n\n /**\n * Merge new tags with existing tags, updating confidence scores\n */\n mergeTags(existingTags: TagScore[], newTags: TagScore[]): TagScore[] {\n const tagMap = new Map<string, TagScore>()\n\n // Add existing tags\n for (const tag of existingTags) {\n tagMap.set(tag.tagName, tag)\n }\n\n // Update or add new tags\n for (const tag of newTags) {\n const existing = tagMap.get(tag.tagName)\n\n if (existing) {\n // Update if new tag has higher confidence or more evidence\n if (\n tag.confidence > existing.confidence ||\n tag.evidenceCount > existing.evidenceCount\n ) {\n tagMap.set(tag.tagName, tag)\n }\n } else {\n tagMap.set(tag.tagName, tag)\n }\n }\n\n return Array.from(tagMap.values())\n }\n\n /**\n * Filter tags based on criteria\n */\n filterTags(tags: TagScore[], filters: TagFilters): TagScore[] {\n let filtered = [...tags]\n const currentTime = Math.floor(Date.now() / 1000)\n\n // Filter by category\n if (filters.category) {\n filtered = filtered.filter((tag) => this.getTagCategory(tag.tagName) === filters.category)\n }\n\n // Filter by minimum confidence\n if (filters.minConfidence !== undefined) {\n filtered = filtered.filter((tag) => tag.confidence >= filters.minConfidence!)\n }\n\n // Filter by age\n if (filters.maxAge !== undefined) {\n filtered = filtered.filter((tag) => {\n const age = currentTime - tag.lastUpdated\n return age <= filters.maxAge!\n })\n }\n\n // Filter by active status\n if (filters.activeOnly) {\n filtered = filtered.filter((tag) => {\n const age = currentTime - tag.lastUpdated\n return (\n age <= TAG_CONSTANTS.STALE_TAG_THRESHOLD &&\n tag.confidence >= this.decayConfig.minConfidence\n )\n })\n }\n\n return filtered\n }\n\n /**\n * Get category for a tag\n */\n private getTagCategory(tagName: string): TagCategory {\n if (Object.values(SkillTag).includes(tagName as SkillTag)) {\n return TagCategory.Skill\n } else if (Object.values(BehaviorTag).includes(tagName as BehaviorTag)) {\n return TagCategory.Behavior\n } else if (Object.values(ComplianceTag).includes(tagName as ComplianceTag)) {\n return TagCategory.Compliance\n }\n return TagCategory.Behavior // Default\n }\n\n /**\n * Validate tag name length\n */\n validateTagName(tagName: string): boolean {\n return tagName.length > 0 && tagName.length <= TAG_CONSTANTS.MAX_TAG_NAME_LENGTH\n }\n\n /**\n * Validate confidence score\n */\n validateConfidence(confidence: number): boolean {\n return confidence >= 0 && confidence <= TAG_CONSTANTS.MAX_TAG_CONFIDENCE\n }\n\n /**\n * Get confidence level description\n */\n getConfidenceLevel(confidence: number): string {\n if (confidence >= TagConfidenceLevel.Absolute) return 'Absolute'\n if (confidence >= TagConfidenceLevel.VeryHigh) return 'Very High'\n if (confidence >= TagConfidenceLevel.High) return 'High'\n if (confidence >= TagConfidenceLevel.Medium) return 'Medium'\n if (confidence >= TagConfidenceLevel.Low) return 'Low'\n return 'Very Low'\n }\n\n /**\n * Sort tags by confidence (descending)\n */\n sortByConfidence(tags: TagScore[]): TagScore[] {\n return [...tags].sort((a, b) => b.confidence - a.confidence)\n }\n\n /**\n * Sort tags by evidence count (descending)\n */\n sortByEvidence(tags: TagScore[]): TagScore[] {\n return [...tags].sort((a, b) => b.evidenceCount - a.evidenceCount)\n }\n\n /**\n * Sort tags by last updated (most recent first)\n */\n sortByRecent(tags: TagScore[]): TagScore[] {\n return [...tags].sort((a, b) => b.lastUpdated - a.lastUpdated)\n }\n\n /**\n * Get top N tags by confidence\n */\n getTopTags(tags: TagScore[], count: number): TagScore[] {\n return this.sortByConfidence(tags).slice(0, count)\n }\n\n /**\n * Categorize tags by type\n */\n categorizeTags(tags: TagScore[]): TagQueryResult {\n const skillTags: string[] = []\n const behaviorTags: string[] = []\n const complianceTags: string[] = []\n const allTags: string[] = []\n\n for (const tag of tags) {\n allTags.push(tag.tagName)\n const category = this.getTagCategory(tag.tagName)\n\n switch (category) {\n case TagCategory.Skill:\n skillTags.push(tag.tagName)\n break\n case TagCategory.Behavior:\n behaviorTags.push(tag.tagName)\n break\n case TagCategory.Compliance:\n complianceTags.push(tag.tagName)\n break\n }\n }\n\n return {\n allTags,\n skillTags,\n behaviorTags,\n complianceTags,\n tagScores: tags,\n lastUpdated: tags.length > 0 ? Math.max(...tags.map((t) => t.lastUpdated)) : 0,\n }\n }\n}\n","import type { Address } from '@solana/addresses'\n\n/**\n * Privacy mode for reputation display\n *\n * Determines how much reputation information is publicly visible.\n */\nexport enum PrivacyMode {\n /** Full disclosure - all reputation data is public */\n Public = 'Public',\n /** Show only reputation tier (Bronze/Silver/Gold/Platinum) */\n TierOnly = 'TierOnly',\n /** Show score range bucket (e.g., 750-850) */\n RangeOnly = 'RangeOnly',\n /** Custom selective disclosure */\n Custom = 'Custom',\n /** Fully confidential - ZK proofs required */\n Confidential = 'Confidential',\n}\n\n/**\n * Visibility level for individual metrics\n */\nexport enum VisibilityLevel {\n /** Visible to everyone */\n Public = 'Public',\n /** Visible only to authorized viewers */\n Private = 'Private',\n /** Visible only with ZK proof */\n ZKProof = 'ZKProof',\n}\n\n/**\n * Reputation tier levels (for tier-only privacy mode)\n */\nexport enum ReputationTier {\n None = 'None',\n Bronze = 'Bronze',\n Silver = 'Silver',\n Gold = 'Gold',\n Platinum = 'Platinum',\n}\n\n/**\n * Score range buckets (for range-only privacy mode)\n */\nexport enum ScoreRange {\n VeryLow = 'VeryLow', // 0-2000\n Low = 'Low', // 2000-5000\n Medium = 'Medium', // 5000-7500\n High = 'High', // 7500-9000\n VeryHigh = 'VeryHigh', // 9000-10000\n}\n\n/**\n * Selective disclosure settings for individual metrics\n */\nexport interface MetricVisibility {\n /** Show exact Ghost Score */\n showScore: VisibilityLevel\n /** Show total jobs completed */\n showJobsCompleted: VisibilityLevel\n /** Show success rate percentage */\n showSuccessRate: VisibilityLevel\n /** Show average response time */\n showResponseTime: VisibilityLevel\n /** Show dispute statistics */\n showDisputes: VisibilityLevel\n /** Show earnings/payment data */\n showEarnings: VisibilityLevel\n /** Show client ratings */\n showRatings: VisibilityLevel\n /** Show badges earned */\n showBadges: VisibilityLevel\n}\n\n/**\n * Privacy settings for an agent's reputation\n */\nexport interface PrivacySettings {\n /** Agent public key */\n agent: Address\n /** Current privacy mode */\n mode: PrivacyMode\n /** Metric-specific visibility settings */\n metricVisibility: MetricVisibility\n /** List of addresses with viewing permission */\n authorizedViewers: Address[]\n /** Auto-grant access to clients who pay */\n autoGrantClients: boolean\n /** Last updated timestamp */\n updatedAt: number\n}\n\n/**\n * Privacy preset configurations\n */\nexport interface PrivacyPreset {\n /** Preset name */\n name: string\n /** Privacy mode */\n mode: PrivacyMode\n /** Metric visibility settings */\n metricVisibility: MetricVisibility\n /** Auto-grant to clients */\n autoGrantClients: boolean\n}\n\n/**\n * Built-in privacy presets\n */\nexport const PrivacyPresets: Record<string, PrivacyPreset> = {\n CONSERVATIVE: {\n name: 'Conservative',\n mode: PrivacyMode.TierOnly,\n metricVisibility: {\n showScore: VisibilityLevel.Private,\n showJobsCompleted: VisibilityLevel.Private,\n showSuccessRate: VisibilityLevel.Private,\n showResponseTime: VisibilityLevel.Private,\n showDisputes: VisibilityLevel.Private,\n showEarnings: VisibilityLevel.Private,\n showRatings: VisibilityLevel.Private,\n showBadges: VisibilityLevel.Public,\n },\n autoGrantClients: false,\n },\n BALANCED: {\n name: 'Balanced',\n mode: PrivacyMode.Custom,\n metricVisibility: {\n showScore: VisibilityLevel.Private,\n showJobsCompleted: VisibilityLevel.Public,\n showSuccessRate: VisibilityLevel.Public,\n showResponseTime: VisibilityLevel.Public,\n showDisputes: VisibilityLevel.Private,\n showEarnings: VisibilityLevel.Private,\n showRatings: VisibilityLevel.Public,\n showBadges: VisibilityLevel.Public,\n },\n autoGrantClients: true,\n },\n OPEN: {\n name: 'Open',\n mode: PrivacyMode.Public,\n metricVisibility: {\n showScore: VisibilityLevel.Public,\n showJobsCompleted: VisibilityLevel.Public,\n showSuccessRate: VisibilityLevel.Public,\n showResponseTime: VisibilityLevel.Public,\n showDisputes: VisibilityLevel.Public,\n showEarnings: VisibilityLevel.Public,\n showRatings: VisibilityLevel.Public,\n showBadges: VisibilityLevel.Public,\n },\n autoGrantClients: true,\n },\n}\n\n/**\n * Visible reputation data (filtered by privacy settings)\n *\n * This is the client-side type returned when fetching reputation\n * with privacy filters applied.\n */\nexport interface VisibleReputation {\n /** Agent public key */\n agent: Address\n /** Privacy mode applied */\n privacyMode: PrivacyMode\n /** Exact score (only if visible) */\n exactScore?: number\n /** Reputation tier (always visible in TierOnly mode) */\n tier?: ReputationTier\n /** Score range (visible in RangeOnly mode) */\n scoreRange?: ScoreRange\n /** Total jobs completed (if visible) */\n totalJobsCompleted?: number\n /** Success rate percentage (if visible) */\n successRate?: number\n /** Average response time in ms (if visible) */\n avgResponseTime?: number\n /** Dispute statistics (if visible) */\n disputes?: {\n total: number\n resolved: number\n }\n /** Total earnings (if visible) */\n totalEarnings?: number\n /** Average rating (if visible) */\n avgRating?: number\n /** Badges earned (if visible) */\n badges?: string[]\n /** Whether viewer has full access */\n hasFullAccess: boolean\n}\n\n/**\n * Parameters for initializing privacy settings\n */\nexport interface InitializePrivacyParams {\n /** Agent address to enable privacy for */\n agentAddress: Address\n /** Initial privacy mode */\n mode?: PrivacyMode\n /** Metric visibility settings */\n metricVisibility?: MetricVisibility\n}\n\n/**\n * Parameters for updating privacy mode\n */\nexport interface UpdatePrivacyModeParams {\n /** Agent address */\n agentAddress: Address\n /** New privacy mode */\n mode: PrivacyMode\n}\n\n/**\n * Parameters for setting metric visibility\n */\nexport interface SetMetricVisibilityParams {\n /** Agent address */\n agentAddress: Address\n /** Metric visibility settings */\n metricVisibility: MetricVisibility\n}\n\n/**\n * Parameters for granting viewer access\n */\nexport interface GrantAccessParams {\n /** Agent address */\n agentAddress: Address\n /** Viewer address to grant access */\n viewer: Address\n}\n\n/**\n * Parameters for revoking viewer access\n */\nexport interface RevokeAccessParams {\n /** Agent address */\n agentAddress: Address\n /** Viewer address to revoke access */\n viewer: Address\n}\n\n/**\n * Parameters for applying a privacy preset\n */\nexport interface ApplyPresetParams {\n /** Agent address */\n agentAddress: Address\n /** Preset to apply */\n preset: PrivacyPreset\n}\n\n/**\n * Privacy constants\n */\nexport const PRIVACY_CONSTANTS = {\n /** Score range thresholds */\n SCORE_RANGES: {\n VERY_LOW: { min: 0, max: 2000 },\n LOW: { min: 2000, max: 5000 },\n MEDIUM: { min: 5000, max: 7500 },\n HIGH: { min: 7500, max: 9000 },\n VERY_HIGH: { min: 9000, max: 10000 },\n },\n /** Tier thresholds */\n TIER_THRESHOLDS: {\n BRONZE: 2000,\n SILVER: 5000,\n GOLD: 7500,\n PLATINUM: 9000,\n },\n /** Maximum authorized viewers */\n MAX_AUTHORIZED_VIEWERS: 100,\n}\n","// Core types for GhostSpeak Protocol\nimport type { Address } from '@solana/addresses'\nimport type { Agent } from '../generated/index.js'\nimport type { IPFSConfig } from './ipfs-types.js'\nimport type { \n Rpc,\n RpcSubscriptions,\n GetLatestBlockhashApi,\n SendTransactionApi,\n GetAccountInfoApi,\n SimulateTransactionApi,\n GetFeeForMessageApi,\n GetProgramAccountsApi,\n GetEpochInfoApi,\n GetSignatureStatusesApi,\n SignatureNotificationsApi,\n SlotNotificationsApi,\n GetMultipleAccountsApi\n} from '@solana/kit'\n\n// Import generated types and re-export for convenience\nexport * from '../generated/index.js'\n\n// Export IPFS types\nexport * from './ipfs-types.js'\n\n// Export RPC client types\nexport * from './rpc-client-types.js'\n\n// Token-2022 types removed - not aligned with pivot\n\n\n// Export reputation tags types (selective export to avoid conflicts with generated types)\nexport type {\n TagCriteria,\n TagEvaluation,\n TagFilters,\n TagUpdateRequest,\n BulkTagUpdateRequest,\n TagQueryResult,\n TagDecayConfig,\n ReputationMetrics as ClientReputationMetrics // Alias to avoid conflict\n} from './reputation-tags.js'\nexport {\n TagCategory,\n SkillTag,\n BehaviorTag,\n ComplianceTag,\n TAG_CONSTANTS,\n TagConfidenceLevel,\n DEFAULT_TAG_DECAY\n} from './reputation-tags.js'\n\n// Export privacy types (selective export to avoid conflicts with generated types)\nexport type {\n PrivacyMode,\n VisibilityLevel,\n MetricVisibility,\n PrivacySettings,\n PrivacyPreset,\n ScoreRange,\n VisibleReputation\n} from './privacy-types.js'\nexport { PrivacyPresets, ReputationTier as PrivacyReputationTier } from './privacy-types.js'\n\n// Export core types (selective export to avoid conflicts with generated types)\nexport {\n // Core types\n type Result,\n type Transaction,\n type SimulationResult,\n \n // Communication types (A2A only - H2A deprecated)\n ParticipantType,\n type CommunicationSession,\n type CommunicationMessage,\n type ParticipantStatus,\n type CreateCommunicationSessionParams,\n type SendCommunicationMessageParams,\n type UpdateParticipantStatusParams,\n \n // Error types\n type SDKError,\n ErrorCode,\n \n // Builder types\n type AgentCreationParams,\n type EscrowCreationParams,\n type ChannelCreationParams,\n \n // Utility types\n type PaginationOptions,\n type FilterOptions,\n type QueryResult,\n type Event,\n type AgentEvent,\n type EscrowEvent,\n type ChannelEvent,\n \n // Type guards and utilities\n isSuccess,\n isError,\n unwrap,\n type DeepPartial,\n type AddressOf,\n type WithAddress\n} from '../core/types.js'\n\n// Modern RPC API types using 2025 Web3.js v2 patterns\nexport type RpcApi = Rpc<\n GetLatestBlockhashApi &\n SendTransactionApi &\n GetAccountInfoApi &\n SimulateTransactionApi &\n GetFeeForMessageApi &\n GetProgramAccountsApi\n>\n\n// Add missing API types for full RPC support\nexport type ExtendedRpcApi = RpcApi & Rpc<GetEpochInfoApi & GetSignatureStatusesApi & GetMultipleAccountsApi>\n\n// RPC Subscription types\nexport type RpcSubscriptionApi = RpcSubscriptions<SignatureNotificationsApi & SlotNotificationsApi>\n\nexport type Commitment = 'processed' | 'confirmed' | 'finalized'\n\n// Program ID - import from generated\nexport { GHOSTSPEAK_MARKETPLACE_PROGRAM_ADDRESS as GHOSTSPEAK_PROGRAM_ID } from '../generated/programs/index.js'\n\n// Configuration types\nexport interface GhostSpeakConfig {\n programId?: Address\n rpc: ExtendedRpcApi\n rpcSubscriptions?: RpcSubscriptionApi\n commitment?: Commitment\n transactionTimeout?: number\n defaultFeePayer?: Address\n retryConfig?: RetryConfig\n cluster?: 'mainnet-beta' | 'devnet' | 'testnet' | 'localnet'\n rpcEndpoint?: string\n wsEndpoint?: string\n /** Optional logger for debug output */\n logger?: { info: (...args: unknown[]) => void; error: (...args: unknown[]) => void }\n /** Cache configuration for RPC result caching */\n cache?: import('../core/CacheManager.js').CacheConfig\n /** Token 2022 configuration options */\n token2022?: Token2022Config\n /** IPFS configuration for large content storage */\n ipfsConfig?: IPFSConfig\n /** Credential configuration for Crossmint sync */\n credentials?: CredentialConfig\n}\n\nexport interface CredentialConfig {\n crossmintApiKey?: string\n crossmintEnvironment?: 'staging' | 'production'\n crossmintChain?: 'base-sepolia' | 'polygon-amoy' | 'base' | 'polygon'\n templates?: {\n agentIdentity?: string\n reputation?: string\n jobCompletion?: string\n }\n}\n\nexport interface Token2022Config {\n /** Enable Token 2022 features by default */\n enabled?: boolean\n /** Default behavior for transfer fees */\n defaultExpectTransferFees?: boolean\n /** Maximum transfer fee slippage (basis points) */\n maxFeeSlippageBasisPoints?: number\n /** Enable confidential transfers by default */\n enableConfidentialTransfers?: boolean\n /** Default Token 2022 program address (for custom deployments) */\n programAddress?: Address\n /** Cache token program detection results for this many seconds */\n tokenProgramCacheTtl?: number\n}\n\nexport interface RetryConfig {\n maxRetries?: number\n baseDelay?: number\n maxDelay?: number\n backoffMultiplier?: number\n retryableErrors?: string[]\n}\n\n// Agent types\nexport interface AgentWithAddress {\n address: Address\n data: Agent\n}\n\n// Service listing types removed\n\nexport interface AgentRegistrationData {\n agentId: string\n name: string\n description: string\n metadataUri: string\n agentType: number\n}\n\nexport interface AgentAccount {\n owner: Address\n name: string\n description: string\n capabilities: string[]\n metadataUri: string\n serviceEndpoint: string\n isActive: boolean\n registeredAt: bigint\n reputation: number\n totalEarnings: bigint\n totalJobs: number\n successRate: number\n bump: number\n}\n\n// Marketplace and Job Posting types removed (x402 focus)\n\n// Escrow types\nexport interface EscrowAccount {\n buyer: Address\n seller: Address\n agent: Address\n amount: bigint\n currency: Address\n status: EscrowStatus\n createdAt: bigint\n completedAt?: bigint\n}\n\nexport enum EscrowStatus {\n Active = 'Active',\n Completed = 'Completed',\n Disputed = 'Disputed',\n Cancelled = 'Cancelled'\n}\n\n// A2A Protocol types\nexport interface A2ASession {\n sessionId: bigint\n initiator: Address\n responder: Address\n sessionType: string\n metadata: string\n isActive: boolean\n createdAt: bigint\n expiresAt: bigint\n}\n\nexport interface A2AMessage {\n messageId: bigint\n session: Address\n sender: Address\n content: string\n messageType: string\n sentAt: bigint\n}\n\n// Pricing models\nexport enum PricingModel {\n Fixed = 'Fixed',\n Hourly = 'Hourly',\n PerTask = 'PerTask',\n Subscription = 'Subscription',\n Auction = 'Auction'\n}\n\n// Error types\nexport class GhostSpeakError extends Error {\n constructor(message: string, public code?: string) {\n super(message)\n this.name = 'GhostSpeakError'\n }\n}\n\n// Instruction parameters types\nexport interface RegisterAgentParams {\n agentData: AgentRegistrationData\n}\n\n// Marketplace instruction params removed\n\nexport interface CreateEscrowParams {\n seller: Address\n agent: Address\n amount: bigint\n currency: Address\n}\n\nexport interface CreateA2ASessionParams {\n responder: Address\n sessionType: string\n metadata: string\n expiresAt: bigint\n}\n\nexport interface SendA2AMessageParams {\n session: Address\n content: string\n messageType: string\n}\n\n// RPC Response Types (to replace 'any' usage)\nexport interface RpcResponse<T> {\n value: T | null\n}\n\nexport interface RpcAccountInfo {\n executable: boolean\n lamports: bigint\n owner: Address\n rentEpoch: bigint\n space: bigint\n data: string | Uint8Array\n}\n\nexport interface RpcProgramAccount {\n pubkey: Address\n account: RpcAccountInfo\n}\n\nexport interface RpcProgramAccountsResponse {\n value: RpcProgramAccount[] | null\n}\n\nexport interface RpcAccountInfoResponse {\n value: RpcAccountInfo | null\n}\n\nexport interface RpcMultipleAccountsResponse {\n value: (RpcAccountInfo | null)[]\n}\n\n// Transaction Builder Response Types\nexport interface TransactionResponse {\n signature: string\n confirmationStatus?: Commitment\n err?: unknown | null\n}\n\nexport interface SimulatedTransactionResponse {\n value: {\n err?: unknown | null\n logs?: string[]\n unitsConsumed?: number\n }\n}\n\n// Modern RPC Client Interface (replacement for 'any' rpc parameter)\nexport interface SolanaRpcClient {\n getAccountInfo(\n address: Address, \n options?: { commitment?: Commitment; encoding?: string }\n ): Promise<RpcAccountInfoResponse>\n \n getMultipleAccounts(\n addresses: Address[], \n options?: { commitment?: Commitment; encoding?: string }\n ): Promise<RpcMultipleAccountsResponse>\n \n getProgramAccounts(\n programId: Address,\n options?: {\n commitment?: Commitment\n encoding?: string\n filters?: unknown[]\n }\n ): Promise<RpcProgramAccountsResponse>\n \n sendTransaction(\n transaction: unknown,\n options?: { commitment?: Commitment }\n ): Promise<TransactionResponse>\n \n simulateTransaction(\n transaction: unknown,\n options?: { commitment?: Commitment }\n ): Promise<SimulatedTransactionResponse>\n}\n\n// Emergency Configuration Interface for Governance\nexport interface EmergencyConfig {\n emergencyDelay?: bigint\n emergencyThreshold?: number\n emergencySigners?: Address[]\n canEmergencyPause?: boolean\n emergencyContact?: string\n}\n\n// IPFS Message Content Types\nexport interface IPFSReference {\n type: 'ipfs_reference'\n ipfsUri: string\n ipfsHash: string\n originalSize: number\n contentPreview: string\n uploadedAt: number\n}\n\n// Type guard for IPFS reference\nexport function isIPFSReference(data: unknown): data is IPFSReference {\n if (typeof data !== 'object' || data === null) return false\n const obj = data as Record<string, unknown>\n return (\n obj.type === 'ipfs_reference' &&\n typeof obj.ipfsUri === 'string' &&\n typeof obj.ipfsHash === 'string' &&\n typeof obj.originalSize === 'number' &&\n typeof obj.contentPreview === 'string' &&\n typeof obj.uploadedAt === 'number'\n )\n}\n\n// Message metadata type\nexport interface MessageMetadata {\n ipfsHash: string\n originalSize: number\n contentPreview: string\n uploadedAt: number\n}\n\n// Resolved message content type\nexport interface ResolvedMessageContent {\n resolvedContent: string\n isIPFS: boolean\n metadata?: MessageMetadata\n}\n\n// IPFS Upload Response\nexport interface IPFSUploadResponse {\n IpfsHash: string\n PinSize?: number\n Timestamp?: string\n}\n\n// Type guard for IPFS upload response\nexport function isIPFSUploadResponse(data: unknown): data is IPFSUploadResponse {\n if (typeof data !== 'object' || data === null) return false\n const obj = data as Record<string, unknown>\n return typeof obj.IpfsHash === 'string'\n}\n\n// Attachment upload result type\nexport interface AttachmentUploadResult {\n filename: string\n contentType: string\n ipfsHash: string\n ipfsUri: string\n size: number\n}\n// API types\nexport * from './api-types.js'\n","/**\n * API Response Types for GhostSpeak Public API\n *\n * These types match the REST API responses from packages/api\n */\n\nexport interface ApiGhost {\n address: string;\n owner: string | null;\n status: string;\n firstTxSignature: string;\n firstSeenTimestamp: number;\n discoverySource: string;\n claimedAt: number | null;\n agentId: string;\n name: string;\n description: string;\n metadataUri: string;\n serviceEndpoint: string;\n externalIdentifiers: Array<{\n platform: string;\n externalId: string;\n verified: boolean;\n verifiedAt: number;\n }>;\n ghostScore: number;\n reputationScore: number;\n reputationComponents: Array<{\n source: string;\n score: number;\n weight: number;\n lastUpdated: number;\n }>;\n didAddress: string | null;\n credentials: string[];\n isActive: boolean;\n isVerified: boolean;\n verificationTimestamp: number;\n createdAt: number;\n updatedAt: number;\n}\n\nexport interface ApiGhostScore {\n address: string;\n score: number;\n maxScore: number;\n components: Array<{\n source: string;\n score: number;\n weight: number;\n lastUpdated: number;\n }>;\n lastUpdated: number;\n}\n\nexport interface ApiExternalIdLookup {\n mapping: {\n platform: string;\n externalId: string;\n ghostAddress: string;\n verified: boolean;\n verifiedAt: number | null;\n createdAt: number;\n };\n ghost: ApiGhost | null;\n}\n\n/**\n * API-specific Error Classes\n */\nexport class GhostNotFoundError extends Error {\n constructor(address: string) {\n super(`Ghost not found: ${address}`);\n this.name = 'GhostNotFoundError';\n }\n}\n\nexport class ExternalIdNotFoundError extends Error {\n constructor(public platform: string, public externalId: string) {\n super(`No Ghost found for ${platform}:${externalId}`);\n this.name = 'ExternalIdNotFoundError';\n }\n}\n","/**\n * This file is auto-generated by scripts/generate-mappings.ts\n * Do not edit this file manually.\n */\n\nexport interface AccountInfo {\n name: string;\n writable: boolean;\n signer: boolean;\n optional: boolean;\n docs: string[];\n address?: string;\n pda?: {\n seeds: unknown[];\n };\n}\n\nexport interface ExpectedAccount {\n name: string;\n pda: boolean;\n}\n\nexport interface InstructionMapping {\n name: string;\n expectedAccounts: ExpectedAccount[];\n accounts: AccountInfo[];\n docs?: string;\n discriminator: number[];\n args: unknown[];\n}\n\nexport const instructionAccountMappings: Record<string, InstructionMapping> = {\n \"activate_agent\": {\n \"name\": \"activate_agent\",\n \"expectedAccounts\": [\n {\n \"name\": \"agent_account\",\n \"pda\": true\n },\n {\n \"name\": \"signer\",\n \"pda\": false\n },\n {\n \"name\": \"clock\",\n \"pda\": false\n }\n ],\n \"accounts\": [\n {\n \"name\": \"agent_account\",\n \"writable\": true,\n \"signer\": false,\n \"optional\": false,\n \"docs\": [\n \"Agent account with canonical PDA validation\"\n ],\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 97,\n 103,\n 101,\n 110,\n 116\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"signer\"\n },\n {\n \"kind\": \"arg\",\n \"path\": \"agent_id\"\n }\n ]\n }\n },\n {\n \"name\": \"signer\",\n \"writable\": true,\n \"signer\": true,\n \"optional\": false,\n \"docs\": [\n \"Enhanced authority verification\"\n ]\n },\n {\n \"name\": \"clock\",\n \"writable\": false,\n \"signer\": false,\n \"optional\": false,\n \"docs\": [\n \"Clock sysvar for rate limiting\"\n ],\n \"address\": \"SysvarC1ock11111111111111111111111111111111\"\n }\n ],\n \"docs\": \"\",\n \"discriminator\": [\n 252,\n 139,\n 87,\n 21,\n 195,\n 152,\n 29,\n 217\n ],\n \"args\": [\n {\n \"name\": \"agent_id\",\n \"type\": \"string\"\n }\n ]\n },\n \"approve_delivery\": {\n \"name\": \"approve_delivery\",\n \"expectedAccounts\": [\n {\n \"name\": \"escrow\",\n \"pda\": true\n },\n {\n \"name\": \"escrow_vault\",\n \"pda\": false\n },\n {\n \"name\": \"agent_token_account\",\n \"pda\": false\n },\n {\n \"name\": \"client\",\n \"pda\": false\n },\n {\n \"name\": \"token_program\",\n \"pda\": false\n }\n ],\n \"accounts\": [\n {\n \"name\": \"escrow\",\n \"writable\": true,\n \"signer\": false,\n \"optional\": false,\n \"docs\": [],\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 103,\n 104,\n 111,\n 115,\n 116,\n 95,\n 112,\n 114,\n 111,\n 116,\n 101,\n 99,\n 116\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"escrow.client\",\n \"account\": \"GhostProtectEscrow\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"escrow.escrow_id\",\n \"account\": \"GhostProtectEscrow\"\n }\n ]\n }\n },\n {\n \"name\": \"escrow_vault\",\n \"writable\": true,\n \"signer\": false,\n \"optional\": false,\n \"docs\": []\n },\n {\n \"name\": \"agent_token_account\",\n \"writable\": true,\n \"signer\": false,\n \"optional\": false,\n \"docs\": []\n },\n {\n \"name\": \"client\",\n \"writable\": false,\n \"signer\": true,\n \"optional\": false,\n \"docs\": []\n },\n {\n \"name\": \"token_program\",\n \"writable\": false,\n \"signer\": false,\n \"optional\": false,\n \"docs\": [],\n \"address\": \"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\"\n }\n ],\n \"docs\": \"Client approves delivery and releases payment\",\n \"discriminator\": [\n 28,\n 233,\n 51,\n 115,\n 33,\n 220,\n 41,\n 28\n ],\n \"args\": []\n },\n \"arbitrate_dispute\": {\n \"name\": \"arbitrate_dispute\",\n \"expectedAccounts\": [\n {\n \"name\": \"escrow\",\n \"pda\": true\n },\n {\n \"name\": \"escrow_vault\",\n \"pda\": false\n },\n {\n \"name\": \"agent_token_account\",\n \"pda\": false\n },\n {\n \"name\": \"client_token_account\",\n \"pda\": false\n },\n {\n \"name\": \"agent_staking\",\n \"pda\": true\n },\n {\n \"name\": \"arbitrator\",\n \"pda\": false\n },\n {\n \"name\": \"token_program\",\n \"pda\": false\n }\n ],\n \"accounts\": [\n {\n \"name\": \"escrow\",\n \"writable\": true,\n \"signer\": false,\n \"optional\": false,\n \"docs\": [],\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 103,\n 104,\n 111,\n 115,\n 116,\n 95,\n 112,\n 114,\n 111,\n 116,\n 101,\n 99,\n 116\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"escrow.client\",\n \"account\": \"GhostProtectEscrow\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"escrow.escrow_id\",\n \"account\": \"GhostProtectEscrow\"\n }\n ]\n }\n },\n {\n \"name\": \"escrow_vault\",\n \"writable\": true,\n \"signer\": false,\n \"optional\": false,\n \"docs\": []\n },\n {\n \"name\": \"agent_token_account\",\n \"writable\": true,\n \"signer\": false,\n \"optional\": false,\n \"docs\": []\n },\n {\n \"name\": \"client_token_account\",\n \"writable\": true,\n \"signer\": false,\n \"optional\": false,\n \"docs\": []\n },\n {\n \"name\": \"agent_staking\",\n \"writable\": true,\n \"signer\": false,\n \"optional\": false,\n \"docs\": [\n \"Agent's staking account (for potential slashing)\"\n ],\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 115,\n 116,\n 97,\n 107,\n 105,\n 110,\n 103\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"escrow.agent\",\n \"account\": \"GhostProtectEscrow\"\n }\n ]\n }\n },\n {\n \"name\": \"arbitrator\",\n \"writable\": false,\n \"signer\": true,\n \"optional\": false,\n \"docs\": []\n },\n {\n \"name\": \"token_program\",\n \"writable\": false,\n \"signer\": false,\n \"optional\": false,\n \"docs\": [],\n \"address\": \"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\"\n }\n ],\n \"docs\": \"Arbitrator resolves dispute (admin only)\",\n \"discriminator\": [\n 225,\n 89,\n 166,\n 101,\n 215,\n 40,\n 191,\n 4\n ],\n \"args\": [\n {\n \"name\": \"decision\",\n \"type\": {\n \"defined\": {\n \"name\": \"ArbitratorDecision\"\n }\n }\n }\n ]\n },\n \"auto_create_ghost\": {\n \"name\": \"auto_create_ghost\",\n \"expectedAccounts\": [\n {\n \"name\": \"agent_account\",\n \"pda\": true\n },\n {\n \"name\": \"authority\",\n \"pda\": false\n },\n {\n \"name\": \"system_program\",\n \"pda\": false\n }\n ],\n \"accounts\": [\n {\n \"name\": \"agent_account\",\n \"writable\": true,\n \"signer\": false,\n \"optional\": false,\n \"docs\": [],\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 97,\n 103,\n 101,\n 110,\n 116\n ]\n },\n {\n \"kind\": \"arg\",\n \"path\": \"payment_address\"\n }\n ]\n }\n },\n {\n \"name\": \"authority\",\n \"writable\": true,\n \"signer\": true,\n \"optional\": false,\n \"docs\": []\n },\n {\n \"name\": \"system_program\",\n \"writable\": false,\n \"signer\": false,\n \"optional\": false,\n \"docs\": [],\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"docs\": \"Auto-create a Ghost from discovered x402 transaction (indexer service only) Used by the off-chain indexer service when it discovers a new agent via x402 payment transactions. Creates an Unregistered Ghost. Parameters: - payment_address: The x402_payment_address (merchant address) of the discovered agent - first_tx_signature: Transaction signature where this agent was first discovered - discovery_source: Source identifier (e.g., \\\"http:payai\\\", \\\"blockchain:direct\\\") - initial_ghost_score: Optional initial Ghost Score from backfill metrics\",\n \"discriminator\": [\n 50,\n 170,\n 232,\n 73,\n 238,\n 200,\n 180,\n 16\n ],\n \"args\": [\n {\n \"name\": \"payment_address\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"first_tx_signature\",\n \"type\": \"string\"\n },\n {\n \"name\": \"discovery_source\",\n \"type\": \"string\"\n },\n {\n \"name\": \"initial_ghost_score\",\n \"type\": {\n \"option\": \"u64\"\n }\n }\n ]\n },\n \"claim_ghost\": {\n \"name\": \"claim_ghost\",\n \"expectedAccounts\": [\n {\n \"name\": \"agent_account\",\n \"pda\": false\n },\n {\n \"name\": \"did_document\",\n \"pda\": true\n },\n {\n \"name\": \"sas_attestation\",\n \"pda\": false\n },\n {\n \"name\": \"claimer\",\n \"pda\": false\n },\n {\n \"name\": \"system_program\",\n \"pda\": false\n }\n ],\n \"accounts\": [\n {\n \"name\": \"agent_account\",\n \"writable\": true,\n \"signer\": false,\n \"optional\": false,\n \"docs\": []\n },\n {\n \"name\": \"did_document\",\n \"writable\": true,\n \"signer\": false,\n \"optional\": false,\n \"docs\": [\n \"DID document to create for this Ghost\",\n \"Seeds: [b\\\"did_document\\\", agent_account.x402_payment_address.as_ref()]\"\n ],\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 100,\n 105,\n 100,\n 95,\n 100,\n 111,\n 99,\n 117,\n 109,\n 101,\n 110,\n 116\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"agent_account.x402_payment_address\",\n \"account\": \"Agent\"\n }\n ]\n }\n },\n {\n \"name\": \"sas_attestation\",\n \"writable\": false,\n \"signer\": false,\n \"optional\": false,\n \"docs\": [\n \"SAS Attestation proving ownership of x402_payment_address\",\n \"PDA: [b\\\"attestation\\\", sas_credential, sas_schema, x402_payment_address]\"\n ]\n },\n {\n \"name\": \"claimer\",\n \"writable\": true,\n \"signer\": true,\n \"optional\": false,\n \"docs\": [\n \"The claimer must have created a SAS attestation proving they own x402_payment_address\"\n ]\n },\n {\n \"name\": \"system_program\",\n \"writable\": false,\n \"signer\": false,\n \"optional\": false,\n \"docs\": [],\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"docs\": \"Claim ownership of a Ghost using Solana Attestation Service (SAS) Security: Uses SAS for trustless ownership verification. The claimer must have created a SAS attestation proving they own the x402_payment_address. Auto-creates: DID document with did:sol:<network>:<address> format Transitions: Unregistered/Registered → Claimed SAS Attestation Requirements: - Credential: GhostSpeak ownership credential (issuer) - Schema: Ghost ownership schema defining attestation data structure - Nonce: x402_payment_address (ensures PDA uniqueness) - Data: Contains x402_payment_address as proof of ownership Parameters: - sas_credential: Pubkey of the SAS Credential (issuer) for ownership attestations - sas_schema: Pubkey of the SAS Schema defining the ownership attestation format - ipfs_metadata_uri: Optional IPFS URI for agent metadata (ipfs://...) - network: Network identifier (\\\"devnet\\\", \\\"mainnet-beta\\\", \\\"testnet\\\")\",\n \"discriminator\": [\n 149,\n 107,\n 35,\n 233,\n 252,\n 101,\n 148,\n 225\n ],\n \"args\": [\n {\n \"name\": \"sas_credential\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"sas_schema\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"ipfs_metadata_uri\",\n \"type\": {\n \"option\": \"string\"\n }\n },\n {\n \"name\": \"network\",\n \"type\": \"string\"\n }\n ]\n },\n \"create_agent_authorization\": {\n \"name\": \"create_agent_authorization\",\n \"expectedAccounts\": [\n {\n \"name\": \"agent\",\n \"pda\": false\n },\n {\n \"name\": \"authorization\",\n \"pda\": true\n },\n {\n \"name\": \"authority\",\n \"pda\": false\n },\n {\n \"name\": \"system_program\",\n \"pda\": false\n }\n ],\n \"accounts\": [\n {\n \"name\": \"agent\",\n \"writable\": false,\n \"signer\": false,\n \"optional\": false,\n \"docs\": [\n \"Agent granting authorization\"\n ]\n },\n {\n \"name\": \"authorization\",\n \"writable\": true,\n \"signer\": false,\n \"optional\": false,\n \"docs\": [\n \"Authorization account (PDA)\"\n ],\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 97,\n 103,\n 101,\n 110,\n 116,\n 95,\n 97,\n 117,\n 116,\n 104\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"agent\"\n },\n {\n \"kind\": \"arg\",\n \"path\": \"authorized_source\"\n },\n {\n \"kind\": \"arg\",\n \"path\": \"nonce\"\n }\n ]\n }\n },\n {\n \"name\": \"authority\",\n \"writable\": true,\n \"signer\": true,\n \"optional\": false,\n \"docs\": [\n \"Authority (agent owner)\"\n ]\n },\n {\n \"name\": \"system_program\",\n \"writable\": false,\n \"signer\": false,\n \"optional\": false,\n \"docs\": [\n \"System program\"\n ],\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"docs\": \"Create agent authorization for reputation updates Allows an agent to pre-authorize a facilitator (e.g., PayAI) to update their reputation a limited number of times before expiration. Parameters: - authorized_source: Pubkey of the facilitator being authorized - index_limit: Maximum number of updates allowed - expires_at: Unix timestamp when authorization expires - network: Network ID for cross-chain compatibility - signature: Ed25519 signature proving agent's consent - nonce: Optional nonce for multiple authorizations to same facilitator\",\n \"discriminator\": [\n 48,\n 219,\n 232,\n 202,\n 151,\n 97,\n 230,\n 20\n ],\n \"args\": [\n {\n \"name\": \"authorized_source\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"index_limit\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"expires_at\",\n \"type\": \"i64\"\n },\n {\n \"name\": \"network\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"signature\",\n \"type\": {\n \"array\": [\n \"u8\",\n 64\n ]\n }\n },\n {\n \"name\": \"nonce\",\n \"type\": {\n \"option\": \"string\"\n }\n }\n ]\n },\n \"create_credential_template\": {\n \"name\": \"create_credential_template\",\n \"expectedAccounts\": [\n {\n \"name\": \"credential_template\",\n \"pda\": true\n },\n {\n \"name\": \"credential_type\",\n \"pda\": false\n },\n {\n \"name\": \"issuer\",\n \"pda\": false\n },\n {\n \"name\": \"system_program\",\n \"pda\": false\n }\n ],\n \"accounts\": [\n {\n \"name\": \"credential_template\",\n \"writable\": true,\n \"signer\": false,\n \"optional\": false,\n \"docs\": [],\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 99,\n 114,\n 101,\n 100,\n 101,\n 110,\n 116,\n 105,\n 97,\n 108,\n 95,\n 116,\n 101,\n 109,\n 112,\n 108,\n 97,\n 116,\n 101\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"credential_type\"\n },\n {\n \"kind\": \"arg\",\n \"path\": \"name\"\n }\n ]\n }\n },\n {\n \"name\": \"credential_type\",\n \"writable\": false,\n \"signer\": false,\n \"optional\": false,\n \"docs\": []\n },\n {\n \"name\": \"issuer\",\n \"writable\": true,\n \"signer\": true,\n \"optional\": false,\n \"docs\": []\n },\n {\n \"name\": \"system_program\",\n \"writable\": false,\n \"signer\": false,\n \"optional\": false,\n \"docs\": [],\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"docs\": \"Create a credential template from a credential type for issuing credentials\",\n \"discriminator\": [\n 183,\n 109,\n 12,\n 128,\n 134,\n 8,\n 139,\n 144\n ],\n \"args\": [\n {\n \"name\": \"name\",\n \"type\": \"string\"\n },\n {\n \"name\": \"image_uri\",\n \"type\": \"string\"\n },\n {\n \"name\": \"crossmint_template_id\",\n \"type\": {\n \"option\": \"string\"\n }\n }\n ]\n },\n \"create_credential_type\": {\n \"name\": \"create_credential_type\",\n \"expectedAccounts\": [\n {\n \"name\": \"credential_type\",\n \"pda\": true\n },\n {\n \"name\": \"authority\",\n \"pda\": false\n },\n {\n \"name\": \"system_program\",\n \"pda\": false\n }\n ],\n \"accounts\": [\n {\n \"name\": \"credential_type\",\n \"writable\": true,\n \"signer\": false,\n \"optional\": false,\n \"docs\": [],\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 99,\n 114,\n 101,\n 100,\n 101,\n 110,\n 116,\n 105,\n 97,\n 108,\n 95,\n 116,\n 121,\n 112,\n 101\n ]\n },\n {\n \"kind\": \"arg\",\n \"path\": \"name\"\n }\n ]\n }\n },\n {\n \"name\": \"authority\",\n \"writable\": true,\n \"signer\": true,\n \"optional\": false,\n \"docs\": []\n },\n {\n \"name\": \"system_program\",\n \"writable\": false,\n \"signer\": false,\n \"optional\": false,\n \"docs\": [],\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"docs\": \"Create a new credential type (e.g., AgentIdentity, Reputation, JobCompletion) This is an admin-only operation typically done by governance/multisig.\",\n \"discriminator\": [\n 211,\n 208,\n 67,\n 175,\n 20,\n 248,\n 8,\n 227\n ],\n \"args\": [\n {\n \"name\": \"name\",\n \"type\": \"string\"\n },\n {\n \"name\": \"kind\",\n \"type\": {\n \"defined\": {\n \"name\": \"CredentialKind\"\n }\n }\n },\n {\n \"name\": \"schema_uri\",\n \"type\": \"string\"\n },\n {\n \"name\": \"description\",\n \"type\": \"string\"\n }\n ]\n },\n \"create_did_document\": {\n \"name\": \"create_did_document\",\n \"expectedAccounts\": [\n {\n \"name\": \"did_document\",\n \"pda\": true\n },\n {\n \"name\": \"controller\",\n \"pda\": false\n },\n {\n \"name\": \"system_program\",\n \"pda\": false\n },\n {\n \"name\": \"clock\",\n \"pda\": false\n }\n ],\n \"accounts\": [\n {\n \"name\": \"did_document\",\n \"writable\": true,\n \"signer\": false,\n \"optional\": false,\n \"docs\": [\n \"DID document account with canonical PDA\"\n ],\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 100,\n 105,\n 100,\n 95,\n 100,\n 111,\n 99,\n 117,\n 109,\n 101,\n 110,\n 116\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"controller\"\n }\n ]\n }\n },\n {\n \"name\": \"controller\",\n \"writable\": true,\n \"signer\": true,\n \"optional\": false,\n \"docs\": [\n \"Controller of the DID (owner)\"\n ]\n },\n {\n \"name\": \"system_program\",\n \"writable\": false,\n \"signer\": false,\n \"optional\": false,\n \"docs\": [\n \"System program for account creation\"\n ],\n \"address\": \"11111111111111111111111111111111\"\n },\n {\n \"name\": \"clock\",\n \"writable\": false,\n \"signer\": false,\n \"optional\": false,\n \"docs\": [\n \"Clock sysvar for timestamp validation\"\n ],\n \"address\": \"SysvarC1ock11111111111111111111111111111111\"\n }\n ],\n \"docs\": \"Create a new DID document for an agent or user Initializes a W3C-compliant DID document following the did:sol method. The DID document can contain verification methods and service endpoints. Parameters: - did_string: The DID string (e.g., \\\"did:sol:devnet:HN7c...\\\") - verification_methods: Initial verification methods (max 10) - service_endpoints: Initial service endpoints (max 5)\",\n \"discriminator\": [\n 253,\n 40,\n 200,\n 239,\n 69,\n 147,\n 82,\n 182\n ],\n \"args\": [\n {\n \"name\": \"did_string\",\n \"type\": \"string\"\n },\n {\n \"name\": \"verification_methods\",\n \"type\": {\n \"vec\": {\n \"defined\": {\n \"name\": \"VerificationMethod\"\n }\n }\n }\n },\n {\n \"name\": \"service_endpoints\",\n \"type\": {\n \"vec\": {\n \"defined\": {\n \"name\": \"ServiceEndpoint\"\n }\n }\n }\n }\n ]\n },\n \"create_escrow\": {\n \"name\": \"create_escrow\",\n \"expectedAccounts\": [\n {\n \"name\": \"escrow\",\n \"pda\": true\n },\n {\n \"name\": \"agent\",\n \"pda\": false\n },\n {\n \"name\": \"client_token_account\",\n \"pda\": false\n },\n {\n \"name\": \"escrow_vault\",\n \"pda\": false\n },\n {\n \"name\": \"token_mint\",\n \"pda\": false\n },\n {\n \"name\": \"client\",\n \"pda\": false\n },\n {\n \"name\": \"token_program\",\n \"pda\": false\n },\n {\n \"name\": \"system_program\",\n \"pda\": false\n }\n ],\n \"accounts\": [\n {\n \"name\": \"escrow\",\n \"writable\": true,\n \"signer\": false,\n \"optional\": false,\n \"docs\": [],\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 103,\n 104,\n 111,\n 115,\n 116,\n 95,\n 112,\n 114,\n 111,\n 116,\n 101,\n 99,\n 116\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"client\"\n },\n {\n \"kind\": \"arg\",\n \"path\": \"escrow_id\"\n }\n ]\n }\n },\n {\n \"name\": \"agent\",\n \"writable\": false,\n \"signer\": false,\n \"optional\": false,\n \"docs\": []\n },\n {\n \"name\": \"client_token_account\",\n \"writable\": true,\n \"signer\": false,\n \"optional\": false,\n \"docs\": []\n },\n {\n \"name\": \"escrow_vault\",\n \"writable\": true,\n \"signer\": false,\n \"optional\": false,\n \"docs\": []\n },\n {\n \"name\": \"token_mint\",\n \"writable\": false,\n \"signer\": false,\n \"optional\": false,\n \"docs\": []\n },\n {\n \"name\": \"client\",\n \"writable\": true,\n \"signer\": true,\n \"optional\": false,\n \"docs\": []\n },\n {\n \"name\": \"token_program\",\n \"writable\": false,\n \"signer\": false,\n \"optional\": false,\n \"docs\": [],\n \"address\": \"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\"\n },\n {\n \"name\": \"system_program\",\n \"writable\": false,\n \"signer\": false,\n \"optional\": false,\n \"docs\": [],\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"docs\": \"Create a new escrow for agent service payment\",\n \"discriminator\": [\n 253,\n 215,\n 165,\n 116,\n 36,\n 108,\n 68,\n 80\n ],\n \"args\": [\n {\n \"name\": \"escrow_id\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"job_description\",\n \"type\": \"string\"\n },\n {\n \"name\": \"deadline\",\n \"type\": \"i64\"\n }\n ]\n },\n \"create_multisig\": {\n \"name\": \"create_multisig\",\n \"expectedAccounts\": [\n {\n \"name\": \"multisig\",\n \"pda\": true\n },\n {\n \"name\": \"owner\",\n \"pda\": false\n },\n {\n \"name\": \"system_program\",\n \"pda\": false\n }\n ],\n \"accounts\": [\n {\n \"name\": \"multisig\",\n \"writable\": true,\n \"signer\": false,\n \"optional\": false,\n \"docs\": [],\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 109,\n 117,\n 108,\n 116,\n 105,\n 115,\n 105,\n 103\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"owner\"\n },\n {\n \"kind\": \"arg\",\n \"path\": \"multisig_id\"\n }\n ]\n }\n },\n {\n \"name\": \"owner\",\n \"writable\": true,\n \"signer\": true,\n \"optional\": false,\n \"docs\": []\n },\n {\n \"name\": \"system_program\",\n \"writable\": false,\n \"signer\": false,\n \"optional\": false,\n \"docs\": [],\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"docs\": \"\",\n \"discriminator\": [\n 148,\n 146,\n 240,\n 10,\n 226,\n 215,\n 167,\n 174\n ],\n \"args\": [\n {\n \"name\": \"multisig_id\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"threshold\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"signers\",\n \"type\": {\n \"vec\": \"pubkey\"\n }\n },\n {\n \"name\": \"config\",\n \"type\": {\n \"defined\": {\n \"name\": \"MultisigConfig\"\n }\n }\n }\n ]\n },\n \"deactivate_agent\": {\n \"name\": \"deactivate_agent\",\n \"expectedAccounts\": [\n {\n \"name\": \"agent_account\",\n \"pda\": true\n },\n {\n \"name\": \"signer\",\n \"pda\": false\n },\n {\n \"name\": \"clock\",\n \"pda\": false\n }\n ],\n \"accounts\": [\n {\n \"name\": \"agent_account\",\n \"writable\": true,\n \"signer\": false,\n \"optional\": false,\n \"docs\": [\n \"Agent account with canonical PDA validation\"\n ],\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 97,\n 103,\n 101,\n 110,\n 116\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"signer\"\n },\n {\n \"kind\": \"arg\",\n \"path\": \"agent_id\"\n }\n ]\n }\n },\n {\n \"name\": \"signer\",\n \"writable\": true,\n \"signer\": true,\n \"optional\": false,\n \"docs\": [\n \"Enhanced authority verification\"\n ]\n },\n {\n \"name\": \"clock\",\n \"writable\": false,\n \"signer\": false,\n \"optional\": false,\n \"docs\": [\n \"Clock sysvar for rate limiting\"\n ],\n \"address\": \"SysvarC1ock11111111111111111111111111111111\"\n }\n ],\n \"docs\": \"\",\n \"discriminator\": [\n 205,\n 171,\n 239,\n 225,\n 82,\n 126,\n 96,\n 166\n ],\n \"args\": [\n {\n \"name\": \"agent_id\",\n \"type\": \"string\"\n }\n ]\n },\n \"deactivate_credential_template\": {\n \"name\": \"deactivate_credential_template\",\n \"expectedAccounts\": [\n {\n \"name\": \"credential_template\",\n \"pda\": false\n },\n {\n \"name\": \"issuer\",\n \"pda\": false\n }\n ],\n \"accounts\": [\n {\n \"name\": \"credential_template\",\n \"writable\": true,\n \"signer\": false,\n \"optional\": false,\n \"docs\": []\n },\n {\n \"name\": \"issuer\",\n \"writable\": true,\n \"signer\": true,\n \"optional\": false,\n \"docs\": []\n }\n ],\n \"docs\": \"Deactivate a credential template (no new credentials can be issued from it)\",\n \"discriminator\": [\n 177,\n 8,\n 195,\n 104,\n 56,\n 34,\n 84,\n 162\n ],\n \"args\": []\n },\n \"deactivate_credential_type\": {\n \"name\": \"deactivate_credential_type\",\n \"expectedAccounts\": [\n {\n \"name\": \"credential_type\",\n \"pda\": false\n },\n {\n \"name\": \"authority\",\n \"pda\": false\n }\n ],\n \"accounts\": [\n {\n \"name\": \"credential_type\",\n \"writable\": true,\n \"signer\": false,\n \"optional\": false,\n \"docs\": []\n },\n {\n \"name\": \"authority\",\n \"writable\": true,\n \"signer\": true,\n \"optional\": false,\n \"docs\": []\n }\n ],\n \"docs\": \"Deactivate a credential type (no new credentials can be issued)\",\n \"discriminator\": [\n 110,\n 174,\n 221,\n 244,\n 36,\n 206,\n 60,\n 237\n ],\n \"args\": []\n },\n \"deactivate_did_document\": {\n \"name\": \"deactivate_did_document\",\n \"expectedAccounts\": [\n {\n \"name\": \"did_document\",\n \"pda\": true\n },\n {\n \"name\": \"controller\",\n \"pda\": false\n },\n {\n \"name\": \"clock\",\n \"pda\": false\n }\n ],\n \"accounts\": [\n {\n \"name\": \"did_document\",\n \"writable\": true,\n \"signer\": false,\n \"optional\": false,\n \"docs\": [\n \"DID document account with canonical PDA validation\"\n ],\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 100,\n 105,\n 100,\n 95,\n 100,\n 111,\n 99,\n 117,\n 109,\n 101,\n 110,\n 116\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"controller\"\n }\n ]\n }\n },\n {\n \"name\": \"controller\",\n \"writable\": true,\n \"signer\": true,\n \"optional\": false,\n \"docs\": [\n \"Controller of the DID (must match document controller)\"\n ]\n },\n {\n \"name\": \"clock\",\n \"writable\": false,\n \"signer\": false,\n \"optional\": false,\n \"docs\": [\n \"Clock sysvar for timestamp validation\"\n ],\n \"address\": \"SysvarC1ock11111111111111111111111111111111\"\n }\n ],\n \"docs\": \"Deactivate a DID document Permanently deactivates the DID document. This operation is irreversible. Only the controller can deactivate their DID.\",\n \"discriminator\": [\n 77,\n 13,\n 56,\n 161,\n 67,\n 155,\n 206,\n 119\n ],\n \"args\": []\n },\n \"enable_protocol_fees\": {\n \"name\": \"enable_protocol_fees\",\n \"expectedAccounts\": [\n {\n \"name\": \"config\",\n \"pda\": true\n },\n {\n \"name\": \"authority\",\n \"pda\": false\n }\n ],\n \"accounts\": [\n {\n \"name\": \"config\",\n \"writable\": true,\n \"signer\": false,\n \"optional\": false,\n \"docs\": [],\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 112,\n 114,\n 111,\n 116,\n 111,\n 99,\n 111,\n 108,\n 95,\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n }\n ]\n }\n },\n {\n \"name\": \"authority\",\n \"writable\": false,\n \"signer\": true,\n \"optional\": false,\n \"docs\": []\n }\n ],\n \"docs\": \"Enable production fees (authority only) Activates the full fee structure for mainnet: - Escrow: 0.5% (80% Treasury, 20% Buyback) - Agent Registration: 0.01 SOL - Marketplace Listing: 0.001 SOL - Dispute Resolution: 1%\",\n \"discriminator\": [\n 9,\n 115,\n 79,\n 19,\n 158,\n 209,\n 221,\n 38\n ],\n \"args\": []\n },\n \"file_dispute\": {\n \"name\": \"file_dispute\",\n \"expectedAccounts\": [\n {\n \"name\": \"escrow\",\n \"pda\": true\n },\n {\n \"name\": \"client\",\n \"pda\": false\n }\n ],\n \"accounts\": [\n {\n \"name\": \"escrow\",\n \"writable\": true,\n \"signer\": false,\n \"optional\": false,\n \"docs\": [],\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 103,\n 104,\n 111,\n 115,\n 116,\n 95,\n 112,\n 114,\n 111,\n 116,\n 101,\n 99,\n 116\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"escrow.client\",\n \"account\": \"GhostProtectEscrow\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"escrow.escrow_id\",\n \"account\": \"GhostProtectEscrow\"\n }\n ]\n }\n },\n {\n \"name\": \"client\",\n \"writable\": false,\n \"signer\": true,\n \"optional\": false,\n \"docs\": []\n }\n ],\n \"docs\": \"Client files a dispute on escrow\",\n \"discriminator\": [\n 210,\n 63,\n 221,\n 114,\n 212,\n 97,\n 195,\n 156\n ],\n \"args\": [\n {\n \"name\": \"reason\",\n \"type\": \"string\"\n }\n ]\n },\n \"generate_compliance_report\": {\n \"name\": \"generate_compliance_report\",\n \"expectedAccounts\": [\n {\n \"name\": \"report\",\n \"pda\": true\n },\n {\n \"name\": \"audit_trail\",\n \"pda\": false\n },\n {\n \"name\": \"authority\",\n \"pda\": false\n },\n {\n \"name\": \"system_program\",\n \"pda\": false\n }\n ],\n \"accounts\": [\n {\n \"name\": \"report\",\n \"writable\": true,\n \"signer\": false,\n \"optional\": false,\n \"docs\": [],\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 99,\n 111,\n 109,\n 112,\n 108,\n 105,\n 97,\n 110,\n 99,\n 101,\n 95,\n 114,\n 101,\n 112,\n 111,\n 114,\n 116\n ]\n },\n {\n \"kind\": \"arg\",\n \"path\": \"report_id\"\n }\n ]\n }\n },\n {\n \"name\": \"audit_trail\",\n \"writable\": true,\n \"signer\": false,\n \"optional\": false,\n \"docs\": [\n \"Audit trail for the entity\"\n ]\n },\n {\n \"name\": \"authority\",\n \"writable\": true,\n \"signer\": true,\n \"optional\": false,\n \"docs\": []\n },\n {\n \"name\": \"system_program\",\n \"writable\": false,\n \"signer\": false,\n \"optional\": false,\n \"docs\": [],\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"docs\": \"\",\n \"discriminator\": [\n 213,\n 97,\n 79,\n 234,\n 22,\n 228,\n 14,\n 32\n ],\n \"args\": [\n {\n \"name\": \"report_id\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"report_type\",\n \"type\": {\n \"defined\": {\n \"name\": \"ReportType\"\n }\n }\n },\n {\n \"name\": \"date_range_start\",\n \"type\": \"i64\"\n },\n {\n \"name\": \"date_range_end\",\n \"type\": \"i64\"\n }\n ]\n },\n \"init_reentrancy_guard\": {\n \"name\": \"init_reentrancy_guard\",\n \"expectedAccounts\": [\n {\n \"name\": \"reentrancy_guard\",\n \"pda\": true\n },\n {\n \"name\": \"authority\",\n \"pda\": false\n },\n {\n \"name\": \"system_program\",\n \"pda\": false\n }\n ],\n \"accounts\": [\n {\n \"name\": \"reentrancy_guard\",\n \"writable\": true,\n \"signer\": false,\n \"optional\": false,\n \"docs\": [],\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 114,\n 101,\n 101,\n 110,\n 116,\n 114,\n 97,\n 110,\n 99,\n 121,\n 95,\n 103,\n 117,\n 97,\n 114,\n 100\n ]\n }\n ]\n }\n },\n {\n \"name\": \"authority\",\n \"writable\": true,\n \"signer\": true,\n \"optional\": false,\n \"docs\": []\n },\n {\n \"name\": \"system_program\",\n \"writable\": false,\n \"signer\": false,\n \"optional\": false,\n \"docs\": [],\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"docs\": \"Initialize the global reentrancy guard PDA This must be called once by a program admin before any reentrancy-protected instructions can be used\",\n \"discriminator\": [\n 156,\n 109,\n 115,\n 85,\n 12,\n 60,\n 245,\n 99\n ],\n \"args\": []\n },\n \"initialize_audit_trail\": {\n \"name\": \"initialize_audit_trail\",\n \"expectedAccounts\": [\n {\n \"name\": \"audit_trail\",\n \"pda\": true\n },\n {\n \"name\": \"entity\",\n \"pda\": false\n },\n {\n \"name\": \"authority\",\n \"pda\": false\n },\n {\n \"name\": \"system_program\",\n \"pda\": false\n }\n ],\n \"accounts\": [\n {\n \"name\": \"audit_trail\",\n \"writable\": true,\n \"signer\": false,\n \"optional\": false,\n \"docs\": [],\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 97,\n 117,\n 100,\n 105,\n 116,\n 95,\n 116,\n 114,\n 97,\n 105,\n 108\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"entity\"\n }\n ]\n }\n },\n {\n \"name\": \"entity\",\n \"writable\": false,\n \"signer\": false,\n \"optional\": false,\n \"docs\": [\n \"Entity being audited\"\n ]\n },\n {\n \"name\": \"authority\",\n \"writable\": true,\n \"signer\": true,\n \"optional\": false,\n \"docs\": []\n },\n {\n \"name\": \"system_program\",\n \"writable\": false,\n \"signer\": false,\n \"optional\": false,\n \"docs\": [],\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"docs\": \"\",\n \"discriminator\": [\n 145,\n 182,\n 236,\n 249,\n 212,\n 17,\n 175,\n 161\n ],\n \"args\": [\n {\n \"name\": \"entity_type\",\n \"type\": \"string\"\n },\n {\n \"name\": \"config\",\n \"type\": {\n \"defined\": {\n \"name\": \"AuditConfig\"\n }\n }\n }\n ]\n },\n \"initialize_governance_proposal\": {\n \"name\": \"initialize_governance_proposal\",\n \"expectedAccounts\": [\n {\n \"name\": \"proposal\",\n \"pda\": true\n },\n {\n \"name\": \"proposer\",\n \"pda\": false\n },\n {\n \"name\": \"system_program\",\n \"pda\": false\n }\n ],\n \"accounts\": [\n {\n \"name\": \"proposal\",\n \"writable\": true,\n \"signer\": false,\n \"optional\": false,\n \"docs\": [],\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 103,\n 111,\n 118,\n 101,\n 114,\n 110,\n 97,\n 110,\n 99,\n 101,\n 95,\n 112,\n 114,\n 111,\n 112,\n 111,\n 115,\n 97,\n 108\n ]\n },\n {\n \"kind\": \"arg\",\n \"path\": \"proposal_id\"\n }\n ]\n }\n },\n {\n \"name\": \"proposer\",\n \"writable\": true,\n \"signer\": true,\n \"optional\": false,\n \"docs\": []\n },\n {\n \"name\": \"system_program\",\n \"writable\": false,\n \"signer\": false,\n \"optional\": false,\n \"docs\": [],\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"docs\": \"\",\n \"discriminator\": [\n 137,\n 84,\n 234,\n 206,\n 17,\n 58,\n 54,\n 215\n ],\n \"args\": [\n {\n \"name\": \"proposal_id\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"title\",\n \"type\": \"string\"\n },\n {\n \"name\": \"description\",\n \"type\": \"string\"\n },\n {\n \"name\": \"proposal_type\",\n \"type\": {\n \"defined\": {\n \"name\": \"ProposalType\"\n }\n }\n },\n {\n \"name\": \"execution_params\",\n \"type\": {\n \"defined\": {\n \"name\": \"ExecutionParams\"\n }\n }\n }\n ]\n },\n \"initialize_protocol_config\": {\n \"name\": \"initialize_protocol_config\",\n \"expectedAccounts\": [\n {\n \"name\": \"config\",\n \"pda\": true\n },\n {\n \"name\": \"authority\",\n \"pda\": false\n },\n {\n \"name\": \"treasury\",\n \"pda\": false\n },\n {\n \"name\": \"buyback_pool\",\n \"pda\": false\n },\n {\n \"name\": \"moderator_pool\",\n \"pda\": false\n },\n {\n \"name\": \"system_program\",\n \"pda\": false\n }\n ],\n \"accounts\": [\n {\n \"name\": \"config\",\n \"writable\": true,\n \"signer\": false,\n \"optional\": false,\n \"docs\": [],\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 112,\n 114,\n 111,\n 116,\n 111,\n 99,\n 111,\n 108,\n 95,\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n }\n ]\n }\n },\n {\n \"name\": \"authority\",\n \"writable\": true,\n \"signer\": true,\n \"optional\": false,\n \"docs\": [\n \"Authority who will control the config (typically DAO or multisig)\"\n ]\n },\n {\n \"name\": \"treasury\",\n \"writable\": false,\n \"signer\": false,\n \"optional\": false,\n \"docs\": [\n \"Treasury wallet to receive protocol fees\"\n ]\n },\n {\n \"name\": \"buyback_pool\",\n \"writable\": false,\n \"signer\": false,\n \"optional\": false,\n \"docs\": [\n \"Buyback pool wallet for token buybacks\"\n ]\n },\n {\n \"name\": \"moderator_pool\",\n \"writable\": false,\n \"signer\": false,\n \"optional\": false,\n \"docs\": [\n \"Moderator pool for dispute fees\"\n ]\n },\n {\n \"name\": \"system_program\",\n \"writable\": false,\n \"signer\": false,\n \"optional\": false,\n \"docs\": [],\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"docs\": \"Initialize the global protocol configuration Sets up fee infrastructure with all fees initially disabled (set to 0). Fees will be enabled via governance after mainnet deployment. NOTE: Fee structure is in place but set to 0 until mainnet.\",\n \"discriminator\": [\n 28,\n 50,\n 43,\n 233,\n 244,\n 98,\n 123,\n 118\n ],\n \"args\": []\n },\n \"initialize_rbac_config\": {\n \"name\": \"initialize_rbac_config\",\n \"expectedAccounts\": [\n {\n \"name\": \"rbac_config\",\n \"pda\": true\n },\n {\n \"name\": \"authority\",\n \"pda\": false\n },\n {\n \"name\": \"system_program\",\n \"pda\": false\n }\n ],\n \"accounts\": [\n {\n \"name\": \"rbac_config\",\n \"writable\": true,\n \"signer\": false,\n \"optional\": false,\n \"docs\": [],\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 114,\n 98,\n 97,\n 99,\n 95,\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"authority\"\n }\n ]\n }\n },\n {\n \"name\": \"authority\",\n \"writable\": true,\n \"signer\": true,\n \"optional\": false,\n \"docs\": []\n },\n {\n \"name\": \"system_program\",\n \"writable\": false,\n \"signer\": false,\n \"optional\": false,\n \"docs\": [],\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"docs\": \"\",\n \"discriminator\": [\n 215,\n 68,\n 129,\n 228,\n 237,\n 165,\n 0,\n 240\n ],\n \"args\": [\n {\n \"name\": \"initial_roles\",\n \"type\": {\n \"vec\": {\n \"defined\": {\n \"name\": \"Role\"\n }\n }\n }\n }\n ]\n },\n \"initialize_reputation_metrics\": {\n \"name\": \"initialize_reputation_metrics\",\n \"expectedAccounts\": [\n {\n \"name\": \"reputation_metrics\",\n \"pda\": true\n },\n {\n \"name\": \"agent\",\n \"pda\": false\n },\n {\n \"name\": \"authority\",\n \"pda\": false\n },\n {\n \"name\": \"system_program\",\n \"pda\": false\n },\n {\n \"name\": \"clock\",\n \"pda\": false\n }\n ],\n \"accounts\": [\n {\n \"name\": \"reputation_metrics\",\n \"writable\": true,\n \"signer\": false,\n \"optional\": false,\n \"docs\": [\n \"Reputation metrics account\"\n ],\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 114,\n 101,\n 112,\n 117,\n 116,\n 97,\n 116,\n 105,\n 111,\n 110,\n 95,\n 109,\n 101,\n 116,\n 114,\n 105,\n 99,\n 115\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"agent\"\n }\n ]\n }\n },\n {\n \"name\": \"agent\",\n \"writable\": false,\n \"signer\": false,\n \"optional\": false,\n \"docs\": [\n \"Agent account\"\n ]\n },\n {\n \"name\": \"authority\",\n \"writable\": true,\n \"signer\": true,\n \"optional\": false,\n \"docs\": [\n \"Authority (agent owner)\"\n ]\n },\n {\n \"name\": \"system_program\",\n \"writable\": false,\n \"signer\": false,\n \"optional\": false,\n \"docs\": [\n \"System program\"\n ],\n \"address\": \"11111111111111111111111111111111\"\n },\n {\n \"name\": \"clock\",\n \"writable\": false,\n \"signer\": false,\n \"optional\": false,\n \"docs\": [\n \"Clock for timestamps\"\n ],\n \"address\": \"SysvarC1ock11111111111111111111111111111111\"\n }\n ],\n \"docs\": \"Initialize reputation metrics for an agent Creates a new reputation tracking account that monitors: - Payment success/failure rates - Service ratings from clients - Response time performance - Dispute resolution history\",\n \"discriminator\": [\n 228,\n 11,\n 207,\n 44,\n 52,\n 188,\n 169,\n 237\n ],\n \"args\": []\n },\n \"initialize_staking_config\": {\n \"name\": \"initialize_staking_config\",\n \"expectedAccounts\": [\n {\n \"name\": \"staking_config\",\n \"pda\": true\n },\n {\n \"name\": \"authority\",\n \"pda\": false\n },\n {\n \"name\": \"system_program\",\n \"pda\": false\n }\n ],\n \"accounts\": [\n {\n \"name\": \"staking_config\",\n \"writable\": true,\n \"signer\": false,\n \"optional\": false,\n \"docs\": [],\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 115,\n 116,\n 97,\n 107,\n 105,\n 110,\n 103,\n 95,\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n }\n ]\n }\n },\n {\n \"name\": \"authority\",\n \"writable\": true,\n \"signer\": true,\n \"optional\": false,\n \"docs\": []\n },\n {\n \"name\": \"system_program\",\n \"writable\": false,\n \"signer\": false,\n \"optional\": false,\n \"docs\": [],\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"docs\": \"Initialize GHOST token staking configuration (admin only)\",\n \"discriminator\": [\n 78,\n 164,\n 6,\n 115,\n 206,\n 48,\n 168,\n 105\n ],\n \"args\": [\n {\n \"name\": \"min_stake\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"treasury\",\n \"type\": \"pubkey\"\n }\n ]\n },\n \"issue_credential\": {\n \"name\": \"issue_credential\",\n \"expectedAccounts\": [\n {\n \"name\": \"credential\",\n \"pda\": true\n },\n {\n \"name\": \"credential_template\",\n \"pda\": false\n },\n {\n \"name\": \"credential_type\",\n \"pda\": false\n },\n {\n \"name\": \"subject\",\n \"pda\": false\n },\n {\n \"name\": \"issuer\",\n \"pda\": false\n },\n {\n \"name\": \"system_program\",\n \"pda\": false\n }\n ],\n \"accounts\": [\n {\n \"name\": \"credential\",\n \"writable\": true,\n \"signer\": false,\n \"optional\": false,\n \"docs\": [],\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 99,\n 114,\n 101,\n 100,\n 101,\n 110,\n 116,\n 105,\n 97,\n 108\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"credential_template\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"subject\"\n },\n {\n \"kind\": \"arg\",\n \"path\": \"credential_id\"\n }\n ]\n }\n },\n {\n \"name\": \"credential_template\",\n \"writable\": true,\n \"signer\": false,\n \"optional\": false,\n \"docs\": []\n },\n {\n \"name\": \"credential_type\",\n \"writable\": true,\n \"signer\": false,\n \"optional\": false,\n \"docs\": []\n },\n {\n \"name\": \"subject\",\n \"writable\": false,\n \"signer\": false,\n \"optional\": false,\n \"docs\": []\n },\n {\n \"name\": \"issuer\",\n \"writable\": true,\n \"signer\": true,\n \"optional\": false,\n \"docs\": []\n },\n {\n \"name\": \"system_program\",\n \"writable\": false,\n \"signer\": false,\n \"optional\": false,\n \"docs\": [],\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"docs\": \"Issue a new credential to a subject The subject_data is stored off-chain; only the hash is stored on-chain.\",\n \"discriminator\": [\n 255,\n 193,\n 171,\n 224,\n 68,\n 171,\n 194,\n 87\n ],\n \"args\": [\n {\n \"name\": \"credential_id\",\n \"type\": \"string\"\n },\n {\n \"name\": \"subject_data_hash\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"subject_data_uri\",\n \"type\": \"string\"\n },\n {\n \"name\": \"expires_at\",\n \"type\": {\n \"option\": \"i64\"\n }\n },\n {\n \"name\": \"source_account\",\n \"type\": {\n \"option\": \"pubkey\"\n }\n }\n ]\n },\n \"link_external_id\": {\n \"name\": \"link_external_id\",\n \"expectedAccounts\": [\n {\n \"name\": \"agent_account\",\n \"pda\": false\n },\n {\n \"name\": \"external_id_mapping\",\n \"pda\": true\n },\n {\n \"name\": \"authority\",\n \"pda\": false\n },\n {\n \"name\": \"system_program\",\n \"pda\": false\n }\n ],\n \"accounts\": [\n {\n \"name\": \"agent_account\",\n \"writable\": true,\n \"signer\": false,\n \"optional\": false,\n \"docs\": []\n },\n {\n \"name\": \"external_id_mapping\",\n \"writable\": true,\n \"signer\": false,\n \"optional\": false,\n \"docs\": [],\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 101,\n 120,\n 116,\n 101,\n 114,\n 110,\n 97,\n 108,\n 95,\n 105,\n 100\n ]\n },\n {\n \"kind\": \"arg\",\n \"path\": \"platform\"\n },\n {\n \"kind\": \"arg\",\n \"path\": \"external_id\"\n }\n ]\n }\n },\n {\n \"name\": \"authority\",\n \"writable\": true,\n \"signer\": true,\n \"optional\": false,\n \"docs\": []\n },\n {\n \"name\": \"system_program\",\n \"writable\": false,\n \"signer\": false,\n \"optional\": false,\n \"docs\": [],\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"docs\": \"Link a platform-specific external ID to a Ghost Creates a cross-platform identity mapping for this Ghost. Only the Ghost owner can link external IDs. Parameters: - platform: Platform identifier (e.g., \\\"payai\\\", \\\"eliza\\\", \\\"github\\\") (max 32 chars) - external_id: Platform-specific agent ID (max 128 chars) - verified: Whether this external ID has been verified\",\n \"discriminator\": [\n 156,\n 102,\n 141,\n 155,\n 175,\n 13,\n 29,\n 86\n ],\n \"args\": [\n {\n \"name\": \"platform\",\n \"type\": \"string\"\n },\n {\n \"name\": \"external_id\",\n \"type\": \"string\"\n },\n {\n \"name\": \"verified\",\n \"type\": \"bool\"\n }\n ]\n },\n \"manage_agent_status\": {\n \"name\": \"manage_agent_status\",\n \"expectedAccounts\": [\n {\n \"name\": \"agent\",\n \"pda\": true\n },\n {\n \"name\": \"owner\",\n \"pda\": false\n },\n {\n \"name\": \"clock\",\n \"pda\": false\n }\n ],\n \"accounts\": [\n {\n \"name\": \"agent\",\n \"writable\": true,\n \"signer\": false,\n \"optional\": false,\n \"docs\": [\n \"Agent account with strict validation\"\n ],\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 97,\n 103,\n 101,\n 110,\n 116\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"owner\"\n }\n ]\n }\n },\n {\n \"name\": \"owner\",\n \"writable\": false,\n \"signer\": true,\n \"optional\": false,\n \"docs\": [\n \"Owner authority\"\n ]\n },\n {\n \"name\": \"clock\",\n \"writable\": false,\n \"signer\": false,\n \"optional\": false,\n \"docs\": [\n \"Clock sysvar for timestamp validation\"\n ],\n \"address\": \"SysvarC1ock11111111111111111111111111111111\"\n }\n ],\n \"docs\": \"\",\n \"discriminator\": [\n 164,\n 219,\n 91,\n 38,\n 45,\n 31,\n 33,\n 47\n ],\n \"args\": [\n {\n \"name\": \"new_status\",\n \"type\": \"bool\"\n }\n ]\n },\n \"record_payai_payment\": {\n \"name\": \"record_payai_payment\",\n \"expectedAccounts\": [\n {\n \"name\": \"reputation_metrics\",\n \"pda\": true\n },\n {\n \"name\": \"agent\",\n \"pda\": false\n },\n {\n \"name\": \"authority\",\n \"pda\": false\n },\n {\n \"name\": \"clock\",\n \"pda\": false\n }\n ],\n \"accounts\": [\n {\n \"name\": \"reputation_metrics\",\n \"writable\": true,\n \"signer\": false,\n \"optional\": false,\n \"docs\": [\n \"Reputation metrics account\"\n ],\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 114,\n 101,\n 112,\n 117,\n 116,\n 97,\n 116,\n 105,\n 111,\n 110,\n 95,\n 109,\n 101,\n 116,\n 114,\n 105,\n 99,\n 115\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"agent\"\n }\n ]\n }\n },\n {\n \"name\": \"agent\",\n \"writable\": true,\n \"signer\": false,\n \"optional\": false,\n \"docs\": [\n \"Agent account\"\n ]\n },\n {\n \"name\": \"authority\",\n \"writable\": false,\n \"signer\": true,\n \"optional\": false,\n \"docs\": [\n \"Authority (can be the payment verifier or agent owner)\"\n ]\n },\n {\n \"name\": \"clock\",\n \"writable\": false,\n \"signer\": false,\n \"optional\": false,\n \"docs\": [\n \"Clock for timestamps\"\n ],\n \"address\": \"SysvarC1ock11111111111111111111111111111111\"\n }\n ],\n \"docs\": \"Record a PayAI payment transaction for reputation tracking Consumes payment data from PayAI protocol to update agent reputation. This does NOT facilitate payments - it only tracks them for reputation. Parameters: - payment_signature: PayAI transaction signature - amount: Payment amount in lamports - response_time_ms: Service response time - success: Whether payment completed successfully\",\n \"discriminator\": [\n 165,\n 202,\n 159,\n 139,\n 65,\n 65,\n 36,\n 163\n ],\n \"args\": [\n {\n \"name\": \"payment_signature\",\n \"type\": \"string\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"response_time_ms\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"success\",\n \"type\": \"bool\"\n }\n ]\n },\n \"register_agent\": {\n \"name\": \"register_agent\",\n \"expectedAccounts\": [\n {\n \"name\": \"agent_account\",\n \"pda\": true\n },\n {\n \"name\": \"staking_account\",\n \"pda\": true\n },\n {\n \"name\": \"signer\",\n \"pda\": false\n },\n {\n \"name\": \"system_program\",\n \"pda\": false\n },\n {\n \"name\": \"clock\",\n \"pda\": false\n }\n ],\n \"accounts\": [\n {\n \"name\": \"agent_account\",\n \"writable\": true,\n \"signer\": false,\n \"optional\": false,\n \"docs\": [\n \"Agent account with enhanced 2025 PDA security\"\n ],\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 97,\n 103,\n 101,\n 110,\n 116\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"signer\"\n },\n {\n \"kind\": \"arg\",\n \"path\": \"agent_id\"\n }\n ]\n }\n },\n {\n \"name\": \"staking_account\",\n \"writable\": false,\n \"signer\": false,\n \"optional\": false,\n \"docs\": [\n \"Staking account - REQUIRED for Sybil resistance (must have >= 1K GHOST staked)\"\n ],\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 115,\n 116,\n 97,\n 107,\n 105,\n 110,\n 103\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"signer\"\n }\n ]\n }\n },\n {\n \"name\": \"signer\",\n \"writable\": true,\n \"signer\": true,\n \"optional\": false,\n \"docs\": [\n \"User registry with enhanced validation\",\n \"Authority with enhanced verification\"\n ]\n },\n {\n \"name\": \"system_program\",\n \"writable\": false,\n \"signer\": false,\n \"optional\": false,\n \"docs\": [\n \"System program for account creation\"\n ],\n \"address\": \"11111111111111111111111111111111\"\n },\n {\n \"name\": \"clock\",\n \"writable\": false,\n \"signer\": false,\n \"optional\": false,\n \"docs\": [\n \"Clock sysvar for timestamp validation\"\n ],\n \"address\": \"SysvarC1ock11111111111111111111111111111111\"\n }\n ],\n \"docs\": \"\",\n \"discriminator\": [\n 135,\n 157,\n 66,\n 195,\n 2,\n 113,\n 175,\n 30\n ],\n \"args\": [\n {\n \"name\": \"agent_type\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"name\",\n \"type\": \"string\"\n },\n {\n \"name\": \"description\",\n \"type\": \"string\"\n },\n {\n \"name\": \"metadata_uri\",\n \"type\": \"string\"\n },\n {\n \"name\": \"_agent_id\",\n \"type\": \"string\"\n },\n {\n \"name\": \"pricing_model\",\n \"type\": {\n \"defined\": {\n \"name\": \"PricingModel\"\n }\n }\n }\n ]\n },\n \"register_agent_compressed\": {\n \"name\": \"register_agent_compressed\",\n \"expectedAccounts\": [\n {\n \"name\": \"tree_authority\",\n \"pda\": true\n },\n {\n \"name\": \"merkle_tree\",\n \"pda\": false\n },\n {\n \"name\": \"user_registry\",\n \"pda\": true\n },\n {\n \"name\": \"signer\",\n \"pda\": false\n },\n {\n \"name\": \"compression_program\",\n \"pda\": false\n },\n {\n \"name\": \"log_wrapper\",\n \"pda\": false\n },\n {\n \"name\": \"system_program\",\n \"pda\": false\n },\n {\n \"name\": \"clock\",\n \"pda\": false\n }\n ],\n \"accounts\": [\n {\n \"name\": \"tree_authority\",\n \"writable\": true,\n \"signer\": false,\n \"optional\": false,\n \"docs\": [\n \"Tree authority PDA that manages the compressed Agent tree\"\n ],\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 97,\n 103,\n 101,\n 110,\n 116,\n 95,\n 116,\n 114,\n 101,\n 101,\n 95,\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"signer\"\n }\n ]\n }\n },\n {\n \"name\": \"merkle_tree\",\n \"writable\": true,\n \"signer\": false,\n \"optional\": false,\n \"docs\": [\n \"The Merkle tree account that stores compressed Agent data\"\n ]\n },\n {\n \"name\": \"user_registry\",\n \"writable\": true,\n \"signer\": false,\n \"optional\": false,\n \"docs\": [\n \"User registry with enhanced validation\"\n ],\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 117,\n 115,\n 101,\n 114,\n 95,\n 114,\n 101,\n 103,\n 105,\n 115,\n 116,\n 114,\n 121\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"signer\"\n }\n ]\n }\n },\n {\n \"name\": \"signer\",\n \"writable\": true,\n \"signer\": true,\n \"optional\": false,\n \"docs\": [\n \"Authority with enhanced verification\"\n ]\n },\n {\n \"name\": \"compression_program\",\n \"writable\": false,\n \"signer\": false,\n \"optional\": false,\n \"docs\": [\n \"SPL Account Compression program\"\n ],\n \"address\": \"cmtDvXumGCrqC1Age74AVPhSRVXJMd8PJS91L8KbNCK\"\n },\n {\n \"name\": \"log_wrapper\",\n \"writable\": false,\n \"signer\": false,\n \"optional\": false,\n \"docs\": [\n \"SPL Noop program for logging\"\n ],\n \"address\": \"noopb9bkMVfRPU8AsbpTUg8AQkHtKwMYZiFUjNRtMmV\"\n },\n {\n \"name\": \"system_program\",\n \"writable\": false,\n \"signer\": false,\n \"optional\": false,\n \"docs\": [\n \"System program for account creation\"\n ],\n \"address\": \"11111111111111111111111111111111\"\n },\n {\n \"name\": \"clock\",\n \"writable\": false,\n \"signer\": false,\n \"optional\": false,\n \"docs\": [\n \"Clock sysvar for timestamps\"\n ],\n \"address\": \"SysvarC1ock11111111111111111111111111111111\"\n }\n ],\n \"docs\": \"Register Agent using ZK compression (solves error 2006 with 5000x cost reduction)\",\n \"discriminator\": [\n 15,\n 6,\n 94,\n 55,\n 65,\n 80,\n 123,\n 248\n ],\n \"args\": [\n {\n \"name\": \"agent_type\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"metadata_uri\",\n \"type\": \"string\"\n },\n {\n \"name\": \"agent_id\",\n \"type\": \"string\"\n },\n {\n \"name\": \"name\",\n \"type\": \"string\"\n },\n {\n \"name\": \"description\",\n \"type\": \"string\"\n },\n {\n \"name\": \"pricing_model\",\n \"type\": {\n \"defined\": {\n \"name\": \"PricingModel\"\n }\n }\n }\n ]\n },\n \"register_ghost_metadata\": {\n \"name\": \"register_ghost_metadata\",\n \"expectedAccounts\": [\n {\n \"name\": \"agent_account\",\n \"pda\": false\n },\n {\n \"name\": \"authority\",\n \"pda\": false\n }\n ],\n \"accounts\": [\n {\n \"name\": \"agent_account\",\n \"writable\": true,\n \"signer\": false,\n \"optional\": false,\n \"docs\": []\n },\n {\n \"name\": \"authority\",\n \"writable\": true,\n \"signer\": true,\n \"optional\": false,\n \"docs\": [\n \"Anyone can add metadata to an Unregistered Ghost\",\n \"Claiming proves ownership later\"\n ]\n }\n ],\n \"docs\": \"Register metadata for an Unregistered Ghost Adds name, description, capabilities, and service endpoint to a discovered Ghost. Transitions: Unregistered → Registered Anyone can add metadata to an Unregistered Ghost. Parameters: - name: Agent name (max 64 chars) - description: Agent description (max 128 chars) - capabilities: List of capabilities (max 5) - service_endpoint: Optional HTTP endpoint for the agent service\",\n \"discriminator\": [\n 34,\n 233,\n 111,\n 236,\n 212,\n 22,\n 26,\n 254\n ],\n \"args\": [\n {\n \"name\": \"name\",\n \"type\": \"string\"\n },\n {\n \"name\": \"description\",\n \"type\": \"string\"\n },\n {\n \"name\": \"capabilities\",\n \"type\": {\n \"vec\": \"string\"\n }\n },\n {\n \"name\": \"service_endpoint\",\n \"type\": {\n \"option\": \"string\"\n }\n }\n ]\n },\n \"reset_reentrancy_guard\": {\n \"name\": \"reset_reentrancy_guard\",\n \"expectedAccounts\": [\n {\n \"name\": \"reentrancy_guard\",\n \"pda\": true\n },\n {\n \"name\": \"authority\",\n \"pda\": false\n }\n ],\n \"accounts\": [\n {\n \"name\": \"reentrancy_guard\",\n \"writable\": true,\n \"signer\": false,\n \"optional\": false,\n \"docs\": [],\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 114,\n 101,\n 101,\n 110,\n 116,\n 114,\n 97,\n 110,\n 99,\n 121,\n 95,\n 103,\n 117,\n 97,\n 114,\n 100\n ]\n }\n ]\n }\n },\n {\n \"name\": \"authority\",\n \"writable\": true,\n \"signer\": true,\n \"optional\": false,\n \"docs\": []\n }\n ],\n \"docs\": \"Reset a stuck reentrancy guard (admin only) Use this to recover from stuck states after failed transactions\",\n \"discriminator\": [\n 93,\n 74,\n 168,\n 125,\n 46,\n 153,\n 9,\n 255\n ],\n \"args\": []\n },\n \"resolve_did_document\": {\n \"name\": \"resolve_did_document\",\n \"expectedAccounts\": [\n {\n \"name\": \"did_document\",\n \"pda\": true\n },\n {\n \"name\": \"did_controller\",\n \"pda\": false\n }\n ],\n \"accounts\": [\n {\n \"name\": \"did_document\",\n \"writable\": false,\n \"signer\": false,\n \"optional\": false,\n \"docs\": [\n \"DID document account\"\n ],\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 100,\n 105,\n 100,\n 95,\n 100,\n 111,\n 99,\n 117,\n 109,\n 101,\n 110,\n 116\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"did_controller\"\n }\n ]\n }\n },\n {\n \"name\": \"did_controller\",\n \"writable\": false,\n \"signer\": false,\n \"optional\": false,\n \"docs\": [\n \"Controller public key (used for PDA derivation)\"\n ]\n }\n ],\n \"docs\": \"Resolve a DID document (read-only) Returns the DID document data for off-chain resolution. This instruction exists for compatibility with standard DID resolution flows.\",\n \"discriminator\": [\n 168,\n 180,\n 218,\n 211,\n 184,\n 19,\n 102,\n 12\n ],\n \"args\": []\n },\n \"revoke_authorization\": {\n \"name\": \"revoke_authorization\",\n \"expectedAccounts\": [\n {\n \"name\": \"agent\",\n \"pda\": false\n },\n {\n \"name\": \"authorization\",\n \"pda\": true\n },\n {\n \"name\": \"authority\",\n \"pda\": false\n }\n ],\n \"accounts\": [\n {\n \"name\": \"agent\",\n \"writable\": false,\n \"signer\": false,\n \"optional\": false,\n \"docs\": [\n \"Agent revoking authorization\"\n ]\n },\n {\n \"name\": \"authorization\",\n \"writable\": true,\n \"signer\": false,\n \"optional\": false,\n \"docs\": [\n \"Authorization account (PDA)\"\n ],\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 97,\n 103,\n 101,\n 110,\n 116,\n 95,\n 97,\n 117,\n 116,\n 104\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"agent\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"authorization.authorized_source\",\n \"account\": \"AgentReputationAuth\"\n },\n {\n \"kind\": \"arg\",\n \"path\": \"_nonce\"\n }\n ]\n }\n },\n {\n \"name\": \"authority\",\n \"writable\": false,\n \"signer\": true,\n \"optional\": false,\n \"docs\": [\n \"Authority (agent owner)\"\n ]\n }\n ],\n \"docs\": \"Revoke agent authorization Allows an agent to revoke a previously granted authorization. Once revoked, the facilitator can no longer update reputation. Parameters: - nonce: Optional nonce identifying the specific authorization to revoke\",\n \"discriminator\": [\n 222,\n 179,\n 207,\n 59,\n 191,\n 78,\n 24,\n 248\n ],\n \"args\": [\n {\n \"name\": \"nonce\",\n \"type\": {\n \"option\": \"string\"\n }\n }\n ]\n },\n \"revoke_credential\": {\n \"name\": \"revoke_credential\",\n \"expectedAccounts\": [\n {\n \"name\": \"credential\",\n \"pda\": false\n },\n {\n \"name\": \"issuer\",\n \"pda\": false\n }\n ],\n \"accounts\": [\n {\n \"name\": \"credential\",\n \"writable\": true,\n \"signer\": false,\n \"optional\": false,\n \"docs\": []\n },\n {\n \"name\": \"issuer\",\n \"writable\": true,\n \"signer\": true,\n \"optional\": false,\n \"docs\": []\n }\n ],\n \"docs\": \"Revoke an issued credential Only the original issuer can revoke.\",\n \"discriminator\": [\n 38,\n 123,\n 95,\n 95,\n 223,\n 158,\n 169,\n 87\n ],\n \"args\": []\n },\n \"slash_stake\": {\n \"name\": \"slash_stake\",\n \"expectedAccounts\": [\n {\n \"name\": \"staking_account\",\n \"pda\": true\n },\n {\n \"name\": \"staking_config\",\n \"pda\": true\n },\n {\n \"name\": \"staking_vault\",\n \"pda\": true\n },\n {\n \"name\": \"treasury\",\n \"pda\": false\n },\n {\n \"name\": \"authority\",\n \"pda\": false\n },\n {\n \"name\": \"token_program\",\n \"pda\": false\n }\n ],\n \"accounts\": [\n {\n \"name\": \"staking_account\",\n \"writable\": true,\n \"signer\": false,\n \"optional\": false,\n \"docs\": [],\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 115,\n 116,\n 97,\n 107,\n 105,\n 110,\n 103\n ]\n },\n {\n \"kind\": \"arg\",\n \"path\": \"owner\"\n }\n ]\n }\n },\n {\n \"name\": \"staking_config\",\n \"writable\": false,\n \"signer\": false,\n \"optional\": false,\n \"docs\": [],\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 115,\n 116,\n 97,\n 107,\n 105,\n 110,\n 103,\n 95,\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n }\n ]\n }\n },\n {\n \"name\": \"staking_vault\",\n \"writable\": true,\n \"signer\": false,\n \"optional\": false,\n \"docs\": [],\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 115,\n 116,\n 97,\n 107,\n 105,\n 110,\n 103,\n 95,\n 118,\n 97,\n 117,\n 108,\n 116\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"staking_config\"\n }\n ]\n }\n },\n {\n \"name\": \"treasury\",\n \"writable\": true,\n \"signer\": false,\n \"optional\": false,\n \"docs\": []\n },\n {\n \"name\": \"authority\",\n \"writable\": false,\n \"signer\": true,\n \"optional\": false,\n \"docs\": []\n },\n {\n \"name\": \"token_program\",\n \"writable\": false,\n \"signer\": false,\n \"optional\": false,\n \"docs\": [],\n \"address\": \"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\"\n }\n ],\n \"docs\": \"Slash staked tokens (admin only, for fraud/disputes)\",\n \"discriminator\": [\n 190,\n 242,\n 137,\n 27,\n 41,\n 18,\n 233,\n 37\n ],\n \"args\": [\n {\n \"name\": \"owner\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"reason\",\n \"type\": {\n \"defined\": {\n \"name\": \"SlashReason\"\n }\n }\n },\n {\n \"name\": \"custom_amount\",\n \"type\": {\n \"option\": \"u64\"\n }\n }\n ]\n },\n \"stake_ghost\": {\n \"name\": \"stake_ghost\",\n \"expectedAccounts\": [\n {\n \"name\": \"staking_account\",\n \"pda\": true\n },\n {\n \"name\": \"owner_token_account\",\n \"pda\": false\n },\n {\n \"name\": \"staking_vault\",\n \"pda\": true\n },\n {\n \"name\": \"staking_config\",\n \"pda\": false\n },\n {\n \"name\": \"ghost_mint\",\n \"pda\": false\n },\n {\n \"name\": \"owner\",\n \"pda\": false\n },\n {\n \"name\": \"token_program\",\n \"pda\": false\n },\n {\n \"name\": \"system_program\",\n \"pda\": false\n },\n {\n \"name\": \"rent\",\n \"pda\": false\n }\n ],\n \"accounts\": [\n {\n \"name\": \"staking_account\",\n \"writable\": true,\n \"signer\": false,\n \"optional\": false,\n \"docs\": [],\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 115,\n 116,\n 97,\n 107,\n 105,\n 110,\n 103\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"owner\"\n }\n ]\n }\n },\n {\n \"name\": \"owner_token_account\",\n \"writable\": true,\n \"signer\": false,\n \"optional\": false,\n \"docs\": []\n },\n {\n \"name\": \"staking_vault\",\n \"writable\": true,\n \"signer\": false,\n \"optional\": false,\n \"docs\": [\n \"Staking vault to hold all staked GHOST tokens\",\n \"Automatically initialized on first stake using init_if_needed\"\n ],\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 115,\n 116,\n 97,\n 107,\n 105,\n 110,\n 103,\n 95,\n 118,\n 97,\n 117,\n 108,\n 116\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"staking_config\"\n }\n ]\n }\n },\n {\n \"name\": \"staking_config\",\n \"writable\": false,\n \"signer\": false,\n \"optional\": false,\n \"docs\": []\n },\n {\n \"name\": \"ghost_mint\",\n \"writable\": false,\n \"signer\": false,\n \"optional\": false,\n \"docs\": []\n },\n {\n \"name\": \"owner\",\n \"writable\": true,\n \"signer\": true,\n \"optional\": false,\n \"docs\": []\n },\n {\n \"name\": \"token_program\",\n \"writable\": false,\n \"signer\": false,\n \"optional\": false,\n \"docs\": [],\n \"address\": \"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\"\n },\n {\n \"name\": \"system_program\",\n \"writable\": false,\n \"signer\": false,\n \"optional\": false,\n \"docs\": [],\n \"address\": \"11111111111111111111111111111111\"\n },\n {\n \"name\": \"rent\",\n \"writable\": false,\n \"signer\": false,\n \"optional\": false,\n \"docs\": [],\n \"address\": \"SysvarRent111111111111111111111111111111111\"\n }\n ],\n \"docs\": \"Stake GHOST tokens to boost agent reputation\",\n \"discriminator\": [\n 5,\n 196,\n 24,\n 54,\n 196,\n 56,\n 173,\n 191\n ],\n \"args\": [\n {\n \"name\": \"amount\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"lock_duration\",\n \"type\": \"i64\"\n }\n ]\n },\n \"submit_delivery\": {\n \"name\": \"submit_delivery\",\n \"expectedAccounts\": [\n {\n \"name\": \"escrow\",\n \"pda\": true\n },\n {\n \"name\": \"agent\",\n \"pda\": false\n },\n {\n \"name\": \"agent_owner\",\n \"pda\": false\n }\n ],\n \"accounts\": [\n {\n \"name\": \"escrow\",\n \"writable\": true,\n \"signer\": false,\n \"optional\": false,\n \"docs\": [],\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 103,\n 104,\n 111,\n 115,\n 116,\n 95,\n 112,\n 114,\n 111,\n 116,\n 101,\n 99,\n 116\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"escrow.client\",\n \"account\": \"GhostProtectEscrow\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"escrow.escrow_id\",\n \"account\": \"GhostProtectEscrow\"\n }\n ]\n }\n },\n {\n \"name\": \"agent\",\n \"writable\": false,\n \"signer\": false,\n \"optional\": false,\n \"docs\": []\n },\n {\n \"name\": \"agent_owner\",\n \"writable\": false,\n \"signer\": true,\n \"optional\": false,\n \"docs\": []\n }\n ],\n \"docs\": \"Agent submits work delivery proof\",\n \"discriminator\": [\n 217,\n 177,\n 33,\n 54,\n 136,\n 185,\n 123,\n 96\n ],\n \"args\": [\n {\n \"name\": \"delivery_proof\",\n \"type\": \"string\"\n }\n ]\n },\n \"submit_service_rating\": {\n \"name\": \"submit_service_rating\",\n \"expectedAccounts\": [\n {\n \"name\": \"reputation_metrics\",\n \"pda\": true\n },\n {\n \"name\": \"agent\",\n \"pda\": false\n },\n {\n \"name\": \"client\",\n \"pda\": false\n },\n {\n \"name\": \"clock\",\n \"pda\": false\n }\n ],\n \"accounts\": [\n {\n \"name\": \"reputation_metrics\",\n \"writable\": true,\n \"signer\": false,\n \"optional\": false,\n \"docs\": [\n \"Reputation metrics account\"\n ],\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 114,\n 101,\n 112,\n 117,\n 116,\n 97,\n 116,\n 105,\n 111,\n 110,\n 95,\n 109,\n 101,\n 116,\n 114,\n 105,\n 99,\n 115\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"agent\"\n }\n ]\n }\n },\n {\n \"name\": \"agent\",\n \"writable\": true,\n \"signer\": false,\n \"optional\": false,\n \"docs\": [\n \"Agent account\"\n ]\n },\n {\n \"name\": \"client\",\n \"writable\": false,\n \"signer\": true,\n \"optional\": false,\n \"docs\": [\n \"Client submitting the rating\"\n ]\n },\n {\n \"name\": \"clock\",\n \"writable\": false,\n \"signer\": false,\n \"optional\": false,\n \"docs\": [\n \"Clock for timestamps\"\n ],\n \"address\": \"SysvarC1ock11111111111111111111111111111111\"\n }\n ],\n \"docs\": \"Submit a service rating after a completed transaction Allows clients to rate agent service quality (1-5 scale). Ratings are factored into the overall reputation score calculation. Parameters: - rating: Service rating from 1 (poor) to 5 (excellent) - payment_signature: Associated PayAI transaction signature\",\n \"discriminator\": [\n 23,\n 160,\n 228,\n 88,\n 168,\n 145,\n 129,\n 19\n ],\n \"args\": [\n {\n \"name\": \"rating\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"payment_signature\",\n \"type\": \"string\"\n }\n ]\n },\n \"unstake_ghost\": {\n \"name\": \"unstake_ghost\",\n \"expectedAccounts\": [\n {\n \"name\": \"staking_account\",\n \"pda\": true\n },\n {\n \"name\": \"staking_config\",\n \"pda\": true\n },\n {\n \"name\": \"staking_vault\",\n \"pda\": true\n },\n {\n \"name\": \"owner_token_account\",\n \"pda\": false\n },\n {\n \"name\": \"owner\",\n \"pda\": false\n },\n {\n \"name\": \"token_program\",\n \"pda\": false\n }\n ],\n \"accounts\": [\n {\n \"name\": \"staking_account\",\n \"writable\": true,\n \"signer\": false,\n \"optional\": false,\n \"docs\": [],\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 115,\n 116,\n 97,\n 107,\n 105,\n 110,\n 103\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"owner\"\n }\n ]\n }\n },\n {\n \"name\": \"staking_config\",\n \"writable\": false,\n \"signer\": false,\n \"optional\": false,\n \"docs\": [],\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 115,\n 116,\n 97,\n 107,\n 105,\n 110,\n 103,\n 95,\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n }\n ]\n }\n },\n {\n \"name\": \"staking_vault\",\n \"writable\": true,\n \"signer\": false,\n \"optional\": false,\n \"docs\": [],\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 115,\n 116,\n 97,\n 107,\n 105,\n 110,\n 103,\n 95,\n 118,\n 97,\n 117,\n 108,\n 116\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"staking_config\"\n }\n ]\n }\n },\n {\n \"name\": \"owner_token_account\",\n \"writable\": true,\n \"signer\": false,\n \"optional\": false,\n \"docs\": []\n },\n {\n \"name\": \"owner\",\n \"writable\": true,\n \"signer\": true,\n \"optional\": false,\n \"docs\": []\n },\n {\n \"name\": \"token_program\",\n \"writable\": false,\n \"signer\": false,\n \"optional\": false,\n \"docs\": [],\n \"address\": \"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\"\n }\n ],\n \"docs\": \"Unstake GHOST tokens after lock period expires\",\n \"discriminator\": [\n 252,\n 101,\n 172,\n 252,\n 1,\n 4,\n 12,\n 116\n ],\n \"args\": []\n },\n \"update_agent\": {\n \"name\": \"update_agent\",\n \"expectedAccounts\": [\n {\n \"name\": \"agent_account\",\n \"pda\": true\n },\n {\n \"name\": \"signer\",\n \"pda\": false\n },\n {\n \"name\": \"clock\",\n \"pda\": false\n }\n ],\n \"accounts\": [\n {\n \"name\": \"agent_account\",\n \"writable\": true,\n \"signer\": false,\n \"optional\": false,\n \"docs\": [\n \"Agent account with canonical PDA validation\"\n ],\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 97,\n 103,\n 101,\n 110,\n 116\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"signer\"\n },\n {\n \"kind\": \"arg\",\n \"path\": \"agent_id\"\n }\n ]\n }\n },\n {\n \"name\": \"signer\",\n \"writable\": true,\n \"signer\": true,\n \"optional\": false,\n \"docs\": [\n \"Enhanced authority verification\"\n ]\n },\n {\n \"name\": \"clock\",\n \"writable\": false,\n \"signer\": false,\n \"optional\": false,\n \"docs\": [\n \"Clock sysvar for rate limiting\"\n ],\n \"address\": \"SysvarC1ock11111111111111111111111111111111\"\n }\n ],\n \"docs\": \"\",\n \"discriminator\": [\n 85,\n 2,\n 178,\n 9,\n 119,\n 139,\n 102,\n 164\n ],\n \"args\": [\n {\n \"name\": \"_agent_type\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"name\",\n \"type\": {\n \"option\": \"string\"\n }\n },\n {\n \"name\": \"description\",\n \"type\": {\n \"option\": \"string\"\n }\n },\n {\n \"name\": \"metadata_uri\",\n \"type\": \"string\"\n },\n {\n \"name\": \"_agent_id\",\n \"type\": \"string\"\n },\n {\n \"name\": \"pricing_model\",\n \"type\": {\n \"option\": {\n \"defined\": {\n \"name\": \"PricingModel\"\n }\n }\n }\n }\n ]\n },\n \"update_agent_reputation\": {\n \"name\": \"update_agent_reputation\",\n \"expectedAccounts\": [\n {\n \"name\": \"agent_account\",\n \"pda\": true\n },\n {\n \"name\": \"signer\",\n \"pda\": false\n },\n {\n \"name\": \"clock\",\n \"pda\": false\n }\n ],\n \"accounts\": [\n {\n \"name\": \"agent_account\",\n \"writable\": true,\n \"signer\": false,\n \"optional\": false,\n \"docs\": [\n \"Agent account with canonical PDA validation\"\n ],\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 97,\n 103,\n 101,\n 110,\n 116\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"signer\"\n },\n {\n \"kind\": \"arg\",\n \"path\": \"agent_id\"\n }\n ]\n }\n },\n {\n \"name\": \"signer\",\n \"writable\": true,\n \"signer\": true,\n \"optional\": false,\n \"docs\": [\n \"Enhanced authority verification\"\n ]\n },\n {\n \"name\": \"clock\",\n \"writable\": false,\n \"signer\": false,\n \"optional\": false,\n \"docs\": [\n \"Clock sysvar for rate limiting\"\n ],\n \"address\": \"SysvarC1ock11111111111111111111111111111111\"\n }\n ],\n \"docs\": \"\",\n \"discriminator\": [\n 80,\n 227,\n 92,\n 245,\n 231,\n 37,\n 99,\n 180\n ],\n \"args\": [\n {\n \"name\": \"agent_id\",\n \"type\": \"string\"\n },\n {\n \"name\": \"reputation_score\",\n \"type\": \"u64\"\n }\n ]\n },\n \"update_agent_service\": {\n \"name\": \"update_agent_service\",\n \"expectedAccounts\": [\n {\n \"name\": \"agent\",\n \"pda\": true\n },\n {\n \"name\": \"owner\",\n \"pda\": false\n },\n {\n \"name\": \"system_program\",\n \"pda\": false\n }\n ],\n \"accounts\": [\n {\n \"name\": \"agent\",\n \"writable\": true,\n \"signer\": false,\n \"optional\": false,\n \"docs\": [\n \"Agent account with enhanced 2025 security patterns\"\n ],\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 97,\n 103,\n 101,\n 110,\n 116\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"owner\"\n }\n ]\n }\n },\n {\n \"name\": \"owner\",\n \"writable\": true,\n \"signer\": true,\n \"optional\": false,\n \"docs\": [\n \"Owner must be signer for security (2025 pattern)\"\n ]\n },\n {\n \"name\": \"system_program\",\n \"writable\": false,\n \"signer\": false,\n \"optional\": false,\n \"docs\": [\n \"System program for account operations\"\n ],\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"docs\": \"\",\n \"discriminator\": [\n 87,\n 146,\n 181,\n 198,\n 252,\n 68,\n 243,\n 102\n ],\n \"args\": [\n {\n \"name\": \"service_data\",\n \"type\": {\n \"defined\": {\n \"name\": \"AgentServiceData\"\n }\n }\n }\n ]\n },\n \"update_crosschain_status\": {\n \"name\": \"update_crosschain_status\",\n \"expectedAccounts\": [\n {\n \"name\": \"credential\",\n \"pda\": false\n },\n {\n \"name\": \"issuer\",\n \"pda\": false\n }\n ],\n \"accounts\": [\n {\n \"name\": \"credential\",\n \"writable\": true,\n \"signer\": false,\n \"optional\": false,\n \"docs\": []\n },\n {\n \"name\": \"issuer\",\n \"writable\": true,\n \"signer\": true,\n \"optional\": false,\n \"docs\": []\n }\n ],\n \"docs\": \"Update the cross-chain sync status after syncing to Crossmint\",\n \"discriminator\": [\n 22,\n 167,\n 59,\n 238,\n 22,\n 231,\n 239,\n 146\n ],\n \"args\": [\n {\n \"name\": \"crossmint_credential_id\",\n \"type\": \"string\"\n },\n {\n \"name\": \"status\",\n \"type\": {\n \"defined\": {\n \"name\": \"CrossChainStatus\"\n }\n }\n }\n ]\n },\n \"update_did_document\": {\n \"name\": \"update_did_document\",\n \"expectedAccounts\": [\n {\n \"name\": \"did_document\",\n \"pda\": true\n },\n {\n \"name\": \"controller\",\n \"pda\": false\n },\n {\n \"name\": \"clock\",\n \"pda\": false\n }\n ],\n \"accounts\": [\n {\n \"name\": \"did_document\",\n \"writable\": true,\n \"signer\": false,\n \"optional\": false,\n \"docs\": [\n \"DID document account with canonical PDA validation\"\n ],\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 100,\n 105,\n 100,\n 95,\n 100,\n 111,\n 99,\n 117,\n 109,\n 101,\n 110,\n 116\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"controller\"\n }\n ]\n }\n },\n {\n \"name\": \"controller\",\n \"writable\": true,\n \"signer\": true,\n \"optional\": false,\n \"docs\": [\n \"Controller of the DID (must match document controller)\"\n ]\n },\n {\n \"name\": \"clock\",\n \"writable\": false,\n \"signer\": false,\n \"optional\": false,\n \"docs\": [\n \"Clock sysvar for timestamp validation\"\n ],\n \"address\": \"SysvarC1ock11111111111111111111111111111111\"\n }\n ],\n \"docs\": \"Update an existing DID document Add or remove verification methods and service endpoints. Only the controller can update the DID document. Parameters: - add_verification_method: Optional verification method to add - remove_verification_method_id: Optional method ID to remove - add_service_endpoint: Optional service endpoint to add - remove_service_endpoint_id: Optional service ID to remove\",\n \"discriminator\": [\n 64,\n 216,\n 17,\n 91,\n 205,\n 94,\n 45,\n 57\n ],\n \"args\": [\n {\n \"name\": \"add_verification_method\",\n \"type\": {\n \"option\": {\n \"defined\": {\n \"name\": \"VerificationMethod\"\n }\n }\n }\n },\n {\n \"name\": \"remove_verification_method_id\",\n \"type\": {\n \"option\": \"string\"\n }\n },\n {\n \"name\": \"add_service_endpoint\",\n \"type\": {\n \"option\": {\n \"defined\": {\n \"name\": \"ServiceEndpoint\"\n }\n }\n }\n },\n {\n \"name\": \"remove_service_endpoint_id\",\n \"type\": {\n \"option\": \"string\"\n }\n }\n ]\n },\n \"update_ghost_score\": {\n \"name\": \"update_ghost_score\",\n \"expectedAccounts\": [\n {\n \"name\": \"agent_account\",\n \"pda\": false\n },\n {\n \"name\": \"authority\",\n \"pda\": false\n }\n ],\n \"accounts\": [\n {\n \"name\": \"agent_account\",\n \"writable\": true,\n \"signer\": false,\n \"optional\": false,\n \"docs\": []\n },\n {\n \"name\": \"authority\",\n \"writable\": false,\n \"signer\": true,\n \"optional\": false,\n \"docs\": [\n \"Authority allowed to update scores (could be governance/oracle)\"\n ]\n }\n ],\n \"docs\": \"Update Ghost Score from off-chain calculation Called by the reputation oracle/calculator service. Updates the weighted Ghost Score and optionally the reputation components. Parameters: - new_score: New Ghost Score (0-1000) - components: Optional reputation component breakdown\",\n \"discriminator\": [\n 213,\n 152,\n 5,\n 80,\n 163,\n 224,\n 151,\n 120\n ],\n \"args\": [\n {\n \"name\": \"new_score\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"components\",\n \"type\": {\n \"option\": {\n \"vec\": {\n \"defined\": {\n \"name\": \"ReputationComponent\"\n }\n }\n }\n }\n }\n ]\n },\n \"update_protocol_config\": {\n \"name\": \"update_protocol_config\",\n \"expectedAccounts\": [\n {\n \"name\": \"config\",\n \"pda\": true\n },\n {\n \"name\": \"authority\",\n \"pda\": false\n }\n ],\n \"accounts\": [\n {\n \"name\": \"config\",\n \"writable\": true,\n \"signer\": false,\n \"optional\": false,\n \"docs\": [],\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 112,\n 114,\n 111,\n 116,\n 111,\n 99,\n 111,\n 108,\n 95,\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n }\n ]\n }\n },\n {\n \"name\": \"authority\",\n \"writable\": false,\n \"signer\": true,\n \"optional\": false,\n \"docs\": []\n }\n ],\n \"docs\": \"Update protocol configuration parameters\",\n \"discriminator\": [\n 197,\n 97,\n 123,\n 54,\n 221,\n 168,\n 11,\n 135\n ],\n \"args\": [\n {\n \"name\": \"escrow_fee_bps\",\n \"type\": {\n \"option\": \"u16\"\n }\n },\n {\n \"name\": \"agent_registration_fee\",\n \"type\": {\n \"option\": \"u64\"\n }\n },\n {\n \"name\": \"listing_fee\",\n \"type\": {\n \"option\": \"u64\"\n }\n },\n {\n \"name\": \"dispute_fee_bps\",\n \"type\": {\n \"option\": \"u16\"\n }\n },\n {\n \"name\": \"fees_enabled\",\n \"type\": {\n \"option\": \"bool\"\n }\n },\n {\n \"name\": \"treasury\",\n \"type\": {\n \"option\": \"pubkey\"\n }\n },\n {\n \"name\": \"buyback_pool\",\n \"type\": {\n \"option\": \"pubkey\"\n }\n },\n {\n \"name\": \"moderator_pool\",\n \"type\": {\n \"option\": \"pubkey\"\n }\n }\n ]\n },\n \"update_reputation_tags\": {\n \"name\": \"update_reputation_tags\",\n \"expectedAccounts\": [\n {\n \"name\": \"reputation_metrics\",\n \"pda\": true\n },\n {\n \"name\": \"agent\",\n \"pda\": false\n },\n {\n \"name\": \"authority\",\n \"pda\": false\n },\n {\n \"name\": \"clock\",\n \"pda\": false\n }\n ],\n \"accounts\": [\n {\n \"name\": \"reputation_metrics\",\n \"writable\": true,\n \"signer\": false,\n \"optional\": false,\n \"docs\": [\n \"Reputation metrics account\"\n ],\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 114,\n 101,\n 112,\n 117,\n 116,\n 97,\n 116,\n 105,\n 111,\n 110,\n 95,\n 109,\n 101,\n 116,\n 114,\n 105,\n 99,\n 115\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"agent\"\n }\n ]\n }\n },\n {\n \"name\": \"agent\",\n \"writable\": true,\n \"signer\": false,\n \"optional\": false,\n \"docs\": [\n \"Agent account\"\n ]\n },\n {\n \"name\": \"authority\",\n \"writable\": false,\n \"signer\": true,\n \"optional\": false,\n \"docs\": [\n \"Authority (can be the agent owner or authorized updater)\"\n ]\n },\n {\n \"name\": \"clock\",\n \"writable\": false,\n \"signer\": false,\n \"optional\": false,\n \"docs\": [\n \"Clock for timestamps\"\n ],\n \"address\": \"SysvarC1ock11111111111111111111111111111111\"\n }\n ],\n \"docs\": \"Update reputation tags for an agent Adds or updates granular reputation tags with confidence scores. Tags are categorized into skill, behavior, and compliance tags. Each tag has a confidence score (0-10000 basis points) and evidence count. Tag decay: Tags automatically decay at 10 bp/day and become stale after 90 days. This ensures reputation data stays current and reflects recent performance. Parameters: - skill_tags: Skill tags to add (e.g., \\\"rust\\\", \\\"smart-contracts\\\") - max 20 - behavior_tags: Behavior tags (e.g., \\\"responsive\\\", \\\"reliable\\\") - max 20 - compliance_tags: Compliance tags (e.g., \\\"kyc-verified\\\") - max 10 - tag_scores: Tag scores with confidence and evidence - max 50\",\n \"discriminator\": [\n 206,\n 96,\n 254,\n 186,\n 129,\n 180,\n 103,\n 198\n ],\n \"args\": [\n {\n \"name\": \"skill_tags\",\n \"type\": {\n \"vec\": \"string\"\n }\n },\n {\n \"name\": \"behavior_tags\",\n \"type\": {\n \"vec\": \"string\"\n }\n },\n {\n \"name\": \"compliance_tags\",\n \"type\": {\n \"vec\": \"string\"\n }\n },\n {\n \"name\": \"tag_scores\",\n \"type\": {\n \"vec\": {\n \"defined\": {\n \"name\": \"TagScore\"\n }\n }\n }\n }\n ]\n },\n \"update_reputation_with_auth\": {\n \"name\": \"update_reputation_with_auth\",\n \"expectedAccounts\": [\n {\n \"name\": \"agent\",\n \"pda\": false\n },\n {\n \"name\": \"reputation_metrics\",\n \"pda\": true\n },\n {\n \"name\": \"authorization\",\n \"pda\": true\n },\n {\n \"name\": \"usage_record\",\n \"pda\": true\n },\n {\n \"name\": \"authorized_source\",\n \"pda\": false\n },\n {\n \"name\": \"system_program\",\n \"pda\": false\n },\n {\n \"name\": \"clock\",\n \"pda\": false\n }\n ],\n \"accounts\": [\n {\n \"name\": \"agent\",\n \"writable\": false,\n \"signer\": false,\n \"optional\": false,\n \"docs\": [\n \"Agent whose reputation is being updated\"\n ]\n },\n {\n \"name\": \"reputation_metrics\",\n \"writable\": true,\n \"signer\": false,\n \"optional\": false,\n \"docs\": [\n \"Agent reputation metrics\"\n ],\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 114,\n 101,\n 112,\n 117,\n 116,\n 97,\n 116,\n 105,\n 111,\n 110,\n 95,\n 109,\n 101,\n 116,\n 114,\n 105,\n 99,\n 115\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"agent\"\n }\n ]\n }\n },\n {\n \"name\": \"authorization\",\n \"writable\": true,\n \"signer\": false,\n \"optional\": false,\n \"docs\": [\n \"Authorization account (PDA)\"\n ],\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 97,\n 103,\n 101,\n 110,\n 116,\n 95,\n 97,\n 117,\n 116,\n 104\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"agent\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"authorized_source\"\n },\n {\n \"kind\": \"arg\",\n \"path\": \"_nonce\"\n }\n ]\n }\n },\n {\n \"name\": \"usage_record\",\n \"writable\": true,\n \"signer\": false,\n \"optional\": false,\n \"docs\": [\n \"Usage record account (optional, for audit trail)\"\n ],\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 97,\n 117,\n 116,\n 104,\n 95,\n 117,\n 115,\n 97,\n 103,\n 101\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"authorization\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"authorization.current_index\",\n \"account\": \"AgentReputationAuth\"\n }\n ]\n }\n },\n {\n \"name\": \"authorized_source\",\n \"writable\": true,\n \"signer\": true,\n \"optional\": false,\n \"docs\": [\n \"Authorized source (e.g., PayAI facilitator)\"\n ]\n },\n {\n \"name\": \"system_program\",\n \"writable\": false,\n \"signer\": false,\n \"optional\": false,\n \"docs\": [\n \"System program\"\n ],\n \"address\": \"11111111111111111111111111111111\"\n },\n {\n \"name\": \"clock\",\n \"writable\": false,\n \"signer\": false,\n \"optional\": false,\n \"docs\": [\n \"Clock for timestamps\"\n ],\n \"address\": \"SysvarC1ock11111111111111111111111111111111\"\n }\n ],\n \"docs\": \"Update agent reputation using authorization Facilitators (e.g., PayAI) use this to update agent reputation using a pre-existing authorization from the agent. Parameters: - reputation_change: Change to reputation score (can be positive or negative) - transaction_signature: Transaction signature for audit trail - metadata: Optional metadata about the reputation update - nonce: Optional nonce matching the authorization\",\n \"discriminator\": [\n 61,\n 236,\n 225,\n 167,\n 134,\n 43,\n 53,\n 93\n ],\n \"args\": [\n {\n \"name\": \"reputation_change\",\n \"type\": \"i64\"\n },\n {\n \"name\": \"transaction_signature\",\n \"type\": \"string\"\n },\n {\n \"name\": \"metadata\",\n \"type\": {\n \"option\": \"string\"\n }\n },\n {\n \"name\": \"nonce\",\n \"type\": {\n \"option\": \"string\"\n }\n }\n ]\n },\n \"update_source_reputation\": {\n \"name\": \"update_source_reputation\",\n \"expectedAccounts\": [\n {\n \"name\": \"reputation_metrics\",\n \"pda\": true\n },\n {\n \"name\": \"agent\",\n \"pda\": false\n },\n {\n \"name\": \"authority\",\n \"pda\": false\n },\n {\n \"name\": \"clock\",\n \"pda\": false\n }\n ],\n \"accounts\": [\n {\n \"name\": \"reputation_metrics\",\n \"writable\": true,\n \"signer\": false,\n \"optional\": false,\n \"docs\": [\n \"Reputation metrics account\"\n ],\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 114,\n 101,\n 112,\n 117,\n 116,\n 97,\n 116,\n 105,\n 111,\n 110,\n 95,\n 109,\n 101,\n 116,\n 114,\n 105,\n 99,\n 115\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"agent\"\n }\n ]\n }\n },\n {\n \"name\": \"agent\",\n \"writable\": true,\n \"signer\": false,\n \"optional\": false,\n \"docs\": [\n \"Agent account\"\n ]\n },\n {\n \"name\": \"authority\",\n \"writable\": false,\n \"signer\": true,\n \"optional\": false,\n \"docs\": [\n \"Authority (can be oracle, agent owner, or authorized updater)\"\n ]\n },\n {\n \"name\": \"clock\",\n \"writable\": false,\n \"signer\": false,\n \"optional\": false,\n \"docs\": [\n \"Clock for timestamps\"\n ],\n \"address\": \"SysvarC1ock11111111111111111111111111111111\"\n }\n ],\n \"docs\": \"Update reputation from a specific source Updates or adds a reputation score from an external source (e.g., GitHub, custom webhook). Automatically aggregates all sources and detects conflicts. Parameters: - source_name: Source identifier (e.g., \\\"github\\\", \\\"custom-webhook\\\") - score: Reputation score from source (0-1000) - weight: Source weight in basis points (0-10000) - data_points: Number of metrics contributing to score - reliability: Source reliability in basis points (0-10000)\",\n \"discriminator\": [\n 161,\n 240,\n 255,\n 69,\n 130,\n 227,\n 71,\n 123\n ],\n \"args\": [\n {\n \"name\": \"source_name\",\n \"type\": \"string\"\n },\n {\n \"name\": \"score\",\n \"type\": \"u16\"\n },\n {\n \"name\": \"weight\",\n \"type\": \"u16\"\n },\n {\n \"name\": \"data_points\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"reliability\",\n \"type\": \"u16\"\n }\n ]\n },\n \"verify_agent\": {\n \"name\": \"verify_agent\",\n \"expectedAccounts\": [\n {\n \"name\": \"agent_verification\",\n \"pda\": true\n },\n {\n \"name\": \"agent\",\n \"pda\": false\n },\n {\n \"name\": \"verifier\",\n \"pda\": false\n },\n {\n \"name\": \"system_program\",\n \"pda\": false\n },\n {\n \"name\": \"clock\",\n \"pda\": false\n }\n ],\n \"accounts\": [\n {\n \"name\": \"agent_verification\",\n \"writable\": true,\n \"signer\": false,\n \"optional\": false,\n \"docs\": [\n \"Verification account with enhanced PDA security\"\n ],\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 97,\n 103,\n 101,\n 110,\n 116,\n 95,\n 118,\n 101,\n 114,\n 105,\n 102,\n 105,\n 99,\n 97,\n 116,\n 105,\n 111,\n 110\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"agent\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"verifier\"\n }\n ]\n }\n },\n {\n \"name\": \"agent\",\n \"writable\": false,\n \"signer\": false,\n \"optional\": false,\n \"docs\": [\n \"Agent account being verified (enhanced validation)\"\n ]\n },\n {\n \"name\": \"verifier\",\n \"writable\": true,\n \"signer\": true,\n \"optional\": false,\n \"docs\": [\n \"Verifier authority with enhanced permissions\"\n ]\n },\n {\n \"name\": \"system_program\",\n \"writable\": false,\n \"signer\": false,\n \"optional\": false,\n \"docs\": [\n \"System program for account operations\"\n ],\n \"address\": \"11111111111111111111111111111111\"\n },\n {\n \"name\": \"clock\",\n \"writable\": false,\n \"signer\": false,\n \"optional\": false,\n \"docs\": [\n \"Clock sysvar for timestamp validation\"\n ],\n \"address\": \"SysvarC1ock11111111111111111111111111111111\"\n }\n ],\n \"docs\": \"\",\n \"discriminator\": [\n 206,\n 212,\n 108,\n 12,\n 105,\n 61,\n 100,\n 66\n ],\n \"args\": [\n {\n \"name\": \"agent_pubkey\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"service_endpoint\",\n \"type\": \"string\"\n },\n {\n \"name\": \"supported_capabilities\",\n \"type\": {\n \"vec\": \"u64\"\n }\n },\n {\n \"name\": \"verified_at\",\n \"type\": \"i64\"\n }\n ]\n },\n \"verify_authorization\": {\n \"name\": \"verify_authorization\",\n \"expectedAccounts\": [\n {\n \"name\": \"agent\",\n \"pda\": false\n },\n {\n \"name\": \"authorization\",\n \"pda\": true\n },\n {\n \"name\": \"clock\",\n \"pda\": false\n }\n ],\n \"accounts\": [\n {\n \"name\": \"agent\",\n \"writable\": false,\n \"signer\": false,\n \"optional\": false,\n \"docs\": [\n \"Agent account\"\n ]\n },\n {\n \"name\": \"authorization\",\n \"writable\": false,\n \"signer\": false,\n \"optional\": false,\n \"docs\": [\n \"Authorization account (PDA)\"\n ],\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 97,\n 103,\n 101,\n 110,\n 116,\n 95,\n 97,\n 117,\n 116,\n 104\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"agent\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"authorization.authorized_source\",\n \"account\": \"AgentReputationAuth\"\n },\n {\n \"kind\": \"arg\",\n \"path\": \"_nonce\"\n }\n ]\n }\n },\n {\n \"name\": \"clock\",\n \"writable\": false,\n \"signer\": false,\n \"optional\": false,\n \"docs\": [\n \"Clock for timestamp validation\"\n ],\n \"address\": \"SysvarC1ock11111111111111111111111111111111\"\n }\n ],\n \"docs\": \"Verify agent authorization (view-only) Checks if an authorization is valid and returns its status. This is a read-only instruction for verification purposes. Parameters: - nonce: Optional nonce identifying the specific authorization to verify\",\n \"discriminator\": [\n 43,\n 9,\n 131,\n 59,\n 74,\n 118,\n 113,\n 170\n ],\n \"args\": [\n {\n \"name\": \"nonce\",\n \"type\": {\n \"option\": \"string\"\n }\n }\n ]\n }\n};\n","/**\n * Instruction Error Handler\n * \n * Provides detailed error messages for instruction account validation\n * using the generated instruction mappings from the IDL.\n */\n\nimport { \n instructionAccountMappings,\n type InstructionMapping\n} from '../generated/instruction-mappings.js'\n\n// Re-export for convenience\nexport { type InstructionMapping }\n\ninterface ExpectedAccount {\n name: string\n pda: boolean\n};\n\ninterface AccountInfo {\n name: string;\n pda: boolean;\n}\n\n\n/**\n * Enhanced error class for instruction validation errors\n */\nexport class InstructionValidationError extends Error {\n public readonly instruction: string;\n public readonly expectedAccounts: number;\n public readonly providedAccounts: number;\n public readonly accountDetails?: AccountInfo[];\n\n constructor(\n instruction: string,\n expectedAccounts: number,\n providedAccounts: number,\n message: string,\n accountDetails?: AccountInfo[]\n ) {\n super(message);\n this.name = 'InstructionValidationError';\n this.instruction = instruction;\n this.expectedAccounts = expectedAccounts;\n this.providedAccounts = providedAccounts;\n this.accountDetails = accountDetails;\n }\n}\n\n/**\n * Check if an instruction exists in our mappings\n */\nexport function isKnownInstruction(instructionName: string): boolean {\n return instructionName in instructionAccountMappings;\n}\n\n/**\n * Validate instruction accounts and throw detailed error if invalid\n */\nexport function validateInstructionAccounts(\n instructionName: string,\n providedAccounts: unknown[],\n accountNames?: string[]\n): void {\n const mapping = getInstructionMapping(instructionName);\n \n if (!mapping) {\n throw new InstructionValidationError(\n instructionName,\n 0,\n providedAccounts.length,\n `Unknown instruction: ${instructionName}. This instruction may not exist in the current IDL or may be misspelled.`,\n );\n }\n \n if (providedAccounts.length !== mapping.expectedAccounts.length) {\n const errorMessage = generateAccountValidationError(\n instructionName, \n providedAccounts.length, \n accountNames\n );\n \n throw new InstructionValidationError(\n instructionName,\n mapping.expectedAccounts.length,\n providedAccounts.length,\n errorMessage,\n mapping.expectedAccounts\n );\n }\n}\n\n/**\n * Create a helpful error message for account mismatch\n */\nexport function createAccountMismatchError(\n instructionName: string,\n providedCount: number,\n providedAccountNames?: string[]\n): string {\n const mapping = getInstructionMapping(instructionName);\n \n if (!mapping) {\n return `Unknown instruction: ${instructionName}`;\n }\n \n if (providedCount === mapping.expectedAccounts.length) {\n return `Accounts are correctly provided for ${instructionName}`;\n }\n \n let error = `❌ Account validation failed for \"${instructionName}\"\\n\\n`;\n \n error += `📊 Expected: ${mapping.expectedAccounts.length} accounts\\n`;\n error += `📊 Provided: ${providedCount} accounts\\n\\n`;\n \n error += `📋 Required accounts:\\n`;\n mapping.expectedAccounts.forEach((account: ExpectedAccount, index: number) => {\n const attributes = [];\n if (account.pda) attributes.push('PDA');\n \n const attrStr = attributes.length > 0 ? ` (${attributes.join(', ')})` : '';\n error += ` ${index + 1}. ${account.name}${attrStr}\\n`;\n });\n \n if (providedAccountNames && providedAccountNames.length > 0) {\n error += `\\n📋 Provided accounts:\\n`;\n providedAccountNames.forEach((name, index) => {\n error += ` ${index + 1}. ${name}\\n`;\n });\n }\n \n if (mapping.docs) {\n error += `\\n📖 Description: ${mapping.docs}\\n`;\n }\n \n error += `\\n💡 Tip: Make sure all required accounts are provided in the correct order.`;\n \n return error;\n}\n\n/**\n * Get human-readable account requirements for an instruction\n */\nexport function getAccountRequirements(instructionName: string): string {\n const mapping = getInstructionMapping(instructionName);\n \n if (!mapping) {\n return `Unknown instruction: ${instructionName}`;\n }\n \n let requirements = `${instructionName} requires ${mapping.expectedAccounts.length} accounts:\\n\\n`;\n \n mapping.expectedAccounts.forEach((account: ExpectedAccount, index: number) => {\n const attributes = [];\n if (account.pda) attributes.push('PDA-derived');\n \n const attrStr = attributes.length > 0 ? ` [${attributes.join(', ')}]` : '';\n requirements += ` ${index + 1}. ${account.name}${attrStr}\\n`;\n });\n \n if (mapping.docs) {\n requirements += `\\nDescription: ${mapping.docs}\\n`;\n }\n \n return requirements;\n}\n\n/**\n * Get helpful suggestions for fixing account errors\n */\nexport function getAccountErrorSuggestions(\n instructionName: string,\n providedCount: number\n): string[] {\n const mapping = getInstructionMapping(instructionName);\n \n if (!mapping) {\n return [\n `Check if \"${instructionName}\" is spelled correctly`,\n 'Verify that the instruction exists in the current program version',\n 'Review the IDL file for available instructions'\n ];\n }\n \n const expectedCount = mapping.expectedAccounts.length;\n const suggestions: string[] = [];\n \n if (providedCount < expectedCount) {\n suggestions.push(`Add ${expectedCount - providedCount} more account(s)`);\n suggestions.push('Check if any required accounts are missing');\n } else if (providedCount > expectedCount) {\n suggestions.push(`Remove ${providedCount - expectedCount} extra account(s)`);\n suggestions.push('Check for duplicate accounts');\n }\n \n suggestions.push(`Review the account order - accounts must be in the exact order specified`);\n suggestions.push(`Check PDAs are correctly derived`);\n \n return suggestions;\n}\n\n/**\n * Handle instruction errors with enhanced error messages\n */\nexport function handleInstructionError(\n error: Error,\n instructionName: string,\n accountCount?: number\n): Error {\n if (error.message.includes('insufficient funds') || error.message.includes('account not found')) {\n return new InstructionValidationError(\n instructionName,\n 0,\n accountCount ?? 0,\n `${error.message}\\n\\n${getAccountRequirements(instructionName)}`,\n );\n }\n \n return error;\n}\n\n/**\n * Get instruction mapping (exported for external use)\n */\nexport function getInstructionMapping(instructionName: string): InstructionMapping | null {\n return instructionAccountMappings[instructionName as keyof typeof instructionAccountMappings] ?? null;\n}\n\n/**\n * Generate account validation error message (exported for external use)\n */\nexport function generateAccountValidationError(\n instructionName: string, \n providedCount: number, \n accountNames?: string[]\n): string {\n const mapping = getInstructionMapping(instructionName);\n if (!mapping) {\n return `Unknown instruction: ${instructionName}`;\n }\n \n let error = `Account mismatch for ${instructionName}: expected ${mapping.expectedAccounts.length} accounts, got ${providedCount}`;\n if (accountNames) {\n error += `. Provided: ${accountNames.join(', ')}`;\n }\n return error;\n}\n\n/**\n * Enhanced error message helper\n */\nexport function enhanceErrorMessage(error: Error, context: string): string {\n return `${error.message}\\n\\nContext: ${context}`;\n}\n\n/**\n * Debug instruction call helper\n */\nexport function debugInstructionCall(instructionName: string, accounts: unknown[]): string {\n return `Instruction: ${instructionName}\\nAccounts: ${accounts.length}\\nMapping: ${JSON.stringify(getInstructionMapping(instructionName), null, 2)}`;\n}\n\n/**\n * Get required signers for an instruction\n */\nexport function getRequiredSigners(instructionName: string): string[] {\n const mapping = getInstructionMapping(instructionName);\n if (!mapping) return [];\n \n return mapping.expectedAccounts\n .filter((account: ExpectedAccount) => account.name.includes('authority') || account.name.includes('signer'))\n .map((account: ExpectedAccount) => account.name);\n}\n\n/**\n * Get writable accounts for an instruction\n */\nexport function getWritableAccounts(instructionName: string): string[] {\n const mapping = getInstructionMapping(instructionName);\n if (!mapping) return [];\n \n // Return accounts that are likely writable (PDAs and data accounts)\n return mapping.expectedAccounts\n .filter((account: ExpectedAccount) => account.pda || account.name.includes('data') || account.name.includes('account'))\n .map((account: ExpectedAccount) => account.name);\n}\n\n/**\n * Get PDA accounts for an instruction\n */\nexport function getPDAAccounts(instructionName: string): string[] {\n const mapping = getInstructionMapping(instructionName);\n if (!mapping) return [];\n \n return mapping.expectedAccounts\n .filter((account: ExpectedAccount) => account.pda)\n .map((account: ExpectedAccount) => account.name);\n}\n\n/**\n * Instruction mappings constant for external access\n */\nexport const INSTRUCTION_MAPPINGS = instructionAccountMappings;","/**\n * Enhanced Client Error Utilities\n * \n * Provides wrapper functions for SDK operations that automatically enhance\n * error messages with detailed instruction account information.\n */\n\nimport { enhanceErrorMessage, debugInstructionCall } from './instruction-error-handler.js';\nimport type { Address } from '@solana/addresses';\n\n/**\n * Enhanced error class for SDK operations\n */\nexport class GhostSpeakSDKError extends Error {\n public readonly originalError: Error;\n public readonly operation: string;\n public readonly instructionName?: string;\n\n constructor(operation: string, originalError: Error, instructionName?: string) {\n const enhancedError = enhanceErrorMessage(originalError, instructionName ?? 'unknown');\n super(enhancedError);\n \n this.name = 'GhostSpeakSDKError';\n this.operation = operation;\n this.originalError = originalError;\n this.instructionName = instructionName;\n }\n}\n\n/**\n * Type for account context\n */\nexport type AccountContext = Address | { address: Address; name?: string };\n\n/**\n * Wrapper for async operations that enhances errors with instruction context\n */\nexport async function withEnhancedErrors<T>(\n operation: string,\n instructionName: string | undefined,\n fn: () => Promise<T>,\n debugAccounts?: AccountContext[]\n): Promise<T> {\n try {\n if (debugAccounts && instructionName) {\n debugInstructionCall(instructionName, debugAccounts);\n }\n \n return await fn();\n } catch (error) {\n if (error instanceof Error) {\n throw new GhostSpeakSDKError(operation, error, instructionName);\n }\n throw error;\n }\n}\n\n/**\n * Wrapper for synchronous operations that enhances errors with instruction context\n */\nexport function withEnhancedErrorsSync<T>(\n operation: string,\n instructionName: string | undefined,\n fn: () => T,\n debugAccounts?: AccountContext[]\n): T {\n try {\n if (debugAccounts && instructionName) {\n debugInstructionCall(instructionName, debugAccounts);\n }\n \n return fn();\n } catch (error) {\n if (error instanceof Error) {\n throw new GhostSpeakSDKError(operation, error, instructionName);\n }\n throw error;\n }\n}\n\n/**\n * Parse and enhance transaction errors with instruction context\n */\nexport function enhanceTransactionError(\n error: Error,\n instructionName?: string,\n accounts?: AccountContext[]\n): Error {\n // Extract common Solana transaction error patterns\n const message = error.message;\n \n // Check for instruction-specific errors\n if (message.includes('custom program error')) {\n const enhancedMessage = `${message}\\n\\nInstruction: ${instructionName ?? 'unknown'}`;\n if (accounts && instructionName) {\n const debugInfo = `\\nAccounts provided: ${accounts.length}`;\n return new Error(enhancedMessage + debugInfo);\n }\n return new Error(enhancedMessage);\n }\n \n // Check for account-related errors\n if (message.includes('insufficient') || \n message.includes('account') ||\n message.includes('signer') ||\n message.includes('writable')) {\n return new Error(enhanceErrorMessage(error, instructionName ?? 'unknown'));\n }\n \n return error;\n}\n\n/**\n * Helper to log detailed error information for debugging\n */\nexport function logEnhancedError(error: Error, context?: {\n operation?: string;\n instructionName?: string;\n accounts?: AccountContext[];\n params?: Record<string, unknown>;\n}): void {\n console.error('🚨 GhostSpeak SDK Error:', error.message);\n \n if (context) {\n if (context.operation) {\n console.error('🔧 Operation:', context.operation);\n }\n \n if (context.instructionName) {\n console.error('📋 Instruction:', context.instructionName);\n }\n \n if (context.accounts) {\n console.error('🏦 Accounts provided:', context.accounts.length);\n context.accounts.forEach((account, index) => {\n if (typeof account === 'string') {\n console.error(` ${index + 1}. ${account}`);\n } else if (typeof account === 'object') {\n const addr = 'address' in account ? account.address : account;\n const name = 'name' in account ? account.name : undefined;\n console.error(` ${index + 1}. ${addr}${name ? ` (${name})` : ''}`);\n } else {\n console.error(` ${index + 1}. ${String(account)}`);\n }\n });\n }\n \n if (context.params) {\n console.error('⚙️ Parameters:', context.params);\n }\n }\n \n // Add helpful suggestions\n console.error('\\n💡 Troubleshooting tips:');\n console.error(' 1. Check that all required accounts are provided');\n console.error(' 2. Verify account addresses are correct');\n console.error(' 3. Ensure signers have sufficient SOL for transaction fees');\n console.error(' 4. Confirm the program is deployed on the target network');\n}\n\n/**\n * Error context for operations\n */\nexport interface ErrorContext {\n operation: string;\n instructionName?: string;\n accounts?: AccountContext[];\n params?: Record<string, unknown>;\n}\n\n/**\n * Create a detailed error context for operations\n */\nexport function createErrorContext(\n operation: string,\n instructionName?: string,\n accounts?: AccountContext[],\n params?: Record<string, unknown>\n): ErrorContext {\n return {\n operation,\n instructionName,\n accounts,\n params\n };\n}\n\n/**\n * Validate common preconditions and throw enhanced errors\n */\nexport function validatePreconditions(checks: {\n condition: boolean;\n message: string;\n instructionName?: string;\n}[]): void {\n for (const check of checks) {\n if (!check.condition) {\n const error = new Error(check.message);\n const enhanced = enhanceErrorMessage(error, check.instructionName ?? 'unknown');\n throw new Error(enhanced);\n }\n }\n}\n\n/**\n * Helper to extract instruction name from operation context\n */\nexport function extractInstructionName(operation: string): string | undefined {\n // Common mapping of operations to instruction names\n const operationToInstruction: Record<string, string> = {\n 'register_agent': 'register_agent',\n 'registerAgent': 'register_agent',\n 'activate_agent': 'activate_agent',\n 'activateAgent': 'activate_agent',\n 'update_agent': 'update_agent',\n 'updateAgent': 'update_agent',\n 'create_service_listing': 'create_service_listing',\n 'createServiceListing': 'create_service_listing',\n 'create_escrow': 'create_escrow',\n 'createEscrow': 'create_escrow',\n 'complete_escrow': 'complete_escrow',\n 'completeEscrow': 'complete_escrow',\n 'create_job_posting': 'create_job_posting',\n 'createJobPosting': 'create_job_posting',\n 'apply_to_job': 'apply_to_job',\n 'applyToJob': 'apply_to_job',\n 'submit_work_delivery': 'submit_work_delivery',\n 'submitWorkDelivery': 'submit_work_delivery',\n 'verify_work_delivery': 'verify_work_delivery',\n 'verifyWorkDelivery': 'verify_work_delivery',\n 'reject_work_delivery': 'reject_work_delivery',\n 'rejectWorkDelivery': 'reject_work_delivery',\n 'create_work_order': 'create_work_order',\n 'createWorkOrder': 'create_work_order',\n 'create_channel': 'create_channel',\n 'createChannel': 'create_channel',\n 'send_message': 'send_message',\n 'sendMessage': 'send_message',\n 'file_dispute': 'file_dispute',\n 'fileDispute': 'file_dispute',\n 'resolve_dispute': 'resolve_dispute',\n 'resolveDispute': 'resolve_dispute'\n };\n \n return operationToInstruction[operation];\n}\n\n/**\n * Work order specific error messages\n */\nexport function getWorkOrderErrorMessage(instructionName: string, accountCount: number): string {\n const errorMessages: Record<string, (count: number) => string> = {\n 'verify_work_delivery': (count) => \n count < 4 \n ? `Work delivery verification requires 4 accounts: workOrder, workDelivery, client, clock. Only ${count} provided.`\n : 'Work delivery verification failed due to invalid account configuration.',\n \n 'submit_work_delivery': (count) =>\n count < 5\n ? `Work delivery submission requires 5 accounts: workDelivery, workOrder, provider, clock, systemProgram. Only ${count} provided.`\n : 'Work delivery submission failed due to invalid account configuration.',\n \n 'reject_work_delivery': (count) =>\n count < 4\n ? `Work delivery rejection requires 4 accounts: workOrder, workDelivery, client, clock. Only ${count} provided.`\n : 'Work delivery rejection failed due to invalid account configuration.',\n \n 'create_work_order': (count) =>\n count < 3\n ? `Work order creation requires at least 3 accounts: workOrder, client, systemProgram. Only ${count} provided.`\n : 'Work order creation failed due to invalid account configuration.'\n };\n\n const getErrorMessage = errorMessages[instructionName];\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (getErrorMessage) {\n return getErrorMessage(accountCount);\n }\n\n return `Instruction ${instructionName} failed with ${accountCount} accounts provided.`;\n}\n\n// Export all utilities\nexport default {\n GhostSpeakSDKError,\n withEnhancedErrors,\n withEnhancedErrorsSync,\n enhanceTransactionError,\n logEnhancedError,\n createErrorContext,\n validatePreconditions,\n extractInstructionName,\n getWorkOrderErrorMessage\n};","/**\n * IPFS client implementation with multiple provider support\n */\n\nimport './text-encoder-polyfill.js'\n\n// Use global fetch (available in Node.js 18+ and all modern browsers)\ndeclare const fetch: typeof globalThis.fetch\n// Node.js globals for Buffer operations\ndeclare const btoa: (str: string) => string\ndeclare const crypto: typeof globalThis.crypto\n\nimport type {\n IPFSConfig,\n IPFSProviderConfig,\n IPFSUploadOptions,\n IPFSUploadResult,\n IPFSRetrievalOptions,\n IPFSRetrievalResult,\n IPFSPinResult,\n IPFSOperationResult,\n ContentStorageResult,\n IPFSContentMetadata\n} from '../types/ipfs-types.js'\nimport { isIPFSUploadResponse } from '../types/index.js'\nimport { TestIPFSProvider } from './test-ipfs-provider.js'\n\n/**\n * Provider interface for different IPFS services\n */\ninterface IPFSProvider {\n upload(content: string | Uint8Array, options?: IPFSUploadOptions): Promise<IPFSUploadResult>\n retrieve(hash: string, options?: IPFSRetrievalOptions): Promise<string | Uint8Array>\n pin(hash: string): Promise<IPFSPinResult>\n unpin(hash: string): Promise<IPFSPinResult>\n}\n\n/**\n * Pinata IPFS provider implementation\n */\nclass PinataProvider implements IPFSProvider {\n constructor(private config: IPFSProviderConfig) {}\n\n async upload(content: string | Uint8Array, options?: IPFSUploadOptions): Promise<IPFSUploadResult> {\n const endpoint = this.config.endpoint ?? 'https://api.pinata.cloud'\n const formData = new FormData()\n \n // Convert content to blob with proper type casting\n const blob = new Blob([content as BlobPart], { \n type: options?.contentType ?? 'application/octet-stream' \n })\n formData.append('file', blob, options?.filename ?? 'content')\n \n // Add metadata if provided\n if (options?.metadata) {\n formData.append('pinataMetadata', JSON.stringify({\n name: options.filename ?? 'ghostspeak-content',\n keyvalues: options.metadata\n }))\n }\n\n const response = await fetch(`${endpoint}/pinning/pinFileToIPFS`, {\n method: 'POST',\n headers: {\n 'Authorization': `Bearer ${this.config.jwt ?? this.config.apiKey}`,\n ...this.config.headers\n },\n body: formData\n })\n\n if (!response.ok) {\n const errorText = await response.text()\n throw new Error(`Pinata upload failed: ${response.status} ${errorText}`)\n }\n\n const result: unknown = await response.json()\n const size = typeof content === 'string' ? new TextEncoder().encode(content).length : content.length\n\n if (!isIPFSUploadResponse(result)) {\n throw new Error('Invalid IPFS upload response format')\n }\n\n return {\n hash: result.IpfsHash,\n uri: `ipfs://${result.IpfsHash}`,\n size,\n timestamp: Date.now(),\n pinned: true, // Pinata automatically pins\n gateways: [\n `https://gateway.pinata.cloud/ipfs/${result.IpfsHash}`,\n `https://ipfs.io/ipfs/${result.IpfsHash}`\n ]\n }\n }\n\n async retrieve(hash: string, options?: IPFSRetrievalOptions): Promise<string | Uint8Array> {\n const gateway = options?.gateway ?? 'https://gateway.pinata.cloud'\n const url = `${gateway}/ipfs/${hash}`\n \n const response = await fetch(url, {\n signal: options?.timeout ? AbortSignal.timeout(options.timeout) : undefined\n })\n\n if (!response.ok) {\n throw new Error(`Failed to retrieve from IPFS: ${response.status} ${response.statusText}`)\n }\n\n const contentType = response.headers.get('content-type')\n if (contentType?.startsWith('text/') || contentType?.includes('json')) {\n return response.text()\n } else {\n return new Uint8Array(await response.arrayBuffer())\n }\n }\n\n async pin(hash: string): Promise<IPFSPinResult> {\n const endpoint = this.config.endpoint ?? 'https://api.pinata.cloud'\n \n const response = await fetch(`${endpoint}/pinning/pinByHash`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': `Bearer ${this.config.jwt ?? this.config.apiKey}`,\n ...this.config.headers\n },\n body: JSON.stringify({ hashToPin: hash })\n })\n\n const success = response.ok\n return {\n hash,\n success,\n status: success ? 'pinned' : 'failed',\n error: success ? undefined : `Pin failed: ${response.status}`\n }\n }\n\n async unpin(hash: string): Promise<IPFSPinResult> {\n const endpoint = this.config.endpoint ?? 'https://api.pinata.cloud'\n \n const response = await fetch(`${endpoint}/pinning/unpin/${hash}`, {\n method: 'DELETE',\n headers: {\n 'Authorization': `Bearer ${this.config.jwt ?? this.config.apiKey}`,\n ...this.config.headers\n }\n })\n\n const success = response.ok\n return {\n hash,\n success,\n status: success ? 'pinned' : 'failed', // Status after unpin\n error: success ? undefined : `Unpin failed: ${response.status}`\n }\n }\n}\n\n/**\n * HTTP Client provider for generic IPFS nodes\n */\nclass HttpClientProvider implements IPFSProvider {\n constructor(private config: IPFSProviderConfig) {}\n\n async upload(content: string | Uint8Array, options?: IPFSUploadOptions): Promise<IPFSUploadResult> {\n const endpoint = this.config.endpoint ?? 'http://localhost:5001'\n const formData = new FormData()\n \n const blob = new Blob([content as BlobPart], { \n type: options?.contentType ?? 'application/octet-stream' \n })\n formData.append('file', blob, options?.filename ?? 'content')\n\n const response = await fetch(`${endpoint}/api/v0/add`, {\n method: 'POST',\n body: formData\n })\n\n if (!response.ok) {\n throw new Error(`IPFS HTTP upload failed: ${response.status}`)\n }\n\n const result: unknown = await response.json()\n const size = typeof content === 'string' ? new TextEncoder().encode(content).length : content.length\n\n // Validate IPFS HTTP API response format\n if (typeof result !== 'object' || result === null) {\n throw new Error('Invalid IPFS HTTP API response')\n }\n \n const ipfsResult = result as Record<string, unknown>\n if (typeof ipfsResult.Hash !== 'string') {\n throw new Error('IPFS HTTP API response missing Hash field')\n }\n\n const hash = ipfsResult.Hash as string\n return {\n hash,\n uri: `ipfs://${hash}`,\n size,\n timestamp: Date.now(),\n pinned: options?.pin !== false, // Default to pinned\n gateways: [\n `${endpoint}/ipfs/${hash}`,\n `https://ipfs.io/ipfs/${hash}`\n ]\n }\n }\n\n async retrieve(hash: string, options?: IPFSRetrievalOptions): Promise<string | Uint8Array> {\n const gateway = options?.gateway ?? this.config.endpoint?.replace('/api/v0', '') ?? 'https://ipfs.io'\n const url = `${gateway}/ipfs/${hash}`\n \n const response = await fetch(url, {\n signal: options?.timeout ? AbortSignal.timeout(options.timeout) : undefined\n })\n\n if (!response.ok) {\n throw new Error(`Failed to retrieve from IPFS: ${response.status}`)\n }\n\n const contentType = response.headers.get('content-type')\n if (contentType?.startsWith('text/') || contentType?.includes('json')) {\n return response.text()\n } else {\n return new Uint8Array(await response.arrayBuffer())\n }\n }\n\n async pin(hash: string): Promise<IPFSPinResult> {\n const endpoint = this.config.endpoint ?? 'http://localhost:5001'\n \n const response = await fetch(`${endpoint}/api/v0/pin/add?arg=${hash}`, {\n method: 'POST'\n })\n\n const success = response.ok\n return {\n hash,\n success,\n status: success ? 'pinned' : 'failed',\n error: success ? undefined : `Pin failed: ${response.status}`\n }\n }\n\n async unpin(hash: string): Promise<IPFSPinResult> {\n const endpoint = this.config.endpoint ?? 'http://localhost:5001'\n \n const response = await fetch(`${endpoint}/api/v0/pin/rm?arg=${hash}`, {\n method: 'POST'\n })\n\n const success = response.ok\n return {\n hash,\n success,\n status: success ? 'pinned' : 'failed',\n error: success ? undefined : `Unpin failed: ${response.status}`\n }\n }\n}\n\n/**\n * Main IPFS client with multiple provider support and fallback\n */\nexport class IPFSClient {\n private providers: IPFSProvider[] = []\n private cache = new Map<string, { content: string | Uint8Array; timestamp: number }>()\n\n constructor(private config: IPFSConfig) {\n this.initializeProviders()\n }\n\n private initializeProviders(): void {\n // Initialize primary provider\n this.providers.push(this.createProvider(this.config.provider))\n \n // Initialize fallback providers\n if (this.config.fallbackProviders) {\n for (const providerConfig of this.config.fallbackProviders) {\n this.providers.push(this.createProvider(providerConfig))\n }\n }\n }\n\n private createProvider(config: IPFSProviderConfig): IPFSProvider {\n switch (config.name) {\n case 'pinata':\n return new PinataProvider(config)\n case 'ipfs-http-client':\n case 'custom':\n return new HttpClientProvider(config)\n case 'test':\n return new TestIPFSProvider(config)\n default:\n throw new Error(`Unsupported IPFS provider: ${config.name}`)\n }\n }\n\n /**\n * Upload content to IPFS with automatic fallback\n */\n async upload(content: string | Uint8Array, options?: IPFSUploadOptions): Promise<IPFSOperationResult<IPFSUploadResult>> {\n const startTime = Date.now()\n let lastError: Error | undefined\n\n for (let i = 0; i < this.providers.length; i++) {\n const provider = this.providers[i]\n \n try {\n console.log(`📤 Attempting IPFS upload with provider ${i + 1}/${this.providers.length}`)\n const result = await this.withRetry(\n () => provider.upload(content, options),\n this.config.maxRetries ?? 3,\n this.config.retryDelay ?? 1000\n )\n \n console.log(`✅ IPFS upload successful: ${result.hash}`)\n return {\n success: true,\n data: result,\n duration: Date.now() - startTime,\n provider: this.config.provider.name\n }\n } catch (error) {\n console.warn(`❌ Provider ${i + 1} upload failed:`, error instanceof Error ? error.message : String(error))\n lastError = error instanceof Error ? error : new Error(String(error))\n }\n }\n\n return {\n success: false,\n error: 'UPLOAD_FAILED',\n message: `All providers failed. Last error: ${lastError?.message}`,\n duration: Date.now() - startTime\n }\n }\n\n /**\n * Retrieve content from IPFS with caching and fallback\n */\n async retrieve(hash: string, options?: IPFSRetrievalOptions): Promise<IPFSOperationResult<IPFSRetrievalResult>> {\n const startTime = Date.now()\n \n // Check cache first\n if (this.config.enableCache && options?.cache !== false) {\n const cached = this.cache.get(hash)\n if (cached && (Date.now() - cached.timestamp) < (this.config.cacheTTL ?? 300000)) {\n return {\n success: true,\n data: {\n content: cached.content,\n size: typeof cached.content === 'string' ? cached.content.length : cached.content.length,\n hash,\n gateway: 'cache',\n fromCache: true\n },\n duration: Date.now() - startTime\n }\n }\n }\n\n let lastError: Error | undefined\n const gateways = options?.gateway ? [options.gateway] : (this.config.gateways ?? ['https://ipfs.io'])\n\n for (const gateway of gateways) {\n for (const provider of this.providers) {\n try {\n const content = await this.withRetry(\n () => provider.retrieve(hash, { ...options, gateway }),\n this.config.maxRetries ?? 3,\n this.config.retryDelay ?? 1000\n )\n\n // Cache the result\n if (this.config.enableCache) {\n this.cache.set(hash, { content, timestamp: Date.now() })\n }\n\n return {\n success: true,\n data: {\n content,\n size: typeof content === 'string' ? content.length : content.length,\n hash,\n gateway,\n fromCache: false\n },\n duration: Date.now() - startTime\n }\n } catch (error) {\n lastError = error instanceof Error ? error : new Error(String(error))\n }\n }\n }\n\n return {\n success: false,\n error: 'RETRIEVAL_FAILED',\n message: `Failed to retrieve from all gateways. Last error: ${lastError?.message}`,\n duration: Date.now() - startTime\n }\n }\n\n /**\n * Pin content on IPFS\n */\n async pin(hash: string): Promise<IPFSOperationResult<IPFSPinResult>> {\n const startTime = Date.now()\n \n for (const provider of this.providers) {\n try {\n const result = await provider.pin(hash)\n return {\n success: result.success,\n data: result,\n duration: Date.now() - startTime\n }\n } catch (error) {\n console.warn('Pin attempt failed:', error)\n }\n }\n\n return {\n success: false,\n error: 'PIN_FAILED',\n message: 'All pin attempts failed',\n duration: Date.now() - startTime\n }\n }\n\n /**\n * Store content with automatic IPFS decision based on size\n */\n async storeContent(\n content: string, \n type: IPFSContentMetadata['type'],\n options?: IPFSUploadOptions & { forceIpfs?: boolean }\n ): Promise<ContentStorageResult> {\n const contentSize = new TextEncoder().encode(content).length\n const sizeThreshold = this.config.sizeThreshold ?? 800 // Default 800 bytes to stay under transaction limits\n \n const shouldUseIpfs = options?.forceIpfs ?? contentSize > sizeThreshold\n\n if (!shouldUseIpfs) {\n // Store inline as data URI\n const dataUri = `data:application/json;base64,${btoa(content)}`\n return {\n uri: dataUri,\n useIpfs: false,\n size: contentSize\n }\n }\n\n // Store on IPFS\n const uploadResult = await this.upload(content, options)\n \n if (!uploadResult.success || !uploadResult.data) {\n throw new Error(`IPFS upload failed: ${uploadResult.message}`)\n }\n\n const ipfsMetadata: IPFSContentMetadata = {\n type,\n originalSize: contentSize,\n ipfsHash: uploadResult.data.hash,\n encoding: 'utf8',\n compression: 'none',\n mimeType: 'application/json',\n uploadedAt: uploadResult.data.timestamp,\n pinned: uploadResult.data.pinned,\n checksum: await this.calculateChecksum(content)\n }\n\n return {\n uri: uploadResult.data.uri,\n useIpfs: true,\n ipfsMetadata,\n size: contentSize\n }\n }\n\n /**\n * Retrieve content that may be stored inline or on IPFS\n */\n async retrieveContent(uri: string): Promise<string> {\n if (uri.startsWith('data:')) {\n // Inline data URI\n const base64Data = uri.split(',')[1]\n if (!base64Data) {\n throw new Error('Invalid data URI format')\n }\n return atob(base64Data)\n }\n \n if (uri.startsWith('ipfs://')) {\n // IPFS URI\n const hash = uri.replace('ipfs://', '')\n const result = await this.retrieve(hash)\n \n if (!result.success || !result.data) {\n throw new Error(`Failed to retrieve IPFS content: ${result.message}`)\n }\n \n return typeof result.data.content === 'string' \n ? result.data.content \n : new TextDecoder().decode(result.data.content)\n }\n \n throw new Error(`Unsupported URI format: ${uri}`)\n }\n\n /**\n * Retry wrapper for operations\n */\n private async withRetry<T>(\n operation: () => Promise<T>,\n maxRetries: number,\n delay: number\n ): Promise<T> {\n let lastError: Error\n \n for (let attempt = 0; attempt <= maxRetries; attempt++) {\n try {\n return await operation()\n } catch (error) {\n lastError = error instanceof Error ? error : new Error(String(error))\n \n if (attempt < maxRetries) {\n console.log(`⏳ Retrying in ${delay}ms... (attempt ${attempt + 1}/${maxRetries})`)\n await new Promise(resolve => setTimeout(resolve, delay))\n }\n }\n }\n \n throw lastError!\n }\n\n /**\n * Calculate checksum for content integrity\n */\n private async calculateChecksum(content: string): Promise<string> {\n const encoder = new TextEncoder()\n const data = encoder.encode(content)\n const hashBuffer = await crypto.subtle.digest('SHA-256', data)\n const hashArray = Array.from(new Uint8Array(hashBuffer))\n return hashArray.map(b => b.toString(16).padStart(2, '0')).join('')\n }\n\n /**\n * Clear cache\n */\n clearCache(): void {\n this.cache.clear()\n }\n\n /**\n * Get cache stats\n */\n getCacheStats(): { size: number; keys: string[] } {\n return {\n size: this.cache.size,\n keys: Array.from(this.cache.keys())\n }\n }\n}","/**\n * Test IPFS provider for beta testing without external dependencies\n */\n\nimport './text-encoder-polyfill.js'\nimport type {\n IPFSProviderConfig,\n IPFSUploadOptions,\n IPFSUploadResult,\n IPFSRetrievalOptions,\n IPFSPinResult\n} from '../types/ipfs-types.js'\n\ninterface IPFSProvider {\n upload(content: string | Uint8Array, options?: IPFSUploadOptions): Promise<IPFSUploadResult>\n retrieve(hash: string, options?: IPFSRetrievalOptions): Promise<string | Uint8Array>\n pin(hash: string): Promise<IPFSPinResult>\n unpin(hash: string): Promise<IPFSPinResult>\n}\n\n// Shared storage for all test IPFS provider instances\nconst sharedTestStorage = new Map<string, { content: string | Uint8Array; pinned: boolean }>()\nlet sharedUploadCount = 0\n\n/**\n * In-memory test IPFS provider for development and testing\n * This provider simulates IPFS behavior without requiring external services\n */\nexport class TestIPFSProvider implements IPFSProvider {\n // Use shared storage across all instances\n private storage = sharedTestStorage\n private uploadCount = 0\n\n constructor(private config: IPFSProviderConfig) {\n console.log('🧪 Initialized TestIPFSProvider for local testing (shared storage)')\n }\n\n async upload(content: string | Uint8Array, options?: IPFSUploadOptions): Promise<IPFSUploadResult> {\n // Generate a fake but deterministic IPFS hash\n sharedUploadCount++\n const contentStr = typeof content === 'string' ? content : new TextDecoder().decode(content)\n const hash = `Qm${this.generateHash(contentStr)}_test_${sharedUploadCount}`\n \n // Store the content\n this.storage.set(hash, {\n content,\n pinned: options?.pin !== false\n })\n\n const size = typeof content === 'string' ? new TextEncoder().encode(content).length : content.length\n\n console.log(`📦 Test IPFS upload: ${hash} (${size} bytes)`)\n\n return {\n hash,\n uri: `ipfs://${hash}`,\n size,\n timestamp: Date.now(),\n pinned: options?.pin !== false,\n gateways: [\n `http://localhost:8080/ipfs/${hash}`,\n `https://test.ipfs.io/ipfs/${hash}`\n ]\n }\n }\n\n async retrieve(hash: string): Promise<string | Uint8Array> {\n const stored = this.storage.get(hash)\n \n if (!stored) {\n throw new Error(`Test IPFS: Content not found for hash ${hash}`)\n }\n\n console.log(`📥 Test IPFS retrieve: ${hash}`)\n \n // Simulate network delay\n await new Promise(resolve => setTimeout(resolve, 100))\n \n return stored.content\n }\n\n async pin(hash: string): Promise<IPFSPinResult> {\n const stored = this.storage.get(hash)\n \n if (!stored) {\n return {\n hash,\n success: false,\n status: 'failed',\n error: `Content not found: ${hash}`\n }\n }\n\n stored.pinned = true\n console.log(`📌 Test IPFS pin: ${hash}`)\n\n return {\n hash,\n success: true,\n status: 'pinned'\n }\n }\n\n async unpin(hash: string): Promise<IPFSPinResult> {\n const stored = this.storage.get(hash)\n \n if (!stored) {\n return {\n hash,\n success: false,\n status: 'failed',\n error: `Content not found: ${hash}`\n }\n }\n\n stored.pinned = false\n console.log(`📌 Test IPFS unpin: ${hash}`)\n\n return {\n hash,\n success: true,\n status: 'pinned' // Status after operation\n }\n }\n\n /**\n * Generate a fake but consistent hash for testing\n */\n private generateHash(content: string): string {\n let hash = 0\n for (let i = 0; i < content.length; i++) {\n const char = content.charCodeAt(i)\n hash = ((hash << 5) - hash) + char\n hash = hash & hash // Convert to 32-bit integer\n }\n \n // Convert to base58-like string (simplified for testing)\n const chars = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'\n let result = ''\n let value = Math.abs(hash)\n \n while (value > 0 && result.length < 40) {\n result = chars[value % chars.length] + result\n value = Math.floor(value / chars.length)\n }\n \n // Pad to make it look like a real IPFS hash\n while (result.length < 40) {\n result = chars[Math.floor(Math.random() * chars.length)] + result\n }\n \n return result\n }\n\n /**\n * Get storage statistics for testing\n */\n getStats(): { count: number; totalSize: number; pinned: number } {\n let totalSize = 0\n let pinned = 0\n \n for (const data of this.storage.values()) {\n const size = typeof data.content === 'string' \n ? new TextEncoder().encode(data.content).length \n : data.content.length\n totalSize += size\n if (data.pinned) pinned++\n }\n \n return {\n count: this.storage.size,\n totalSize,\n pinned\n }\n }\n\n /**\n * Clear all stored content (for testing)\n */\n clear(): void {\n this.storage.clear()\n sharedUploadCount = 0\n console.log('🧹 Test IPFS storage cleared')\n }\n \n /**\n * Get the shared storage (for debugging)\n */\n static getSharedStorage(): Map<string, { content: string | Uint8Array; pinned: boolean }> {\n return sharedTestStorage\n }\n}","/**\n * System Program Addresses for Solana\n * \n * These are the standard system program addresses used across Solana.\n * Using constants instead of hardcoded values improves maintainability\n * and ensures consistency across the SDK.\n */\n\nimport { address, type Address } from '@solana/addresses'\nimport { \n SYSVAR_CLOCK_ADDRESS as SOLANA_SYSVAR_CLOCK_ADDRESS,\n SYSVAR_RENT_ADDRESS as SOLANA_SYSVAR_RENT_ADDRESS \n} from '@solana/sysvars'\n\n/**\n * System Program\n * The core system program that handles account creation, transfers, and other system operations\n */\nexport const SYSTEM_PROGRAM_ADDRESS = address('11111111111111111111111111111111')\n\n/**\n * System Program Address (alternative constant name)\n * This should be the same as SYSTEM_PROGRAM_ADDRESS - there is no \"32 variant\"\n */\nexport const SYSTEM_PROGRAM_ADDRESS_32 = address('11111111111111111111111111111111')\n\n/**\n * Clock Sysvar\n * Provides cluster time information\n */\nexport const SYSVAR_CLOCK_ADDRESS = SOLANA_SYSVAR_CLOCK_ADDRESS\n\n/**\n * Rent Sysvar\n * Provides rent information for accounts\n */\nexport const SYSVAR_RENT_ADDRESS = SOLANA_SYSVAR_RENT_ADDRESS\n\n/**\n * Recent Blockhashes Sysvar\n * Provides recent blockhash information\n */\nexport const SYSVAR_RECENT_BLOCKHASHES_ADDRESS = address('SysvarRecentB1ockHashes11111111111111111111')\n\n/**\n * Stake History Sysvar\n * Provides stake history information\n */\nexport const SYSVAR_STAKE_HISTORY_ADDRESS = address('SysvarStakeHistory1111111111111111111111111')\n\n/**\n * Instructions Sysvar\n * Provides instruction introspection\n */\nexport const SYSVAR_INSTRUCTIONS_ADDRESS = address('Sysvar1nstructions1111111111111111111111111')\n\n/**\n * SPL Token Program\n * The standard SPL Token program\n */\nexport const TOKEN_PROGRAM_ADDRESS = address('TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA')\n\n/**\n * SPL Token 2022 Program (Token Extensions)\n * The new token program with extended functionality\n */\nexport const TOKEN_2022_PROGRAM_ADDRESS = address('TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb')\n\n/**\n * Associated Token Account Program\n * Manages associated token accounts\n */\nexport const ASSOCIATED_TOKEN_PROGRAM_ADDRESS = address('ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL')\n\n/**\n * Native SOL Mint Address (wSOL) - Original Token Program\n * The mint address for wrapped SOL on the original Token program\n */\nexport const NATIVE_MINT_ADDRESS_TOKEN = address('So11111111111111111111111111111111111111112')\n\n/**\n * Native SOL Mint Address (wSOL) - Token 2022 Program\n * The mint address for wrapped SOL on Token 2022\n * This is the one used by GhostSpeak escrow operations\n */\nexport const NATIVE_MINT_ADDRESS = address('9pan9bMn5HatX4EJdBwg9VgCa7Uz5HL8N1m5D3NdXejP')\n\n/**\n * Metaplex Token Metadata Program\n * Manages NFT and token metadata\n */\nexport const TOKEN_METADATA_PROGRAM_ADDRESS = address('metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s')\n\n/**\n * Helper function to get system program address based on instruction requirements\n */\nexport function getSystemProgramAddress(use32Variant = false): Address {\n return use32Variant ? SYSTEM_PROGRAM_ADDRESS_32 : SYSTEM_PROGRAM_ADDRESS\n}\n\n/**\n * Export all addresses as a single object for convenience\n */\nexport const SYSTEM_ADDRESSES = {\n systemProgram: SYSTEM_PROGRAM_ADDRESS,\n systemProgram32: SYSTEM_PROGRAM_ADDRESS_32,\n clock: SYSVAR_CLOCK_ADDRESS,\n rent: SYSVAR_RENT_ADDRESS,\n recentBlockhashes: SYSVAR_RECENT_BLOCKHASHES_ADDRESS,\n stakeHistory: SYSVAR_STAKE_HISTORY_ADDRESS,\n instructions: SYSVAR_INSTRUCTIONS_ADDRESS,\n tokenProgram: TOKEN_PROGRAM_ADDRESS,\n token2022Program: TOKEN_2022_PROGRAM_ADDRESS,\n associatedTokenProgram: ASSOCIATED_TOKEN_PROGRAM_ADDRESS,\n tokenMetadataProgram: TOKEN_METADATA_PROGRAM_ADDRESS,\n} as const","import type { Address } from '@solana/kit'\n\n/**\n * Reputation tier levels\n */\nexport enum ReputationTier {\n None = 'None',\n Bronze = 'Bronze',\n Silver = 'Silver',\n Gold = 'Gold',\n Platinum = 'Platinum'\n}\n\n/**\n * Badge types for reputation achievements\n */\nexport enum BadgeType {\n FirstJob = 'FirstJob',\n TenJobs = 'TenJobs',\n HundredJobs = 'HundredJobs',\n ThousandJobs = 'ThousandJobs',\n PerfectRating = 'PerfectRating',\n QuickResponder = 'QuickResponder',\n HighEarner = 'HighEarner',\n DisputeResolver = 'DisputeResolver',\n CategoryExpert = 'CategoryExpert',\n CrossCategoryMaster = 'CrossCategoryMaster'\n}\n\n/**\n * Reputation calculation factors with weights\n */\nexport interface ReputationFactors {\n /** Completion rate weight (0-100) */\n completionWeight: number\n /** Quality score weight (0-100) */\n qualityWeight: number\n /** Timeliness weight (0-100) */\n timelinessWeight: number\n /** Client satisfaction weight (0-100) */\n satisfactionWeight: number\n /** Dispute resolution weight (0-100) */\n disputeWeight: number\n}\n\n/**\n * Category-specific reputation data\n */\nexport interface CategoryReputation {\n /** Category identifier (e.g., \"defi\", \"nft\", \"gaming\") */\n category: string\n /** Current reputation score in this category (basis points) */\n score: number\n /** Total completed jobs in this category */\n completedJobs: number\n /** Average completion time in seconds */\n avgCompletionTime: number\n /** Quality ratings sum */\n qualitySum: number\n /** Number of quality ratings */\n qualityCount: number\n /** Last activity timestamp */\n lastActivity: number\n /** Total earnings in this category */\n totalEarnings: number\n}\n\n/**\n * Performance snapshot for historical tracking\n */\nexport interface PerformanceSnapshot {\n /** Timestamp of snapshot */\n timestamp: number\n /** Reputation score at this time */\n score: number\n /** Jobs completed in this period */\n jobsCompleted: number\n /** Average quality rating */\n avgQuality: number\n}\n\n/**\n * Reputation badge structure\n */\nexport interface ReputationBadge {\n /** Badge identifier */\n badgeType: BadgeType\n /** Timestamp when earned */\n earnedAt: number\n /** Associated achievement value */\n achievementValue: number\n}\n\n/**\n * Main reputation data structure\n */\nexport interface ReputationData {\n /** Agent public key */\n agent: Address\n /** Overall reputation score (basis points) */\n overallScore: number\n /** Current reputation tier */\n tier: ReputationTier\n /** Category-specific reputations */\n categoryReputations: CategoryReputation[]\n /** Total staked reputation tokens */\n stakedAmount: number\n /** Reputation calculation factors */\n factors: ReputationFactors\n /** Total completed jobs across all categories */\n totalJobsCompleted: number\n /** Total failed/cancelled jobs */\n totalJobsFailed: number\n /** Average response time in seconds */\n avgResponseTime: number\n /** Number of disputes filed against agent */\n disputesAgainst: number\n /** Number of disputes resolved favorably */\n disputesResolved: number\n /** Last reputation update timestamp */\n lastUpdated: number\n /** Creation timestamp */\n createdAt: number\n /** Historical performance data */\n performanceHistory: PerformanceSnapshot[]\n /** Reputation badges earned */\n badges: ReputationBadge[]\n /** Cross-category reputation transfer enabled */\n crossCategoryEnabled: boolean\n}\n\n/**\n * Job performance data for reputation calculation\n */\nexport interface JobPerformance {\n /** Whether job was completed successfully */\n completed: boolean\n /** Quality rating (0-100) */\n qualityRating: number\n /** Expected duration in seconds */\n expectedDuration: number\n /** Actual duration in seconds */\n actualDuration: number\n /** Client satisfaction (0-100) */\n clientSatisfaction: number\n /** Whether there was a dispute */\n hadDispute: boolean\n /** Whether dispute was resolved favorably for agent */\n disputeResolvedFavorably: boolean\n /** Job category */\n category: string\n /** Payment amount */\n paymentAmount: number\n}\n\n/**\n * Reputation calculation result\n */\nexport interface ReputationCalculationResult {\n /** New overall score */\n overallScore: number\n /** Score for this specific job */\n jobScore: number\n /** Category-specific score */\n categoryScore: number\n /** New reputation tier */\n tier: ReputationTier\n /** Badges earned from this update */\n newBadges: BadgeType[]\n /** Whether fraud was detected */\n fraudDetected: boolean\n /** Fraud risk score (0-100) */\n fraudRiskScore: number\n}\n\n/**\n * Reputation query filters\n */\nexport interface ReputationQueryFilters {\n /** Filter by minimum score */\n minScore?: number\n /** Filter by maximum score */\n maxScore?: number\n /** Filter by tier */\n tier?: ReputationTier\n /** Filter by category */\n category?: string\n /** Filter by minimum jobs completed */\n minJobsCompleted?: number\n /** Filter by badges */\n requiredBadges?: BadgeType[]\n /** Include historical data */\n includeHistory?: boolean\n /** Maximum number of results to return */\n limit?: number\n}\n\n/**\n * Reputation update event\n */\nexport interface ReputationUpdateEvent {\n agent: Address\n previousScore: number\n newScore: number\n category: string\n timestamp: number\n}\n\n/**\n * Constants for reputation calculations\n */\nexport const REPUTATION_CONSTANTS = {\n /** Maximum reputation score (basis points) */\n MAX_REPUTATION_SCORE: 10000,\n /** Minimum reputation score for slashing */\n MIN_REPUTATION_FOR_SLASH: 1000,\n /** Reputation decay rate per day (basis points) */\n REPUTATION_DECAY_RATE_BPS: 10,\n /** Tier thresholds (basis points) */\n BRONZE_TIER_THRESHOLD: 2000,\n SILVER_TIER_THRESHOLD: 5000,\n GOLD_TIER_THRESHOLD: 7500,\n PLATINUM_TIER_THRESHOLD: 9000,\n /** Maximum categories per agent */\n MAX_REPUTATION_CATEGORIES: 10,\n /** Maximum performance history entries */\n MAX_PERFORMANCE_HISTORY: 365,\n /** Maximum badges per agent */\n MAX_BADGES: 20\n}\n\n/**\n * Fraud detection patterns\n */\nexport interface FraudPattern {\n /** Pattern identifier */\n patternId: string\n /** Pattern description */\n description: string\n /** Risk score contribution (0-100) */\n riskScore: number\n /** Detection function */\n detect: (data: ReputationData, job: JobPerformance) => boolean\n}\n\n/**\n * Reputation analytics data\n */\nexport interface ReputationAnalytics {\n /** Average score across all agents */\n averageScore: number\n /** Distribution of tiers */\n tierDistribution: Record<ReputationTier, number>\n /** Top categories by activity */\n topCategories: { category: string; jobCount: number }[]\n /** Fraud detection statistics */\n fraudStats: {\n totalDetected: number\n falsePositiveRate: number\n patterns: Record<string, number>\n }\n}","import {\n type ReputationData,\n type JobPerformance,\n type ReputationCalculationResult,\n type ReputationFactors,\n type CategoryReputation,\n type PerformanceSnapshot,\n type FraudPattern,\n ReputationTier,\n BadgeType,\n REPUTATION_CONSTANTS\n} from '../types/reputation-types'\n\n/**\n * Advanced reputation calculation engine\n */\nexport class ReputationCalculator {\n private fraudPatterns: FraudPattern[] = []\n\n constructor() {\n this.initializeFraudPatterns()\n }\n\n /**\n * Initialize fraud detection patterns\n */\n private initializeFraudPatterns(): void {\n this.fraudPatterns = [\n {\n patternId: 'sudden_spike',\n description: 'Sudden spike in reputation without corresponding activity',\n riskScore: 80,\n detect: (data: ReputationData) => {\n if (data.performanceHistory.length < 2) return false\n const recent = data.performanceHistory[data.performanceHistory.length - 1]\n const previous = data.performanceHistory[data.performanceHistory.length - 2]\n const spike = recent.score - previous.score\n return spike > 2000 && recent.jobsCompleted === previous.jobsCompleted\n }\n },\n {\n patternId: 'perfect_scores_only',\n description: 'All jobs have perfect scores (potential manipulation)',\n riskScore: 60,\n detect: (data: ReputationData) => {\n const recentJobs = data.performanceHistory.slice(-10)\n return recentJobs.length >= 5 && recentJobs.every(job => job.avgQuality === 100)\n }\n },\n {\n patternId: 'rapid_category_switching',\n description: 'Rapid switching between unrelated categories',\n riskScore: 40,\n detect: (data: ReputationData) => {\n if (data.categoryReputations.length < 5) return false\n const recentCategories = data.categoryReputations\n .sort((a, b) => b.lastActivity - a.lastActivity)\n .slice(0, 5)\n const daysSinceOldest = (Date.now() - recentCategories[4].lastActivity) / (1000 * 60 * 60 * 24)\n return daysSinceOldest < 7 // 5 different categories in 7 days\n }\n },\n {\n patternId: 'dispute_pattern',\n description: 'High dispute rate with suspicious resolution pattern',\n riskScore: 70,\n detect: (data: ReputationData) => {\n if (data.totalJobsCompleted < 10) return false\n const disputeRate = data.disputesAgainst / data.totalJobsCompleted\n const resolutionRate = data.disputesResolved / Math.max(1, data.disputesAgainst)\n return disputeRate > 0.3 && resolutionRate > 0.9 // High disputes but almost all resolved favorably\n }\n },\n {\n patternId: 'time_manipulation',\n description: 'Completion times significantly below expected',\n riskScore: 50,\n detect: (data: ReputationData, job: JobPerformance) => {\n return job.actualDuration < job.expectedDuration * 0.1 // Less than 10% of expected time\n }\n }\n ]\n }\n\n /**\n * Calculate reputation update based on job performance\n */\n calculateReputation(\n currentData: ReputationData,\n jobPerformance: JobPerformance\n ): ReputationCalculationResult {\n // Apply time decay first\n const decayedData = this.applyTimeDecay(currentData)\n\n // Calculate job score\n const jobScore = this.calculateWeightedScore(decayedData.factors, jobPerformance)\n\n // Update category reputation\n const categoryUpdate = this.updateCategoryReputation(\n decayedData.categoryReputations,\n jobPerformance,\n jobScore\n )\n\n // Calculate new overall score\n const overallScore = this.calculateOverallScore(categoryUpdate.categories)\n\n // Determine tier\n const tier = this.getTierFromScore(overallScore)\n\n // Check for new badges\n const newBadges = this.checkBadgeAchievements(\n decayedData,\n jobPerformance,\n overallScore\n )\n\n // Run fraud detection\n const fraudAnalysis = this.detectFraud(decayedData, jobPerformance)\n\n return {\n overallScore,\n jobScore,\n categoryScore: categoryUpdate.categoryScore,\n tier,\n newBadges,\n fraudDetected: fraudAnalysis.detected,\n fraudRiskScore: fraudAnalysis.riskScore\n }\n }\n\n /**\n * Apply time-based reputation decay\n */\n private applyTimeDecay(data: ReputationData): ReputationData {\n const currentTime = Date.now() / 1000\n const daysSinceUpdate = (currentTime - data.lastUpdated) / 86400\n\n if (daysSinceUpdate <= 0) return data\n\n const decayFactor = REPUTATION_CONSTANTS.REPUTATION_DECAY_RATE_BPS * daysSinceUpdate\n const decayMultiplier = Math.max(0, 10000 - decayFactor) / 10000\n\n // Apply decay to overall score\n const decayedOverallScore = Math.floor(data.overallScore * decayMultiplier)\n\n // Apply decay to category scores\n const decayedCategories = data.categoryReputations.map(category => {\n const categoryDaysInactive = (currentTime - category.lastActivity) / 86400\n const categoryDecay = REPUTATION_CONSTANTS.REPUTATION_DECAY_RATE_BPS * categoryDaysInactive\n const categoryMultiplier = Math.max(0, 10000 - categoryDecay) / 10000\n \n return {\n ...category,\n score: Math.floor(category.score * categoryMultiplier)\n }\n })\n\n return {\n ...data,\n overallScore: decayedOverallScore,\n categoryReputations: decayedCategories\n }\n }\n\n /**\n * Calculate weighted score based on job performance\n */\n private calculateWeightedScore(\n factors: ReputationFactors,\n jobPerformance: JobPerformance\n ): number {\n // Validate factors sum to 100\n const totalWeight = \n factors.completionWeight +\n factors.qualityWeight +\n factors.timelinessWeight +\n factors.satisfactionWeight +\n factors.disputeWeight\n\n if (totalWeight !== 100) {\n throw new Error('Reputation factors must sum to 100')\n }\n\n // Calculate individual scores\n const completionScore = jobPerformance.completed \n ? REPUTATION_CONSTANTS.MAX_REPUTATION_SCORE \n : 0\n\n const qualityScore = (jobPerformance.qualityRating * REPUTATION_CONSTANTS.MAX_REPUTATION_SCORE) / 100\n\n const timelinessScore = this.calculateTimelinessScore(\n jobPerformance.expectedDuration,\n jobPerformance.actualDuration\n )\n\n const satisfactionScore = (jobPerformance.clientSatisfaction * REPUTATION_CONSTANTS.MAX_REPUTATION_SCORE) / 100\n\n const disputeScore = this.calculateDisputeScore(jobPerformance)\n\n // Calculate weighted score\n const weightedScore = (\n completionScore * factors.completionWeight +\n qualityScore * factors.qualityWeight +\n timelinessScore * factors.timelinessWeight +\n satisfactionScore * factors.satisfactionWeight +\n disputeScore * factors.disputeWeight\n ) / 100\n\n return Math.min(weightedScore, REPUTATION_CONSTANTS.MAX_REPUTATION_SCORE)\n }\n\n /**\n * Calculate timeliness score based on expected vs actual duration\n */\n private calculateTimelinessScore(expectedDuration: number, actualDuration: number): number {\n if (actualDuration <= expectedDuration) {\n return REPUTATION_CONSTANTS.MAX_REPUTATION_SCORE\n }\n\n const delayRatio = ((actualDuration - expectedDuration) * 10000) / expectedDuration\n \n if (delayRatio > 5000) { // More than 50% delay\n return 0\n }\n\n return REPUTATION_CONSTANTS.MAX_REPUTATION_SCORE - \n (REPUTATION_CONSTANTS.MAX_REPUTATION_SCORE * delayRatio / 10000)\n }\n\n /**\n * Calculate dispute score\n */\n private calculateDisputeScore(jobPerformance: JobPerformance): number {\n if (!jobPerformance.hadDispute) {\n return REPUTATION_CONSTANTS.MAX_REPUTATION_SCORE\n }\n\n if (jobPerformance.disputeResolvedFavorably) {\n return REPUTATION_CONSTANTS.MAX_REPUTATION_SCORE / 2 // 50% score if resolved favorably\n }\n\n return 0\n }\n\n /**\n * Update category-specific reputation\n */\n private updateCategoryReputation(\n categories: CategoryReputation[],\n jobPerformance: JobPerformance,\n jobScore: number\n ): { categories: CategoryReputation[]; categoryScore: number } {\n const existingCategoryIndex = categories.findIndex(\n c => c.category === jobPerformance.category\n )\n\n if (existingCategoryIndex !== -1) {\n // Update existing category\n const category = categories[existingCategoryIndex]\n const updatedCategory: CategoryReputation = {\n ...category,\n completedJobs: category.completedJobs + 1,\n qualitySum: category.qualitySum + jobPerformance.qualityRating,\n qualityCount: category.qualityCount + 1,\n totalEarnings: category.totalEarnings + jobPerformance.paymentAmount,\n lastActivity: Date.now() / 1000,\n score: Math.floor((category.score * 7 + jobScore * 3) / 10), // 70% existing, 30% new\n avgCompletionTime: Math.floor(\n (category.avgCompletionTime * category.completedJobs + jobPerformance.actualDuration) /\n (category.completedJobs + 1)\n )\n }\n\n const newCategories = [...categories]\n newCategories[existingCategoryIndex] = updatedCategory\n\n return { categories: newCategories, categoryScore: updatedCategory.score }\n } else {\n // Create new category\n if (categories.length >= REPUTATION_CONSTANTS.MAX_REPUTATION_CATEGORIES) {\n throw new Error('Maximum reputation categories reached')\n }\n\n const newCategory: CategoryReputation = {\n category: jobPerformance.category,\n score: jobScore,\n completedJobs: 1,\n avgCompletionTime: jobPerformance.actualDuration,\n qualitySum: jobPerformance.qualityRating,\n qualityCount: 1,\n lastActivity: Date.now() / 1000,\n totalEarnings: jobPerformance.paymentAmount\n }\n\n return { \n categories: [...categories, newCategory],\n categoryScore: jobScore\n }\n }\n }\n\n /**\n * Calculate overall score from category reputations\n */\n private calculateOverallScore(categories: CategoryReputation[]): number {\n if (categories.length === 0) return 5000 // Default starting score\n\n let weightedSum = 0\n let totalWeight = 0\n\n for (const category of categories) {\n const weight = category.completedJobs\n weightedSum += category.score * weight\n totalWeight += weight\n }\n\n return totalWeight > 0 ? Math.floor(weightedSum / totalWeight) : 5000\n }\n\n /**\n * Get reputation tier from score\n */\n private getTierFromScore(score: number): ReputationTier {\n if (score >= REPUTATION_CONSTANTS.PLATINUM_TIER_THRESHOLD) {\n return ReputationTier.Platinum\n } else if (score >= REPUTATION_CONSTANTS.GOLD_TIER_THRESHOLD) {\n return ReputationTier.Gold\n } else if (score >= REPUTATION_CONSTANTS.SILVER_TIER_THRESHOLD) {\n return ReputationTier.Silver\n } else if (score >= REPUTATION_CONSTANTS.BRONZE_TIER_THRESHOLD) {\n return ReputationTier.Bronze\n } else {\n return ReputationTier.None\n }\n }\n\n /**\n * Check for badge achievements\n */\n private checkBadgeAchievements(\n data: ReputationData,\n jobPerformance: JobPerformance,\n newScore: number\n ): BadgeType[] {\n const newBadges: BadgeType[] = []\n const existingBadges = new Set(data.badges.map(b => b.badgeType))\n\n const newTotalJobs = data.totalJobsCompleted + (jobPerformance.completed ? 1 : 0)\n\n // Job count badges\n if (!existingBadges.has(BadgeType.FirstJob) && newTotalJobs >= 1) {\n newBadges.push(BadgeType.FirstJob)\n }\n if (!existingBadges.has(BadgeType.TenJobs) && newTotalJobs >= 10) {\n newBadges.push(BadgeType.TenJobs)\n }\n if (!existingBadges.has(BadgeType.HundredJobs) && newTotalJobs >= 100) {\n newBadges.push(BadgeType.HundredJobs)\n }\n if (!existingBadges.has(BadgeType.ThousandJobs) && newTotalJobs >= 1000) {\n newBadges.push(BadgeType.ThousandJobs)\n }\n\n // Perfect rating badge\n if (!existingBadges.has(BadgeType.PerfectRating) && newScore >= 9500) {\n newBadges.push(BadgeType.PerfectRating)\n }\n\n // Quick responder badge\n if (!existingBadges.has(BadgeType.QuickResponder) && \n data.avgResponseTime > 0 && data.avgResponseTime < 3600) {\n newBadges.push(BadgeType.QuickResponder)\n }\n\n // Dispute resolver badge\n if (!existingBadges.has(BadgeType.DisputeResolver) && data.disputesResolved >= 5) {\n newBadges.push(BadgeType.DisputeResolver)\n }\n\n // Category expert badge\n if (!existingBadges.has(BadgeType.CategoryExpert)) {\n const hasExpertCategory = data.categoryReputations.some(c => c.score >= 9000)\n if (hasExpertCategory) {\n newBadges.push(BadgeType.CategoryExpert)\n }\n }\n\n // Cross-category master badge\n if (!existingBadges.has(BadgeType.CrossCategoryMaster) && \n data.categoryReputations.length >= 5) {\n newBadges.push(BadgeType.CrossCategoryMaster)\n }\n\n return newBadges\n }\n\n /**\n * Detect potential fraud patterns\n */\n private detectFraud(\n data: ReputationData,\n jobPerformance: JobPerformance\n ): { detected: boolean; riskScore: number; patterns: string[] } {\n let totalRiskScore = 0\n const detectedPatterns: string[] = []\n\n for (const pattern of this.fraudPatterns) {\n if (pattern.detect(data, jobPerformance)) {\n totalRiskScore += pattern.riskScore\n detectedPatterns.push(pattern.patternId)\n }\n }\n\n // Normalize risk score to 0-100\n const normalizedRiskScore = Math.min(100, totalRiskScore)\n\n return {\n detected: normalizedRiskScore >= 50, // Threshold for fraud detection\n riskScore: normalizedRiskScore,\n patterns: detectedPatterns\n }\n }\n\n /**\n * Create performance snapshot\n */\n createPerformanceSnapshot(\n data: ReputationData,\n newScore: number\n ): PerformanceSnapshot {\n const avgQuality = data.categoryReputations.length > 0\n ? data.categoryReputations.reduce((sum, cat) => {\n return sum + (cat.qualityCount > 0 ? cat.qualitySum / cat.qualityCount : 0)\n }, 0) / data.categoryReputations.length\n : 0\n\n return {\n timestamp: Date.now() / 1000,\n score: newScore,\n jobsCompleted: data.totalJobsCompleted,\n avgQuality: Math.floor(avgQuality)\n }\n }\n\n /**\n * Calculate reputation slash amount\n */\n calculateSlashAmount(\n currentScore: number,\n slashPercentage: number\n ): { newScore: number; slashAmount: number } {\n if (slashPercentage > 5000) {\n throw new Error('Slash percentage cannot exceed 50%')\n }\n\n if (currentScore < REPUTATION_CONSTANTS.MIN_REPUTATION_FOR_SLASH) {\n throw new Error('Reputation too low to slash')\n }\n\n const slashAmount = Math.floor((currentScore * slashPercentage) / 10000)\n const newScore = Math.max(0, currentScore - slashAmount)\n\n return { newScore, slashAmount }\n }\n\n /**\n * Calculate staking bonus\n */\n calculateStakingBonus(stakeAmount: number): number {\n // Max 5% bonus for staking\n return Math.min(500, Math.floor(stakeAmount / 1000))\n }\n}"]}
|