@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.
Files changed (118) hide show
  1. package/README.md +295 -30
  2. package/dist/GhostSpeakClient-bnXwUPHI.d.ts +1011 -0
  3. package/dist/StakingModule-DunDShLq.d.ts +2446 -0
  4. package/dist/{agent-M74TCRON.js → agent-S42FIMR7.js} +4 -4
  5. package/dist/{agent-M74TCRON.js.map → agent-S42FIMR7.js.map} +1 -1
  6. package/dist/batch-operations-45CQFEID.js +4 -0
  7. package/dist/batch-operations-45CQFEID.js.map +1 -0
  8. package/dist/browser-CI5_6Gzk.d.ts +234 -0
  9. package/dist/browser.d.ts +6 -576
  10. package/dist/browser.js +15 -842
  11. package/dist/browser.js.map +1 -1
  12. package/dist/chunk-46QWY3MG.js +156 -0
  13. package/dist/chunk-46QWY3MG.js.map +1 -0
  14. package/dist/{chunk-F3DZMBUA.js → chunk-5QBSC4T4.js} +327 -493
  15. package/dist/chunk-5QBSC4T4.js.map +1 -0
  16. package/dist/chunk-5QZVFUXB.js +4176 -0
  17. package/dist/chunk-5QZVFUXB.js.map +1 -0
  18. package/dist/chunk-6XCCMJ6M.js +1865 -0
  19. package/dist/chunk-6XCCMJ6M.js.map +1 -0
  20. package/dist/chunk-A7ALCVUI.js +98 -0
  21. package/dist/chunk-A7ALCVUI.js.map +1 -0
  22. package/dist/chunk-AWMGX3OX.js +814 -0
  23. package/dist/chunk-AWMGX3OX.js.map +1 -0
  24. package/dist/chunk-BF3IQ35I.js +284 -0
  25. package/dist/chunk-BF3IQ35I.js.map +1 -0
  26. package/dist/chunk-BQDGRTVP.js +168 -0
  27. package/dist/chunk-BQDGRTVP.js.map +1 -0
  28. package/dist/chunk-IQM5RASO.js +8502 -0
  29. package/dist/chunk-IQM5RASO.js.map +1 -0
  30. package/dist/chunk-JYXSOXCP.js +3850 -0
  31. package/dist/chunk-JYXSOXCP.js.map +1 -0
  32. package/dist/chunk-OXA7MECJ.js +7787 -0
  33. package/dist/chunk-OXA7MECJ.js.map +1 -0
  34. package/dist/chunk-QLRWUHN2.js +231 -0
  35. package/dist/chunk-QLRWUHN2.js.map +1 -0
  36. package/dist/chunk-SKMJJ3Q6.js +125 -0
  37. package/dist/chunk-SKMJJ3Q6.js.map +1 -0
  38. package/dist/chunk-TTB4OS2D.js +69 -0
  39. package/dist/chunk-TTB4OS2D.js.map +1 -0
  40. package/dist/chunk-UP2VWCW5.js +33 -0
  41. package/dist/{chunk-NSBPE2FW.js.map → chunk-UP2VWCW5.js.map} +1 -1
  42. package/dist/{chunk-UJUGGLMT.js → chunk-VQZQCHUT.js} +5 -5
  43. package/dist/{chunk-UJUGGLMT.js.map → chunk-VQZQCHUT.js.map} +1 -1
  44. package/dist/client.d.ts +4 -4
  45. package/dist/client.js +11 -10
  46. package/dist/createAgentAuthorization-KGZNXZBT.js +5 -0
  47. package/dist/createAgentAuthorization-KGZNXZBT.js.map +1 -0
  48. package/dist/credentials.js +1 -1
  49. package/dist/crypto.js +2 -2
  50. package/dist/errors.js +1 -1
  51. package/dist/feature-flags-B1g0DCPe.d.ts +1181 -0
  52. package/dist/generated-QJREJQ2C.js +9 -0
  53. package/dist/{generated-VNLHMR6Y.js.map → generated-QJREJQ2C.js.map} +1 -1
  54. package/dist/{ghostspeak_wasm-SB2RPJ3D.js → ghostspeak_wasm-F227HOSM.js} +3 -3
  55. package/dist/{ghostspeak_wasm-SB2RPJ3D.js.map → ghostspeak_wasm-F227HOSM.js.map} +1 -1
  56. package/dist/index.d.ts +1179 -1498
  57. package/dist/index.js +356 -3578
  58. package/dist/index.js.map +1 -1
  59. package/dist/metafile-esm.json +1 -1
  60. package/dist/minimal/core-minimal.d.ts +2446 -1245
  61. package/dist/minimal/core-minimal.js +9 -9
  62. package/dist/minimal/core-minimal.js.map +1 -1
  63. package/dist/nacl-fast-W5BJ3KZ2.js +2229 -0
  64. package/dist/nacl-fast-W5BJ3KZ2.js.map +1 -0
  65. package/dist/pda-4KP7CURF.js +4 -0
  66. package/dist/pda-4KP7CURF.js.map +1 -0
  67. package/dist/pda-Ce7VYg4T.d.ts +25 -0
  68. package/dist/reputation-types-Yebf0Rm_.d.ts +1071 -0
  69. package/dist/revokeAuthorization-2ZRO6GUZ.js +5 -0
  70. package/dist/revokeAuthorization-2ZRO6GUZ.js.map +1 -0
  71. package/dist/signature-verification-DGxR4aYQ.d.ts +448 -0
  72. package/dist/types.js +1 -1
  73. package/dist/updateReputationWithAuth-PCEUOCFV.js +5 -0
  74. package/dist/updateReputationWithAuth-PCEUOCFV.js.map +1 -0
  75. package/dist/utils.d.ts +69 -203
  76. package/dist/utils.js +15 -153
  77. package/dist/utils.js.map +1 -1
  78. package/package.json +27 -34
  79. package/dist/.tsbuildinfo +0 -1
  80. package/dist/GhostSpeakClient-D_66Uzsf.d.ts +0 -707
  81. package/dist/GovernanceModule-DQYYys-H.d.ts +0 -1766
  82. package/dist/chunk-APCKGD23.js +0 -1328
  83. package/dist/chunk-APCKGD23.js.map +0 -1
  84. package/dist/chunk-ASQXX4IT.js +0 -572
  85. package/dist/chunk-ASQXX4IT.js.map +0 -1
  86. package/dist/chunk-COGZFWOT.js +0 -19657
  87. package/dist/chunk-COGZFWOT.js.map +0 -1
  88. package/dist/chunk-F3DZMBUA.js.map +0 -1
  89. package/dist/chunk-GMHIUK2R.js +0 -7526
  90. package/dist/chunk-GMHIUK2R.js.map +0 -1
  91. package/dist/chunk-IAWBZYPE.js +0 -356
  92. package/dist/chunk-IAWBZYPE.js.map +0 -1
  93. package/dist/chunk-NSBPE2FW.js +0 -15
  94. package/dist/chunk-OWYHJG6H.js +0 -13311
  95. package/dist/chunk-OWYHJG6H.js.map +0 -1
  96. package/dist/chunk-RDDPOFR5.js +0 -3
  97. package/dist/chunk-RDDPOFR5.js.map +0 -1
  98. package/dist/chunk-RERCHKZP.js +0 -35
  99. package/dist/chunk-RERCHKZP.js.map +0 -1
  100. package/dist/chunk-TVVGXYCI.js +0 -2887
  101. package/dist/chunk-TVVGXYCI.js.map +0 -1
  102. package/dist/chunk-ZGP5552B.js +0 -377
  103. package/dist/chunk-ZGP5552B.js.map +0 -1
  104. package/dist/chunk-ZWOYNHVK.js +0 -196
  105. package/dist/chunk-ZWOYNHVK.js.map +0 -1
  106. package/dist/dist/.tsbuildinfo +0 -1
  107. package/dist/elgamal-VZLWB3XK.js +0 -5
  108. package/dist/elgamal-VZLWB3XK.js.map +0 -1
  109. package/dist/feature-flags-V722ZuXO.d.ts +0 -3512
  110. package/dist/generated-VNLHMR6Y.js +0 -5
  111. package/dist/ipfs-types-BOt9ZNg4.d.ts +0 -592
  112. package/dist/multisigConfig-BzEhy6jy.d.ts +0 -58
  113. package/dist/pda-B_nS8SbD.d.ts +0 -114
  114. package/dist/pda-S4BFJVGE.js +0 -4
  115. package/dist/pda-S4BFJVGE.js.map +0 -1
  116. package/dist/system-addresses-BFNLEbFx.d.ts +0 -857
  117. package/dist/token-2022-rpc-RALH4RK7.js +0 -593
  118. package/dist/token-2022-rpc-RALH4RK7.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/modules/staking/StakingModule.ts","../src/modules/dispute/DisputeModule.ts","../src/utils/reputation-calculator.ts","../src/modules/reputation/ReputationModule.ts","../src/modules/auction/AuctionModule.ts"],"names":["LockupTier","DisputeResolution","getProgramDerivedAddress","getBytesEncoder","getAddressEncoder","AuctionType"],"mappings":"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","file":"browser.js","sourcesContent":["/**\n * Staking Module\n *\n * Manages GHOST token staking operations including:\n * - Creating staking accounts\n * - Staking tokens with lockup tiers\n * - Claiming rewards\n * - Auto-compounding\n */\n\nimport type { Address } from '@solana/addresses'\nimport type { TransactionSigner } from '@solana/kit'\nimport { getProgramDerivedAddress, getAddressEncoder, getBytesEncoder } from '@solana/kit'\nimport { BaseModule } from '../../core/BaseModule.js'\nimport {\n getCreateStakingAccountInstructionAsync,\n getClaimStakingRewardsInstructionAsync,\n getInitializeStakingConfigInstructionAsync,\n} from '../../generated/index.js'\nimport type { StakingAccount, StakingConfig } from '../../generated/index.js'\n\n/**\n * Lockup tier enum for staking\n */\nexport enum LockupTier {\n None = 0,\n OneMonth = 1,\n ThreeMonths = 2,\n SixMonths = 3,\n OneYear = 4,\n TwoYears = 5,\n}\n\n/**\n * Staking module for GHOST token staking operations\n */\nexport class StakingModule extends BaseModule {\n /**\n * Derive staking account PDA for a user\n * Seeds: [\"staking\", owner]\n */\n async deriveStakingAccountPda(owner: Address): Promise<Address> {\n const [pda] = await getProgramDerivedAddress({\n programAddress: this.programId,\n seeds: [\n getBytesEncoder().encode(new TextEncoder().encode('staking')),\n getAddressEncoder().encode(owner),\n ],\n })\n return pda\n }\n\n /**\n * Derive staking config PDA\n * Seeds: [\"staking_config\"]\n */\n async deriveStakingConfigPda(): Promise<Address> {\n const [pda] = await getProgramDerivedAddress({\n programAddress: this.programId,\n seeds: [\n getBytesEncoder().encode(new TextEncoder().encode('staking_config')),\n ],\n })\n return pda\n }\n\n /**\n * Initialize staking configuration (admin only)\n */\n async initializeConfig(params: {\n signer: TransactionSigner\n ghostTokenMint: Address\n rewardsTreasury: Address\n baseApy: number\n minStakeAmount: bigint\n maxStakeAmount: bigint\n }): Promise<string> {\n const instructionGetter = async () => {\n return getInitializeStakingConfigInstructionAsync({\n authority: params.signer,\n ghostTokenMint: params.ghostTokenMint,\n rewardsTreasury: params.rewardsTreasury,\n baseApy: params.baseApy,\n minStakeAmount: params.minStakeAmount,\n maxStakeAmount: params.maxStakeAmount,\n })\n }\n\n return this.execute('initializeStakingConfig', instructionGetter, [params.signer])\n }\n\n /**\n * Create a staking account for a user\n */\n async createStakingAccount(params: {\n signer: TransactionSigner\n }): Promise<string> {\n const instructionGetter = async () => {\n return getCreateStakingAccountInstructionAsync({\n owner: params.signer,\n })\n }\n\n return this.execute('createStakingAccount', instructionGetter, [params.signer])\n }\n\n /**\n * Claim staking rewards\n */\n async claimRewards(params: {\n signer: TransactionSigner\n ghostMint: Address\n userTokenAccount: Address\n rewardsTreasury: Address\n }): Promise<string> {\n const instructionGetter = async () => {\n return getClaimStakingRewardsInstructionAsync({\n owner: params.signer,\n ghostMint: params.ghostMint,\n userTokenAccount: params.userTokenAccount,\n rewardsTreasury: params.rewardsTreasury,\n })\n }\n\n return this.execute('claimStakingRewards', instructionGetter, [params.signer])\n }\n\n /**\n * Get staking account for a user\n */\n async getStakingAccount(owner: Address): Promise<StakingAccount | null> {\n const stakingAccountAddress = await this.deriveStakingAccountPda(owner)\n return this.getAccount<StakingAccount>(stakingAccountAddress, 'StakingAccount')\n }\n\n /**\n * Get staking account by address\n */\n async getStakingAccountByAddress(address: Address): Promise<StakingAccount | null> {\n return this.getAccount<StakingAccount>(address, 'StakingAccount')\n }\n\n /**\n * Get all staking accounts\n */\n async getAllStakingAccounts(): Promise<{ address: Address; data: StakingAccount }[]> {\n return this.getProgramAccounts<StakingAccount>('StakingAccount')\n }\n\n /**\n * Get staking config\n */\n async getStakingConfig(): Promise<StakingConfig | null> {\n const configAddress = await this.deriveStakingConfigPda()\n return this.getAccount<StakingConfig>(configAddress, 'StakingConfig')\n }\n\n /**\n * Calculate pending rewards for a staking account\n */\n calculatePendingRewards(stakingAccount: StakingAccount, config: StakingConfig): bigint {\n const now = BigInt(Math.floor(Date.now() / 1000))\n const timeSinceLastClaim = now - stakingAccount.lastClaimAt\n\n // Base reward = staked * baseApy * time / (365 days * 10000 for bps)\n const baseReward =\n (stakingAccount.stakedAmount * BigInt(config.baseApy) * timeSinceLastClaim) /\n BigInt(365 * 24 * 60 * 60 * 10000)\n\n // Apply lockup tier bonus\n const tierBonus = this.getTierBonusApy(stakingAccount.lockupTier, config)\n const bonusReward =\n (stakingAccount.stakedAmount * BigInt(tierBonus) * timeSinceLastClaim) /\n BigInt(365 * 24 * 60 * 60 * 10000)\n\n return baseReward + bonusReward + stakingAccount.pendingRewards\n }\n\n /**\n * Get tier bonus APY in basis points\n */\n getTierBonusApy(tier: number, config: StakingConfig): number {\n if (config.tierBonusApy && tier < config.tierBonusApy.length) {\n return config.tierBonusApy[tier]\n }\n return 0\n }\n\n /**\n * Get lockup duration in seconds for a tier\n */\n getLockupDuration(tier: LockupTier): number {\n const durations: Record<LockupTier, number> = {\n [LockupTier.None]: 0,\n [LockupTier.OneMonth]: 30 * 24 * 60 * 60,\n [LockupTier.ThreeMonths]: 90 * 24 * 60 * 60,\n [LockupTier.SixMonths]: 180 * 24 * 60 * 60,\n [LockupTier.OneYear]: 365 * 24 * 60 * 60,\n [LockupTier.TwoYears]: 730 * 24 * 60 * 60,\n }\n return durations[tier] || 0\n }\n\n /**\n * Check if a staking account is locked\n */\n isLocked(stakingAccount: StakingAccount): boolean {\n const now = BigInt(Math.floor(Date.now() / 1000))\n return stakingAccount.lockupEndsAt > now\n }\n\n /**\n * Get time remaining on lockup in seconds\n */\n getLockupTimeRemaining(stakingAccount: StakingAccount): number {\n const now = BigInt(Math.floor(Date.now() / 1000))\n if (stakingAccount.lockupEndsAt <= now) {\n return 0\n }\n return Number(stakingAccount.lockupEndsAt - now)\n }\n}\n","/**\n * Dispute Module\n *\n * Manages dispute resolution for escrow transactions.\n * Provides read access to dispute data.\n */\n\nimport type { Address } from '@solana/addresses'\nimport { getProgramDerivedAddress, getAddressEncoder, getBytesEncoder, getUtf8Encoder } from '@solana/kit'\nimport { BaseModule } from '../../core/BaseModule.js'\nimport type { DisputeCase } from '../../generated/index.js'\n\n/**\n * Dispute resolution outcome\n */\nexport enum DisputeResolution {\n FavorComplainant = 0,\n FavorRespondent = 1,\n Split = 2,\n Dismissed = 3,\n}\n\n/**\n * Evidence type for disputes\n */\nexport interface EvidenceSubmission {\n evidenceType: 'document' | 'screenshot' | 'message' | 'other'\n description: string\n contentHash: string\n uri?: string\n}\n\n/**\n * Dispute module for handling escrow disputes\n */\nexport class DisputeModule extends BaseModule {\n /**\n * Derive dispute case PDA\n * Seeds: [\"dispute\", transaction_address, complainant, reason]\n */\n async deriveDisputePda(\n transactionAddress: Address,\n complainant: Address,\n reason: string\n ): Promise<Address> {\n const [pda] = await getProgramDerivedAddress({\n programAddress: this.programId,\n seeds: [\n getBytesEncoder().encode(new TextEncoder().encode('dispute')),\n getAddressEncoder().encode(transactionAddress),\n getAddressEncoder().encode(complainant),\n getUtf8Encoder().encode(reason),\n ],\n })\n return pda\n }\n\n /**\n * Get dispute case by address\n */\n async getDisputeCase(address: Address): Promise<DisputeCase | null> {\n return this.getAccount<DisputeCase>(address, 'DisputeCase')\n }\n\n /**\n * Get all disputes\n */\n async getAllDisputes(): Promise<{ address: Address; data: DisputeCase }[]> {\n return this.getProgramAccounts<DisputeCase>('DisputeCase')\n }\n\n /**\n * Get disputes by complainant\n */\n async getDisputesByComplainant(\n complainant: Address\n ): Promise<{ address: Address; data: DisputeCase }[]> {\n const allDisputes = await this.getAllDisputes()\n return allDisputes.filter((d) => d.data.complainant === complainant)\n }\n\n /**\n * Get disputes by respondent\n */\n async getDisputesByRespondent(\n respondent: Address\n ): Promise<{ address: Address; data: DisputeCase }[]> {\n const allDisputes = await this.getAllDisputes()\n return allDisputes.filter((d) => d.data.respondent === respondent)\n }\n\n /**\n * Get pending disputes (awaiting resolution)\n */\n async getPendingDisputes(): Promise<{ address: Address; data: DisputeCase }[]> {\n const allDisputes = await this.getAllDisputes()\n return allDisputes.filter(\n (d) => !d.data.resolvedAt || (d.data.resolvedAt as { __option: string }).__option === 'None'\n )\n }\n\n /**\n * Check if a dispute is resolved\n */\n isResolved(dispute: DisputeCase): boolean {\n return dispute.resolvedAt !== null && \n (dispute.resolvedAt as { __option: string }).__option !== 'None'\n }\n\n /**\n * Get evidence count for a dispute\n */\n getEvidenceCount(dispute: DisputeCase): number {\n return dispute.evidence?.length ?? 0\n }\n\n /**\n * Get AI confidence score (0-100)\n */\n getAiConfidence(dispute: DisputeCase): number {\n return Math.round(dispute.aiScore * 100)\n }\n\n /**\n * Check if dispute requires human review\n */\n requiresHumanReview(dispute: DisputeCase): boolean {\n return dispute.humanReview || dispute.aiScore < 0.7\n }\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}","/**\n * Reputation Module\n *\n * Manages reputation tracking and calculations:\n * - Calculating reputation scores\n * - Managing reputation badges\n * - Fraud detection\n */\n\nimport type { Address } from '@solana/addresses'\nimport { BaseModule } from '../../core/BaseModule.js'\nimport { ReputationCalculator } from '../../utils/reputation-calculator.js'\nimport {\n ReputationTier,\n BadgeType,\n REPUTATION_CONSTANTS,\n} from '../../types/reputation-types.js'\nimport type {\n JobPerformance,\n ReputationCalculationResult,\n CategoryReputation,\n} from '../../types/reputation-types.js'\n\nexport { ReputationTier, BadgeType, REPUTATION_CONSTANTS }\nexport type { JobPerformance, ReputationCalculationResult, CategoryReputation }\n\n/**\n * Simplified reputation data for module use\n */\nexport interface ReputationData {\n agent: Address\n overallScore: number\n totalJobsCompleted: number\n totalJobsFailed: number\n avgResponseTime: number\n disputesAgainst: number\n disputesResolved: number\n lastUpdated: number\n categoryReputations: CategoryReputation[]\n badges: Array<{ badgeType: BadgeType; earnedAt: number }>\n performanceHistory: Array<{ timestamp: number; score: number; jobsCompleted: number; avgQuality: number }>\n factors: {\n completionWeight: number\n qualityWeight: number\n timelinessWeight: number\n satisfactionWeight: number\n disputeWeight: number\n }\n}\n\n/**\n * Reputation module for managing reputation calculations\n */\nexport class ReputationModule extends BaseModule {\n private calculator: ReputationCalculator\n\n constructor(config: import('../../types/index.js').GhostSpeakConfig) {\n super(config)\n this.calculator = new ReputationCalculator()\n }\n\n /**\n * Calculate reputation change for a job\n */\n calculateReputationChange(\n currentData: ReputationData,\n jobPerformance: JobPerformance\n ): ReputationCalculationResult {\n // Cast to internal type for calculator\n return this.calculator.calculateReputation(currentData as any, jobPerformance)\n }\n\n /**\n * Get tier name from tier enum\n */\n getTierName(tier: ReputationTier): string {\n switch (tier) {\n case ReputationTier.None:\n return 'Unranked'\n case ReputationTier.Bronze:\n return 'Bronze'\n case ReputationTier.Silver:\n return 'Silver'\n case ReputationTier.Gold:\n return 'Gold'\n case ReputationTier.Platinum:\n return 'Platinum'\n default:\n return 'Unknown'\n }\n }\n\n /**\n * Get tier from score\n */\n 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 }\n return ReputationTier.None\n }\n\n /**\n * Get badge display name\n */\n getBadgeName(badge: BadgeType): string {\n switch (badge) {\n case BadgeType.FirstJob:\n return 'First Job'\n case BadgeType.TenJobs:\n return '10 Jobs'\n case BadgeType.HundredJobs:\n return '100 Jobs'\n case BadgeType.ThousandJobs:\n return '1000 Jobs'\n case BadgeType.PerfectRating:\n return 'Perfect Rating'\n case BadgeType.QuickResponder:\n return 'Quick Responder'\n case BadgeType.DisputeResolver:\n return 'Dispute Resolver'\n case BadgeType.CategoryExpert:\n return 'Category Expert'\n case BadgeType.CrossCategoryMaster:\n return 'Cross-Category Master'\n default:\n return 'Unknown Badge'\n }\n }\n\n /**\n * Calculate estimated APY boost from reputation\n */\n calculateApyBoost(score: number): number {\n // 0.5% boost per 1000 reputation points\n return Math.floor(score / 1000) * 50 // Returns in basis points\n }\n\n /**\n * Get reputation tier color for UI\n */\n getTierColor(tier: ReputationTier): string {\n switch (tier) {\n case ReputationTier.Platinum:\n return '#E5E4E2' // Platinum gray\n case ReputationTier.Gold:\n return '#FFD700' // Gold\n case ReputationTier.Silver:\n return '#C0C0C0' // Silver\n case ReputationTier.Bronze:\n return '#CD7F32' // Bronze\n default:\n return '#808080' // Gray\n }\n }\n\n /**\n * Create default reputation data for new agents\n */\n createDefaultReputationData(agentAddress: Address): ReputationData {\n return {\n agent: agentAddress,\n overallScore: 5000, // Start at 50%\n totalJobsCompleted: 0,\n totalJobsFailed: 0,\n avgResponseTime: 0,\n disputesAgainst: 0,\n disputesResolved: 0,\n lastUpdated: Math.floor(Date.now() / 1000),\n categoryReputations: [],\n badges: [],\n performanceHistory: [],\n factors: {\n completionWeight: 25,\n qualityWeight: 25,\n timelinessWeight: 20,\n satisfactionWeight: 20,\n disputeWeight: 10,\n },\n }\n }\n\n /**\n * Check if agent qualifies for a specific tier\n */\n qualifiesForTier(score: number, tier: ReputationTier): boolean {\n switch (tier) {\n case ReputationTier.Platinum:\n return score >= REPUTATION_CONSTANTS.PLATINUM_TIER_THRESHOLD\n case ReputationTier.Gold:\n return score >= REPUTATION_CONSTANTS.GOLD_TIER_THRESHOLD\n case ReputationTier.Silver:\n return score >= REPUTATION_CONSTANTS.SILVER_TIER_THRESHOLD\n case ReputationTier.Bronze:\n return score >= REPUTATION_CONSTANTS.BRONZE_TIER_THRESHOLD\n default:\n return true\n }\n }\n\n /**\n * Calculate points needed for next tier\n */\n pointsToNextTier(score: number): { nextTier: ReputationTier; pointsNeeded: number } | null {\n const currentTier = this.getTierFromScore(score)\n\n switch (currentTier) {\n case ReputationTier.None:\n return { nextTier: ReputationTier.Bronze, pointsNeeded: REPUTATION_CONSTANTS.BRONZE_TIER_THRESHOLD - score }\n case ReputationTier.Bronze:\n return { nextTier: ReputationTier.Silver, pointsNeeded: REPUTATION_CONSTANTS.SILVER_TIER_THRESHOLD - score }\n case ReputationTier.Silver:\n return { nextTier: ReputationTier.Gold, pointsNeeded: REPUTATION_CONSTANTS.GOLD_TIER_THRESHOLD - score }\n case ReputationTier.Gold:\n return { nextTier: ReputationTier.Platinum, pointsNeeded: REPUTATION_CONSTANTS.PLATINUM_TIER_THRESHOLD - score }\n case ReputationTier.Platinum:\n return null // Already at max tier\n default:\n return null\n }\n }\n}\n","/**\n * Auction Module\n *\n * Manages service auctions for AI agent capabilities.\n * Provides read access to auction data.\n */\n\nimport type { Address } from '@solana/addresses'\nimport { getProgramDerivedAddress, getAddressEncoder, getBytesEncoder } from '@solana/kit'\nimport { BaseModule } from '../../core/BaseModule.js'\nimport type { AuctionMarketplace } from '../../generated/index.js'\n\n/**\n * Auction type enum\n */\nexport enum AuctionType {\n English = 0, // Standard ascending auction\n Dutch = 1, // Descending price auction\n SealedBid = 2, // Hidden bids\n}\n\n/**\n * Auction module for service auctions\n */\nexport class AuctionModule extends BaseModule {\n /**\n * Derive auction PDA\n * Seeds: [\"auction\", creator, auction_id]\n */\n async deriveAuctionPda(creator: Address, auctionId: string): Promise<Address> {\n const [pda] = await getProgramDerivedAddress({\n programAddress: this.programId,\n seeds: [\n getBytesEncoder().encode(new TextEncoder().encode('auction')),\n getAddressEncoder().encode(creator),\n getBytesEncoder().encode(new TextEncoder().encode(auctionId)),\n ],\n })\n return pda\n }\n\n /**\n * Get auction marketplace account\n */\n async getAuctionMarketplace(address: Address): Promise<AuctionMarketplace | null> {\n return this.getAccount<AuctionMarketplace>(address, 'AuctionMarketplace')\n }\n\n /**\n * Get all auction marketplaces\n */\n async getAllAuctions(): Promise<{ address: Address; data: AuctionMarketplace }[]> {\n return this.getProgramAccounts<AuctionMarketplace>('AuctionMarketplace')\n }\n\n /**\n * Get auction by creator and ID\n */\n async getAuctionByCreatorAndId(\n creator: Address,\n auctionId: string\n ): Promise<AuctionMarketplace | null> {\n const auctionAddress = await this.deriveAuctionPda(creator, auctionId)\n return this.getAuctionMarketplace(auctionAddress)\n }\n\n /**\n * Calculate time remaining in auction\n */\n getTimeRemaining(auction: AuctionMarketplace): number {\n const now = BigInt(Math.floor(Date.now() / 1000))\n if (auction.auctionEndTime <= now) {\n return 0\n }\n return Number(auction.auctionEndTime - now)\n }\n\n /**\n * Check if auction has ended\n */\n hasEnded(auction: AuctionMarketplace): boolean {\n return this.getTimeRemaining(auction) === 0\n }\n\n /**\n * Get total bid count for an auction\n */\n getTotalBids(auction: AuctionMarketplace): number {\n return auction.totalBids\n }\n\n /**\n * Get auction metadata URI\n */\n getMetadataUri(auction: AuctionMarketplace): string {\n return auction.metadataUri\n }\n\n /**\n * Check if reserve price was met\n */\n isReserveMet(auction: AuctionMarketplace): boolean {\n return auction.reserveMet\n }\n\n /**\n * Get current winning price\n */\n getCurrentPrice(auction: AuctionMarketplace): bigint {\n return auction.currentPrice\n }\n\n /**\n * Get auctions by creator\n */\n async getAuctionsByCreator(\n creator: Address\n ): Promise<{ address: Address; data: AuctionMarketplace }[]> {\n const allAuctions = await this.getAllAuctions()\n return allAuctions.filter((a) => a.data.creator === creator)\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/modules/reputation/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAgBA,0BAAA,EAAA","file":"browser.js","sourcesContent":["/**\n * Reputation Module Index\n */\n\nexport {\n ReputationModule,\n ReputationTier,\n BadgeType,\n REPUTATION_CONSTANTS,\n type ReputationData,\n type JobPerformance,\n type ReputationCalculationResult,\n type CategoryReputation,\n} from './ReputationModule.js'\n\n// Multi-source aggregation\nexport {\n MultiSourceAggregator,\n type AggregatedReputation,\n type SourceScoreBreakdown,\n} from './MultiSourceAggregator.js'\n\n// Adapters\nexport {\n ReputationSource,\n type ReputationSourceAdapter,\n type ReputationSourceConfig,\n type SourceReputationData,\n BaseReputationAdapter,\n PayAIAdapter,\n type PayAIReputationRecord,\n type PayAIMetrics,\n GitHubAdapter,\n type GitHubStats,\n CustomWebhookAdapter,\n type WebhookReputationResponse,\n type WebhookConfig,\n} from './adapters/index.js'\n\n"]}
@@ -0,0 +1,156 @@
1
+ import { GHOSTSPEAK_MARKETPLACE_PROGRAM_ADDRESS, expectAddress, expectSome, getAccountMetaFactory } from './chunk-AWMGX3OX.js';
2
+ import { fixEncoderSize, getBytesEncoder, transformEncoder, getStructEncoder, getAddressEncoder, getU64Encoder, getI64Encoder, getU8Encoder, getOptionEncoder, addEncoderSizePrefix, getUtf8Encoder, getU32Encoder, getStructDecoder, fixDecoderSize, getAddressDecoder, getU64Decoder, getI64Decoder, getU8Decoder, getOptionDecoder, getBytesDecoder, addDecoderSizePrefix, getUtf8Decoder, getU32Decoder, combineCodec, getProgramDerivedAddress } from '@solana/kit';
3
+
4
+ var CREATE_AGENT_AUTHORIZATION_DISCRIMINATOR = new Uint8Array([
5
+ 48,
6
+ 219,
7
+ 232,
8
+ 202,
9
+ 151,
10
+ 97,
11
+ 230,
12
+ 20
13
+ ]);
14
+ function getCreateAgentAuthorizationDiscriminatorBytes() {
15
+ return fixEncoderSize(getBytesEncoder(), 8).encode(
16
+ CREATE_AGENT_AUTHORIZATION_DISCRIMINATOR
17
+ );
18
+ }
19
+ function getCreateAgentAuthorizationInstructionDataEncoder() {
20
+ return transformEncoder(
21
+ getStructEncoder([
22
+ ["discriminator", fixEncoderSize(getBytesEncoder(), 8)],
23
+ ["authorizedSource", getAddressEncoder()],
24
+ ["indexLimit", getU64Encoder()],
25
+ ["expiresAt", getI64Encoder()],
26
+ ["network", getU8Encoder()],
27
+ ["signature", fixEncoderSize(getBytesEncoder(), 64)],
28
+ [
29
+ "nonce",
30
+ getOptionEncoder(
31
+ addEncoderSizePrefix(getUtf8Encoder(), getU32Encoder())
32
+ )
33
+ ]
34
+ ]),
35
+ (value) => ({
36
+ ...value,
37
+ discriminator: CREATE_AGENT_AUTHORIZATION_DISCRIMINATOR
38
+ })
39
+ );
40
+ }
41
+ function getCreateAgentAuthorizationInstructionDataDecoder() {
42
+ return getStructDecoder([
43
+ ["discriminator", fixDecoderSize(getBytesDecoder(), 8)],
44
+ ["authorizedSource", getAddressDecoder()],
45
+ ["indexLimit", getU64Decoder()],
46
+ ["expiresAt", getI64Decoder()],
47
+ ["network", getU8Decoder()],
48
+ ["signature", fixDecoderSize(getBytesDecoder(), 64)],
49
+ [
50
+ "nonce",
51
+ getOptionDecoder(addDecoderSizePrefix(getUtf8Decoder(), getU32Decoder()))
52
+ ]
53
+ ]);
54
+ }
55
+ function getCreateAgentAuthorizationInstructionDataCodec() {
56
+ return combineCodec(
57
+ getCreateAgentAuthorizationInstructionDataEncoder(),
58
+ getCreateAgentAuthorizationInstructionDataDecoder()
59
+ );
60
+ }
61
+ async function getCreateAgentAuthorizationInstructionAsync(input, config) {
62
+ const programAddress = config?.programAddress ?? GHOSTSPEAK_MARKETPLACE_PROGRAM_ADDRESS;
63
+ const originalAccounts = {
64
+ agent: { value: input.agent ?? null, isWritable: false },
65
+ authorization: { value: input.authorization ?? null, isWritable: true },
66
+ authority: { value: input.authority ?? null, isWritable: true },
67
+ systemProgram: { value: input.systemProgram ?? null, isWritable: false }
68
+ };
69
+ const accounts = originalAccounts;
70
+ const args = { ...input };
71
+ if (!accounts.authorization.value) {
72
+ accounts.authorization.value = await getProgramDerivedAddress({
73
+ programAddress,
74
+ seeds: [
75
+ getBytesEncoder().encode(
76
+ new Uint8Array([97, 103, 101, 110, 116, 95, 97, 117, 116, 104])
77
+ ),
78
+ getAddressEncoder().encode(expectAddress(accounts.agent.value)),
79
+ getAddressEncoder().encode(expectSome(args.authorizedSource)),
80
+ getOptionEncoder(
81
+ addEncoderSizePrefix(getUtf8Encoder(), getU32Encoder())
82
+ ).encode(expectSome(args.nonce))
83
+ ]
84
+ });
85
+ }
86
+ if (!accounts.systemProgram.value) {
87
+ accounts.systemProgram.value = "11111111111111111111111111111111";
88
+ }
89
+ const getAccountMeta = getAccountMetaFactory(programAddress, "programId");
90
+ return Object.freeze({
91
+ accounts: [
92
+ getAccountMeta(accounts.agent),
93
+ getAccountMeta(accounts.authorization),
94
+ getAccountMeta(accounts.authority),
95
+ getAccountMeta(accounts.systemProgram)
96
+ ],
97
+ data: getCreateAgentAuthorizationInstructionDataEncoder().encode(
98
+ args
99
+ ),
100
+ programAddress
101
+ });
102
+ }
103
+ function getCreateAgentAuthorizationInstruction(input, config) {
104
+ const programAddress = config?.programAddress ?? GHOSTSPEAK_MARKETPLACE_PROGRAM_ADDRESS;
105
+ const originalAccounts = {
106
+ agent: { value: input.agent ?? null, isWritable: false },
107
+ authorization: { value: input.authorization ?? null, isWritable: true },
108
+ authority: { value: input.authority ?? null, isWritable: true },
109
+ systemProgram: { value: input.systemProgram ?? null, isWritable: false }
110
+ };
111
+ const accounts = originalAccounts;
112
+ const args = { ...input };
113
+ if (!accounts.systemProgram.value) {
114
+ accounts.systemProgram.value = "11111111111111111111111111111111";
115
+ }
116
+ const getAccountMeta = getAccountMetaFactory(programAddress, "programId");
117
+ return Object.freeze({
118
+ accounts: [
119
+ getAccountMeta(accounts.agent),
120
+ getAccountMeta(accounts.authorization),
121
+ getAccountMeta(accounts.authority),
122
+ getAccountMeta(accounts.systemProgram)
123
+ ],
124
+ data: getCreateAgentAuthorizationInstructionDataEncoder().encode(
125
+ args
126
+ ),
127
+ programAddress
128
+ });
129
+ }
130
+ function parseCreateAgentAuthorizationInstruction(instruction) {
131
+ if (instruction.accounts.length < 4) {
132
+ throw new Error("Not enough accounts");
133
+ }
134
+ let accountIndex = 0;
135
+ const getNextAccount = () => {
136
+ const accountMeta = instruction.accounts[accountIndex];
137
+ accountIndex += 1;
138
+ return accountMeta;
139
+ };
140
+ return {
141
+ programAddress: instruction.programAddress,
142
+ accounts: {
143
+ agent: getNextAccount(),
144
+ authorization: getNextAccount(),
145
+ authority: getNextAccount(),
146
+ systemProgram: getNextAccount()
147
+ },
148
+ data: getCreateAgentAuthorizationInstructionDataDecoder().decode(
149
+ instruction.data
150
+ )
151
+ };
152
+ }
153
+
154
+ export { CREATE_AGENT_AUTHORIZATION_DISCRIMINATOR, getCreateAgentAuthorizationDiscriminatorBytes, getCreateAgentAuthorizationInstruction, getCreateAgentAuthorizationInstructionAsync, getCreateAgentAuthorizationInstructionDataCodec, getCreateAgentAuthorizationInstructionDataDecoder, getCreateAgentAuthorizationInstructionDataEncoder, parseCreateAgentAuthorizationInstruction };
155
+ //# sourceMappingURL=chunk-46QWY3MG.js.map
156
+ //# sourceMappingURL=chunk-46QWY3MG.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/generated/instructions/createAgentAuthorization.ts"],"names":[],"mappings":"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","file":"chunk-46QWY3MG.js","sourcesContent":["/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n addDecoderSizePrefix,\n addEncoderSizePrefix,\n combineCodec,\n fixDecoderSize,\n fixEncoderSize,\n getAddressDecoder,\n getAddressEncoder,\n getBytesDecoder,\n getBytesEncoder,\n getI64Decoder,\n getI64Encoder,\n getOptionDecoder,\n getOptionEncoder,\n getProgramDerivedAddress,\n getStructDecoder,\n getStructEncoder,\n getU32Decoder,\n getU32Encoder,\n getU64Decoder,\n getU64Encoder,\n getU8Decoder,\n getU8Encoder,\n getUtf8Decoder,\n getUtf8Encoder,\n transformEncoder,\n type AccountMeta,\n type AccountSignerMeta,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type Instruction,\n type InstructionWithAccounts,\n type InstructionWithData,\n type Option,\n type OptionOrNullable,\n type ReadonlyAccount,\n type ReadonlyUint8Array,\n type TransactionSigner,\n type WritableAccount,\n type WritableSignerAccount,\n} from \"@solana/kit\";\nimport { GHOSTSPEAK_MARKETPLACE_PROGRAM_ADDRESS } from \"../programs\";\nimport {\n expectAddress,\n expectSome,\n getAccountMetaFactory,\n type ResolvedAccount,\n} from \"../shared\";\n\nexport const CREATE_AGENT_AUTHORIZATION_DISCRIMINATOR = new Uint8Array([\n 48, 219, 232, 202, 151, 97, 230, 20,\n]);\n\nexport function getCreateAgentAuthorizationDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(\n CREATE_AGENT_AUTHORIZATION_DISCRIMINATOR,\n );\n}\n\nexport type CreateAgentAuthorizationInstruction<\n TProgram extends string = typeof GHOSTSPEAK_MARKETPLACE_PROGRAM_ADDRESS,\n TAccountAgent extends string | AccountMeta<string> = string,\n TAccountAuthorization extends string | AccountMeta<string> = string,\n TAccountAuthority extends string | AccountMeta<string> = string,\n TAccountSystemProgram extends string | AccountMeta<string> =\n \"11111111111111111111111111111111\",\n TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n InstructionWithData<ReadonlyUint8Array> &\n InstructionWithAccounts<\n [\n TAccountAgent extends string\n ? ReadonlyAccount<TAccountAgent>\n : TAccountAgent,\n TAccountAuthorization extends string\n ? WritableAccount<TAccountAuthorization>\n : TAccountAuthorization,\n TAccountAuthority extends string\n ? WritableSignerAccount<TAccountAuthority> &\n AccountSignerMeta<TAccountAuthority>\n : TAccountAuthority,\n TAccountSystemProgram extends string\n ? ReadonlyAccount<TAccountSystemProgram>\n : TAccountSystemProgram,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type CreateAgentAuthorizationInstructionData = {\n discriminator: ReadonlyUint8Array;\n authorizedSource: Address;\n indexLimit: bigint;\n expiresAt: bigint;\n network: number;\n signature: ReadonlyUint8Array;\n nonce: Option<string>;\n};\n\nexport type CreateAgentAuthorizationInstructionDataArgs = {\n authorizedSource: Address;\n indexLimit: number | bigint;\n expiresAt: number | bigint;\n network: number;\n signature: ReadonlyUint8Array;\n nonce: OptionOrNullable<string>;\n};\n\nexport function getCreateAgentAuthorizationInstructionDataEncoder(): Encoder<CreateAgentAuthorizationInstructionDataArgs> {\n return transformEncoder(\n getStructEncoder([\n [\"discriminator\", fixEncoderSize(getBytesEncoder(), 8)],\n [\"authorizedSource\", getAddressEncoder()],\n [\"indexLimit\", getU64Encoder()],\n [\"expiresAt\", getI64Encoder()],\n [\"network\", getU8Encoder()],\n [\"signature\", fixEncoderSize(getBytesEncoder(), 64)],\n [\n \"nonce\",\n getOptionEncoder(\n addEncoderSizePrefix(getUtf8Encoder(), getU32Encoder()),\n ),\n ],\n ]),\n (value) => ({\n ...value,\n discriminator: CREATE_AGENT_AUTHORIZATION_DISCRIMINATOR,\n }),\n );\n}\n\nexport function getCreateAgentAuthorizationInstructionDataDecoder(): Decoder<CreateAgentAuthorizationInstructionData> {\n return getStructDecoder([\n [\"discriminator\", fixDecoderSize(getBytesDecoder(), 8)],\n [\"authorizedSource\", getAddressDecoder()],\n [\"indexLimit\", getU64Decoder()],\n [\"expiresAt\", getI64Decoder()],\n [\"network\", getU8Decoder()],\n [\"signature\", fixDecoderSize(getBytesDecoder(), 64)],\n [\n \"nonce\",\n getOptionDecoder(addDecoderSizePrefix(getUtf8Decoder(), getU32Decoder())),\n ],\n ]);\n}\n\nexport function getCreateAgentAuthorizationInstructionDataCodec(): Codec<\n CreateAgentAuthorizationInstructionDataArgs,\n CreateAgentAuthorizationInstructionData\n> {\n return combineCodec(\n getCreateAgentAuthorizationInstructionDataEncoder(),\n getCreateAgentAuthorizationInstructionDataDecoder(),\n );\n}\n\nexport type CreateAgentAuthorizationAsyncInput<\n TAccountAgent extends string = string,\n TAccountAuthorization extends string = string,\n TAccountAuthority extends string = string,\n TAccountSystemProgram extends string = string,\n> = {\n /** Agent granting authorization */\n agent: Address<TAccountAgent>;\n /** Authorization account (PDA) */\n authorization?: Address<TAccountAuthorization>;\n /** Authority (agent owner) */\n authority: TransactionSigner<TAccountAuthority>;\n /** System program */\n systemProgram?: Address<TAccountSystemProgram>;\n authorizedSource: CreateAgentAuthorizationInstructionDataArgs[\"authorizedSource\"];\n indexLimit: CreateAgentAuthorizationInstructionDataArgs[\"indexLimit\"];\n expiresAt: CreateAgentAuthorizationInstructionDataArgs[\"expiresAt\"];\n network: CreateAgentAuthorizationInstructionDataArgs[\"network\"];\n signature: CreateAgentAuthorizationInstructionDataArgs[\"signature\"];\n nonce: CreateAgentAuthorizationInstructionDataArgs[\"nonce\"];\n};\n\nexport async function getCreateAgentAuthorizationInstructionAsync<\n TAccountAgent extends string,\n TAccountAuthorization extends string,\n TAccountAuthority extends string,\n TAccountSystemProgram extends string,\n TProgramAddress extends Address =\n typeof GHOSTSPEAK_MARKETPLACE_PROGRAM_ADDRESS,\n>(\n input: CreateAgentAuthorizationAsyncInput<\n TAccountAgent,\n TAccountAuthorization,\n TAccountAuthority,\n TAccountSystemProgram\n >,\n config?: { programAddress?: TProgramAddress },\n): Promise<\n CreateAgentAuthorizationInstruction<\n TProgramAddress,\n TAccountAgent,\n TAccountAuthorization,\n TAccountAuthority,\n TAccountSystemProgram\n >\n> {\n // Program address.\n const programAddress =\n config?.programAddress ?? GHOSTSPEAK_MARKETPLACE_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n agent: { value: input.agent ?? null, isWritable: false },\n authorization: { value: input.authorization ?? null, isWritable: true },\n authority: { value: input.authority ?? null, isWritable: true },\n systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Resolve default values.\n if (!accounts.authorization.value) {\n accounts.authorization.value = await getProgramDerivedAddress({\n programAddress,\n seeds: [\n getBytesEncoder().encode(\n new Uint8Array([97, 103, 101, 110, 116, 95, 97, 117, 116, 104]),\n ),\n getAddressEncoder().encode(expectAddress(accounts.agent.value)),\n getAddressEncoder().encode(expectSome(args.authorizedSource)),\n getOptionEncoder(\n addEncoderSizePrefix(getUtf8Encoder(), getU32Encoder()),\n ).encode(expectSome(args.nonce)),\n ],\n });\n }\n if (!accounts.systemProgram.value) {\n accounts.systemProgram.value =\n \"11111111111111111111111111111111\" as Address<\"11111111111111111111111111111111\">;\n }\n\n const getAccountMeta = getAccountMetaFactory(programAddress, \"programId\");\n return Object.freeze({\n accounts: [\n getAccountMeta(accounts.agent),\n getAccountMeta(accounts.authorization),\n getAccountMeta(accounts.authority),\n getAccountMeta(accounts.systemProgram),\n ],\n data: getCreateAgentAuthorizationInstructionDataEncoder().encode(\n args as CreateAgentAuthorizationInstructionDataArgs,\n ),\n programAddress,\n } as CreateAgentAuthorizationInstruction<\n TProgramAddress,\n TAccountAgent,\n TAccountAuthorization,\n TAccountAuthority,\n TAccountSystemProgram\n >);\n}\n\nexport type CreateAgentAuthorizationInput<\n TAccountAgent extends string = string,\n TAccountAuthorization extends string = string,\n TAccountAuthority extends string = string,\n TAccountSystemProgram extends string = string,\n> = {\n /** Agent granting authorization */\n agent: Address<TAccountAgent>;\n /** Authorization account (PDA) */\n authorization: Address<TAccountAuthorization>;\n /** Authority (agent owner) */\n authority: TransactionSigner<TAccountAuthority>;\n /** System program */\n systemProgram?: Address<TAccountSystemProgram>;\n authorizedSource: CreateAgentAuthorizationInstructionDataArgs[\"authorizedSource\"];\n indexLimit: CreateAgentAuthorizationInstructionDataArgs[\"indexLimit\"];\n expiresAt: CreateAgentAuthorizationInstructionDataArgs[\"expiresAt\"];\n network: CreateAgentAuthorizationInstructionDataArgs[\"network\"];\n signature: CreateAgentAuthorizationInstructionDataArgs[\"signature\"];\n nonce: CreateAgentAuthorizationInstructionDataArgs[\"nonce\"];\n};\n\nexport function getCreateAgentAuthorizationInstruction<\n TAccountAgent extends string,\n TAccountAuthorization extends string,\n TAccountAuthority extends string,\n TAccountSystemProgram extends string,\n TProgramAddress extends Address =\n typeof GHOSTSPEAK_MARKETPLACE_PROGRAM_ADDRESS,\n>(\n input: CreateAgentAuthorizationInput<\n TAccountAgent,\n TAccountAuthorization,\n TAccountAuthority,\n TAccountSystemProgram\n >,\n config?: { programAddress?: TProgramAddress },\n): CreateAgentAuthorizationInstruction<\n TProgramAddress,\n TAccountAgent,\n TAccountAuthorization,\n TAccountAuthority,\n TAccountSystemProgram\n> {\n // Program address.\n const programAddress =\n config?.programAddress ?? GHOSTSPEAK_MARKETPLACE_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n agent: { value: input.agent ?? null, isWritable: false },\n authorization: { value: input.authorization ?? null, isWritable: true },\n authority: { value: input.authority ?? null, isWritable: true },\n systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Resolve default values.\n if (!accounts.systemProgram.value) {\n accounts.systemProgram.value =\n \"11111111111111111111111111111111\" as Address<\"11111111111111111111111111111111\">;\n }\n\n const getAccountMeta = getAccountMetaFactory(programAddress, \"programId\");\n return Object.freeze({\n accounts: [\n getAccountMeta(accounts.agent),\n getAccountMeta(accounts.authorization),\n getAccountMeta(accounts.authority),\n getAccountMeta(accounts.systemProgram),\n ],\n data: getCreateAgentAuthorizationInstructionDataEncoder().encode(\n args as CreateAgentAuthorizationInstructionDataArgs,\n ),\n programAddress,\n } as CreateAgentAuthorizationInstruction<\n TProgramAddress,\n TAccountAgent,\n TAccountAuthorization,\n TAccountAuthority,\n TAccountSystemProgram\n >);\n}\n\nexport type ParsedCreateAgentAuthorizationInstruction<\n TProgram extends string = typeof GHOSTSPEAK_MARKETPLACE_PROGRAM_ADDRESS,\n TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n programAddress: Address<TProgram>;\n accounts: {\n /** Agent granting authorization */\n agent: TAccountMetas[0];\n /** Authorization account (PDA) */\n authorization: TAccountMetas[1];\n /** Authority (agent owner) */\n authority: TAccountMetas[2];\n /** System program */\n systemProgram: TAccountMetas[3];\n };\n data: CreateAgentAuthorizationInstructionData;\n};\n\nexport function parseCreateAgentAuthorizationInstruction<\n TProgram extends string,\n TAccountMetas extends readonly AccountMeta[],\n>(\n instruction: Instruction<TProgram> &\n InstructionWithAccounts<TAccountMetas> &\n InstructionWithData<ReadonlyUint8Array>,\n): ParsedCreateAgentAuthorizationInstruction<TProgram, TAccountMetas> {\n if (instruction.accounts.length < 4) {\n // TODO: Coded error.\n throw new Error(\"Not enough accounts\");\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n agent: getNextAccount(),\n authorization: getNextAccount(),\n authority: getNextAccount(),\n systemProgram: getNextAccount(),\n },\n data: getCreateAgentAuthorizationInstructionDataDecoder().decode(\n instruction.data,\n ),\n };\n}\n"]}