@chaoschain/sdk 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/WalletManager.ts","../src/utils/contracts.ts","../src/ChaosAgent.ts","../src/exceptions.ts","../src/X402PaymentManager.ts","../src/PaymentManager.ts","../src/X402Server.ts","../src/GoogleAP2Integration.ts","../src/A2AX402Extension.ts","../src/ProcessIntegrity.ts","../src/StorageBackends.ts","../src/utils/networks.ts","../src/ChaosChainSDK.ts","../src/providers/storage/IPFSLocal.ts","../src/types.ts","../src/index.ts"],"names":["ethers","fs","path","PaymentError","crypto","axios","http","path2","fs2","privateKey","jose","paymentData","createHash","FormData","AgentRole","ValidationStatus","PaymentMethod"],"mappings":"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","file":"index.js","sourcesContent":["/**\n * Wallet management for ChaosChain SDK\n * Handles private keys, HD wallets, and secure key storage\n */\n\nimport { ethers } from 'ethers';\nimport { WalletConfig } from './types';\nimport * as fs from 'fs';\nimport * as path from 'path';\n// import * as crypto from 'crypto';\n\nexport class WalletManager {\n private wallet: ethers.Wallet | ethers.HDNodeWallet;\n private provider?: ethers.Provider;\n\n constructor(config: WalletConfig, provider?: ethers.Provider) {\n this.wallet = this.initializeWallet(config);\n this.provider = provider;\n\n if (provider) {\n this.wallet = this.wallet.connect(provider);\n }\n }\n\n /**\n * Initialize wallet from various sources\n */\n private initializeWallet(config: WalletConfig): ethers.Wallet {\n if (config.privateKey) {\n return new ethers.Wallet(config.privateKey);\n }\n\n if (config.mnemonic) {\n return ethers.Wallet.fromPhrase(config.mnemonic);\n }\n\n if (config.walletFile) {\n return this.loadFromFile(config.walletFile);\n }\n\n // Generate new random wallet\n return ethers.Wallet.createRandom();\n }\n\n /**\n * Load wallet from encrypted file\n */\n private loadFromFile(filePath: string): ethers.Wallet {\n try {\n const walletData = fs.readFileSync(filePath, 'utf8');\n const data = JSON.parse(walletData);\n\n if (data.encrypted) {\n throw new Error('Encrypted wallets require password (not yet implemented)');\n }\n\n return new ethers.Wallet(data.privateKey);\n } catch (error) {\n throw new Error(`Failed to load wallet from file: ${(error as Error).message}`);\n }\n }\n\n /**\n * Save wallet to encrypted file\n */\n async saveToFile(filePath: string, password?: string): Promise<void> {\n const directory = path.dirname(filePath);\n if (!fs.existsSync(directory)) {\n fs.mkdirSync(directory, { recursive: true });\n }\n\n if (password) {\n // Use ethers built-in encryption\n const encrypted = await this.wallet.encrypt(password);\n fs.writeFileSync(filePath, encrypted, 'utf8');\n } else {\n // Save unencrypted (not recommended for production)\n const data = {\n address: this.wallet.address,\n privateKey: this.wallet.privateKey,\n mnemonic: this.wallet.mnemonic?.phrase,\n encrypted: false,\n };\n fs.writeFileSync(filePath, JSON.stringify(data, null, 2), 'utf8');\n }\n }\n\n /**\n * Get wallet instance\n */\n getWallet(): ethers.Wallet {\n return this.wallet;\n }\n\n /**\n * Get wallet address\n */\n getAddress(): string {\n return this.wallet.address;\n }\n\n /**\n * Get private key (use with caution)\n */\n getPrivateKey(): string {\n return this.wallet.privateKey;\n }\n\n /**\n * Get mnemonic phrase (if available)\n */\n getMnemonic(): string | undefined {\n return this.wallet.mnemonic?.phrase;\n }\n\n /**\n * Sign a message\n */\n async signMessage(message: string): Promise<string> {\n return this.wallet.signMessage(message);\n }\n\n /**\n * Sign typed data (EIP-712)\n */\n async signTypedData(\n domain: ethers.TypedDataDomain,\n types: Record<string, ethers.TypedDataField[]>,\n value: Record<string, unknown>\n ): Promise<string> {\n return this.wallet.signTypedData(domain, types, value);\n }\n\n /**\n * Get balance\n */\n async getBalance(): Promise<bigint> {\n if (!this.provider) {\n throw new Error('Provider not set');\n }\n return this.provider.getBalance(this.wallet.address);\n }\n\n /**\n * Get nonce\n */\n async getNonce(): Promise<number> {\n if (!this.provider) {\n throw new Error('Provider not set');\n }\n return this.provider.getTransactionCount(this.wallet.address);\n }\n\n /**\n * Connect to a new provider\n */\n connect(provider: ethers.Provider): void {\n this.provider = provider;\n this.wallet = this.wallet.connect(provider);\n }\n\n /**\n * Generate a new random wallet\n */\n static createRandom(): WalletManager {\n const wallet = ethers.Wallet.createRandom();\n return new WalletManager({ privateKey: wallet.privateKey });\n }\n\n /**\n * Create from mnemonic\n */\n static fromMnemonic(mnemonic: string, provider?: ethers.Provider): WalletManager {\n return new WalletManager({ mnemonic }, provider);\n }\n\n /**\n * Create from private key\n */\n static fromPrivateKey(privateKey: string, provider?: ethers.Provider): WalletManager {\n return new WalletManager({ privateKey }, provider);\n }\n\n /**\n * Generate new mnemonic\n */\n static generateMnemonic(): string {\n return ethers.Wallet.createRandom().mnemonic?.phrase || '';\n }\n\n /**\n * Validate mnemonic\n */\n static isValidMnemonic(mnemonic: string): boolean {\n try {\n ethers.Wallet.fromPhrase(mnemonic);\n return true;\n } catch {\n return false;\n }\n }\n\n /**\n * Validate private key\n */\n static isValidPrivateKey(privateKey: string): boolean {\n try {\n new ethers.Wallet(privateKey);\n return true;\n } catch {\n return false;\n }\n }\n\n /**\n * Derive child wallet from HD path\n */\n static deriveChild(mnemonic: string, path: string): WalletManager {\n const hdNode = ethers.HDNodeWallet.fromPhrase(mnemonic, undefined, path);\n return new WalletManager({ privateKey: hdNode.privateKey });\n }\n}\n\n","/**\n * ERC-8004 v1.0 Contract ABIs and Addresses\n * \n * Complete ABIs extracted from Python SDK (chaos_agent.py lines 155-637)\n * \n * This module contains the complete ABIs for all ERC-8004 v1.0 contracts.\n * These are the official ABIs deployed on testnets.\n */\n\nimport { NetworkConfig } from '../types';\n\n/**\n * Identity Registry ABI (ERC-8004 v1.0 with ERC-721)\n */\nexport const IDENTITY_REGISTRY_ABI = [\n {\n inputs: [\n { name: 'tokenURI_', type: 'string' },\n {\n name: 'metadata',\n type: 'tuple[]',\n components: [\n { name: 'key', type: 'string' },\n { name: 'value', type: 'bytes' }\n ]\n }\n ],\n name: 'register',\n outputs: [{ name: 'agentId', type: 'uint256' }],\n stateMutability: 'nonpayable',\n type: 'function'\n },\n {\n inputs: [{ name: 'tokenURI_', type: 'string' }],\n name: 'register',\n outputs: [{ name: 'agentId', type: 'uint256' }],\n stateMutability: 'nonpayable',\n type: 'function'\n },\n {\n inputs: [],\n name: 'register',\n outputs: [{ name: 'agentId', type: 'uint256' }],\n stateMutability: 'nonpayable',\n type: 'function'\n },\n // ERC-721 Standard Functions\n {\n inputs: [{ name: 'tokenId', type: 'uint256' }],\n name: 'ownerOf',\n outputs: [{ name: 'owner', type: 'address' }],\n stateMutability: 'view',\n type: 'function'\n },\n {\n inputs: [{ name: 'owner', type: 'address' }],\n name: 'balanceOf',\n outputs: [{ name: 'balance', type: 'uint256' }],\n stateMutability: 'view',\n type: 'function'\n },\n {\n inputs: [{ name: 'tokenId', type: 'uint256' }],\n name: 'tokenURI',\n outputs: [{ name: '', type: 'string' }],\n stateMutability: 'view',\n type: 'function'\n },\n {\n inputs: [\n { name: 'from', type: 'address' },\n { name: 'to', type: 'address' },\n { name: 'tokenId', type: 'uint256' }\n ],\n name: 'transferFrom',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function'\n },\n {\n inputs: [\n { name: 'to', type: 'address' },\n { name: 'tokenId', type: 'uint256' }\n ],\n name: 'approve',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function'\n },\n {\n inputs: [\n { name: 'operator', type: 'address' },\n { name: 'approved', type: 'bool' }\n ],\n name: 'setApprovalForAll',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function'\n },\n {\n inputs: [{ name: 'tokenId', type: 'uint256' }],\n name: 'getApproved',\n outputs: [{ name: 'operator', type: 'address' }],\n stateMutability: 'view',\n type: 'function'\n },\n {\n inputs: [\n { name: 'owner', type: 'address' },\n { name: 'operator', type: 'address' }\n ],\n name: 'isApprovedForAll',\n outputs: [{ name: 'approved', type: 'bool' }],\n stateMutability: 'view',\n type: 'function'\n },\n // Metadata Functions\n {\n inputs: [\n { name: 'agentId', type: 'uint256' },\n { name: 'key', type: 'string' },\n { name: 'value', type: 'bytes' }\n ],\n name: 'setMetadata',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function'\n },\n {\n inputs: [\n { name: 'agentId', type: 'uint256' },\n { name: 'key', type: 'string' }\n ],\n name: 'getMetadata',\n outputs: [{ name: 'value', type: 'bytes' }],\n stateMutability: 'view',\n type: 'function'\n },\n // Additional Functions\n {\n inputs: [\n { name: 'agentId', type: 'uint256' },\n { name: 'newUri', type: 'string' }\n ],\n name: 'setAgentUri',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function'\n },\n {\n inputs: [],\n name: 'totalAgents',\n outputs: [{ name: '', type: 'uint256' }],\n stateMutability: 'view',\n type: 'function'\n },\n // Events\n {\n anonymous: false,\n inputs: [\n { indexed: true, name: 'agentId', type: 'uint256' },\n { indexed: false, name: 'tokenURI', type: 'string' },\n { indexed: true, name: 'owner', type: 'address' }\n ],\n name: 'Registered',\n type: 'event'\n },\n {\n anonymous: false,\n inputs: [\n { indexed: true, name: 'agentId', type: 'uint256' },\n { indexed: true, name: 'indexedKey', type: 'string' },\n { indexed: false, name: 'key', type: 'string' },\n { indexed: false, name: 'value', type: 'bytes' }\n ],\n name: 'MetadataSet',\n type: 'event'\n },\n // ERC-721 Standard Events\n {\n anonymous: false,\n inputs: [\n { indexed: true, name: 'from', type: 'address' },\n { indexed: true, name: 'to', type: 'address' },\n { indexed: true, name: 'tokenId', type: 'uint256' }\n ],\n name: 'Transfer',\n type: 'event'\n },\n {\n anonymous: false,\n inputs: [\n { indexed: true, name: 'owner', type: 'address' },\n { indexed: true, name: 'approved', type: 'address' },\n { indexed: true, name: 'tokenId', type: 'uint256' }\n ],\n name: 'Approval',\n type: 'event'\n },\n {\n anonymous: false,\n inputs: [\n { indexed: true, name: 'owner', type: 'address' },\n { indexed: true, name: 'operator', type: 'address' },\n { indexed: false, name: 'approved', type: 'bool' }\n ],\n name: 'ApprovalForAll',\n type: 'event'\n },\n {\n anonymous: false,\n inputs: [\n { indexed: true, name: 'agentId', type: 'uint256' },\n { indexed: false, name: 'newUri', type: 'string' },\n { indexed: true, name: 'updatedBy', type: 'address' }\n ],\n name: 'UriUpdated',\n type: 'event'\n }\n ];\n\n/**\n * Get Reputation Registry ABI (ERC-8004 v1.0)\n * \n * v1.0 uses cryptographic signatures (EIP-191/ERC-1271) for feedback authorization.\n * Key changes:\n * - giveFeedback() with signature-based authorization\n * - On-chain scores (0-100) with tags\n * - revokeFeedback() support\n * - appendResponse() for audit trails\n */\nexport const REPUTATION_REGISTRY_ABI = [\n // Core Functions\n {\n inputs: [\n { name: 'agentId', type: 'uint256' },\n { name: 'score', type: 'uint8' },\n { name: 'tag1', type: 'bytes32' },\n { name: 'tag2', type: 'bytes32' },\n { name: 'feedbackUri', type: 'string' },\n { name: 'feedbackHash', type: 'bytes32' },\n { name: 'feedbackAuth', type: 'bytes' }\n ],\n name: 'giveFeedback',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function'\n },\n {\n inputs: [\n { name: 'agentId', type: 'uint256' },\n { name: 'feedbackIndex', type: 'uint64' }\n ],\n name: 'revokeFeedback',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function'\n },\n {\n inputs: [\n { name: 'agentId', type: 'uint256' },\n { name: 'clientAddress', type: 'address' },\n { name: 'feedbackIndex', type: 'uint64' },\n { name: 'responseUri', type: 'string' },\n { name: 'responseHash', type: 'bytes32' }\n ],\n name: 'appendResponse',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function'\n },\n // Read Functions\n {\n inputs: [\n { name: 'agentId', type: 'uint256' },\n { name: 'clientAddresses', type: 'address[]' },\n { name: 'tag1', type: 'bytes32' },\n { name: 'tag2', type: 'bytes32' }\n ],\n name: 'getSummary',\n outputs: [\n { name: 'count', type: 'uint64' },\n { name: 'averageScore', type: 'uint8' }\n ],\n stateMutability: 'view',\n type: 'function'\n },\n {\n inputs: [\n { name: 'agentId', type: 'uint256' },\n { name: 'clientAddress', type: 'address' },\n { name: 'index', type: 'uint64' }\n ],\n name: 'readFeedback',\n outputs: [\n { name: 'score', type: 'uint8' },\n { name: 'tag1', type: 'bytes32' },\n { name: 'tag2', type: 'bytes32' },\n { name: 'isRevoked', type: 'bool' }\n ],\n stateMutability: 'view',\n type: 'function'\n },\n {\n inputs: [\n { name: 'agentId', type: 'uint256' },\n { name: 'clientAddresses', type: 'address[]' },\n { name: 'tag1', type: 'bytes32' },\n { name: 'tag2', type: 'bytes32' },\n { name: 'includeRevoked', type: 'bool' }\n ],\n name: 'readAllFeedback',\n outputs: [\n { name: 'clients', type: 'address[]' },\n { name: 'scores', type: 'uint8[]' },\n { name: 'tag1s', type: 'bytes32[]' },\n { name: 'tag2s', type: 'bytes32[]' },\n { name: 'revokedStatuses', type: 'bool[]' }\n ],\n stateMutability: 'view',\n type: 'function'\n },\n {\n inputs: [{ name: 'agentId', type: 'uint256' }],\n name: 'getClients',\n outputs: [{ name: 'clientList', type: 'address[]' }],\n stateMutability: 'view',\n type: 'function'\n },\n {\n inputs: [\n { name: 'agentId', type: 'uint256' },\n { name: 'clientAddress', type: 'address' }\n ],\n name: 'getLastIndex',\n outputs: [{ name: 'lastIndex', type: 'uint64' }],\n stateMutability: 'view',\n type: 'function'\n },\n {\n inputs: [],\n name: 'getIdentityRegistry',\n outputs: [{ name: 'registry', type: 'address' }],\n stateMutability: 'view',\n type: 'function'\n },\n // Events\n {\n anonymous: false,\n inputs: [\n { indexed: true, name: 'agentId', type: 'uint256' },\n { indexed: true, name: 'clientAddress', type: 'address' },\n { indexed: false, name: 'score', type: 'uint8' },\n { indexed: true, name: 'tag1', type: 'bytes32' },\n { indexed: false, name: 'tag2', type: 'bytes32' },\n { indexed: false, name: 'feedbackUri', type: 'string' },\n { indexed: false, name: 'feedbackHash', type: 'bytes32' }\n ],\n name: 'NewFeedback',\n type: 'event'\n },\n {\n anonymous: false,\n inputs: [\n { indexed: true, name: 'agentId', type: 'uint256' },\n { indexed: true, name: 'clientAddress', type: 'address' },\n { indexed: false, name: 'feedbackIndex', type: 'uint64' },\n { indexed: true, name: 'responder', type: 'address' },\n { indexed: false, name: 'responseUri', type: 'string' },\n { indexed: false, name: 'responseHash', type: 'bytes32' }\n ],\n name: 'ResponseAppended',\n type: 'event'\n }\n ];\n\n/**\n * Get Validation Registry ABI (ERC-8004 v1.0)\n * \n * v1.0 uses URI-based validation with off-chain evidence storage.\n * Key changes:\n * - validationRequest() uses validatorAddress instead of validatorAgentId\n * - requestUri and requestHash for off-chain evidence\n * - validationResponse() uses requestHash with response (0-100)\n * - Support for multiple responses per request (progressive validation)\n */\nexport const VALIDATION_REGISTRY_ABI = [\n // Core Functions\n {\n inputs: [\n { name: 'validatorAddress', type: 'address' },\n { name: 'agentId', type: 'uint256' },\n { name: 'requestUri', type: 'string' },\n { name: 'requestHash', type: 'bytes32' }\n ],\n name: 'validationRequest',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function'\n },\n {\n inputs: [\n { name: 'requestHash', type: 'bytes32' },\n { name: 'response', type: 'uint8' },\n { name: 'responseUri', type: 'string' },\n { name: 'responseHash', type: 'bytes32' },\n { name: 'tag', type: 'bytes32' }\n ],\n name: 'validationResponse',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function'\n },\n // Read Functions\n {\n inputs: [{ name: 'requestHash', type: 'bytes32' }],\n name: 'getValidationStatus',\n outputs: [\n { name: 'validatorAddress', type: 'address' },\n { name: 'agentId', type: 'uint256' },\n { name: 'response', type: 'uint8' },\n { name: 'responseHash', type: 'bytes32' },\n { name: 'tag', type: 'bytes32' },\n { name: 'lastUpdate', type: 'uint256' }\n ],\n stateMutability: 'view',\n type: 'function'\n },\n {\n inputs: [\n { name: 'agentId', type: 'uint256' },\n { name: 'validatorAddresses', type: 'address[]' },\n { name: 'tag', type: 'bytes32' }\n ],\n name: 'getSummary',\n outputs: [\n { name: 'count', type: 'uint64' },\n { name: 'avgResponse', type: 'uint8' }\n ],\n stateMutability: 'view',\n type: 'function'\n },\n {\n inputs: [{ name: 'agentId', type: 'uint256' }],\n name: 'getAgentValidations',\n outputs: [{ name: 'requestHashes', type: 'bytes32[]' }],\n stateMutability: 'view',\n type: 'function'\n },\n {\n inputs: [{ name: 'validatorAddress', type: 'address' }],\n name: 'getValidatorRequests',\n outputs: [{ name: 'requestHashes', type: 'bytes32[]' }],\n stateMutability: 'view',\n type: 'function'\n },\n {\n inputs: [],\n name: 'getIdentityRegistry',\n outputs: [{ name: 'registry', type: 'address' }],\n stateMutability: 'view',\n type: 'function'\n },\n // Events\n {\n anonymous: false,\n inputs: [\n { indexed: true, name: 'validatorAddress', type: 'address' },\n { indexed: true, name: 'agentId', type: 'uint256' },\n { indexed: false, name: 'requestUri', type: 'string' },\n { indexed: true, name: 'requestHash', type: 'bytes32' }\n ],\n name: 'ValidationRequest',\n type: 'event'\n },\n {\n anonymous: false,\n inputs: [\n { indexed: true, name: 'validatorAddress', type: 'address' },\n { indexed: true, name: 'agentId', type: 'uint256' },\n { indexed: true, name: 'requestHash', type: 'bytes32' },\n { indexed: false, name: 'response', type: 'uint8' },\n { indexed: false, name: 'responseUri', type: 'string' },\n { indexed: false, name: 'responseHash', type: 'bytes32' },\n { indexed: false, name: 'tag', type: 'bytes32' }\n ],\n name: 'ValidationResponse',\n type: 'event'\n }\n ];\n\n/**\n * ERC-20 USDC ABI (for x402 payments)\n */\nexport const ERC20_ABI = [\n {\n inputs: [{ name: 'account', type: 'address' }],\n name: 'balanceOf',\n outputs: [{ name: '', type: 'uint256' }],\n stateMutability: 'view',\n type: 'function'\n },\n {\n inputs: [\n { name: 'to', type: 'address' },\n { name: 'amount', type: 'uint256' }\n ],\n name: 'transfer',\n outputs: [{ name: '', type: 'bool' }],\n stateMutability: 'nonpayable',\n type: 'function'\n },\n {\n inputs: [\n { name: 'spender', type: 'address' },\n { name: 'amount', type: 'uint256' }\n ],\n name: 'approve',\n outputs: [{ name: '', type: 'bool' }],\n stateMutability: 'nonpayable',\n type: 'function'\n },\n {\n inputs: [\n { name: 'owner', type: 'address' },\n { name: 'spender', type: 'address' }\n ],\n name: 'allowance',\n outputs: [{ name: '', type: 'uint256' }],\n stateMutability: 'view',\n type: 'function'\n },\n {\n inputs: [],\n name: 'decimals',\n outputs: [{ name: '', type: 'uint8' }],\n stateMutability: 'view',\n type: 'function'\n },\n {\n inputs: [],\n name: 'symbol',\n outputs: [{ name: '', type: 'string' }],\n stateMutability: 'view',\n type: 'function'\n },\n {\n inputs: [],\n name: 'name',\n outputs: [{ name: '', type: 'string' }],\n stateMutability: 'view',\n type: 'function'\n },\n {\n anonymous: false,\n inputs: [\n { indexed: true, name: 'from', type: 'address' },\n { indexed: true, name: 'to', type: 'address' },\n { indexed: false, name: 'value', type: 'uint256' }\n ],\n name: 'Transfer',\n type: 'event'\n },\n {\n anonymous: false,\n inputs: [\n { indexed: true, name: 'owner', type: 'address' },\n { indexed: true, name: 'spender', type: 'address' },\n { indexed: false, name: 'value', type: 'uint256' }\n ],\n name: 'Approval',\n type: 'event'\n }\n];\n\n/**\n * USDC token addresses by network\n */\nexport const USDC_ADDRESSES: Record<string, string> = {\n 'ethereum-sepolia': '0x1c7D4B196Cb0C7B01d743Fbc6116a902379C7238',\n 'base-sepolia': '0x036CbD53842c5426634e7929541eC2318f3dCF7e',\n 'optimism-sepolia': '0x5fd84259d66Cd46123540766Be93DFE6D43130D7',\n 'linea-sepolia': '0x0000000000000000000000000000000000000000',\n 'hedera-testnet': '0x0000000000000000000000000000000000000000',\n '0g-testnet': '0x0000000000000000000000000000000000000000',\n local: '0x0000000000000000000000000000000000000000'\n};\n\n/**\n * Get USDC address for network\n */\nexport function getUSDCAddress(network: string): string {\n return USDC_ADDRESSES[network] || '0x0000000000000000000000000000000000000000';\n}\n\n/**\n * ERC-8004 v1.0 Contract Addresses by Network\n */\nexport const CONTRACT_ADDRESSES = {\n 'ethereum-sepolia': {\n identity: '0x8004a6090Cd10A7288092483047B097295Fb8847',\n reputation: '0x8004B8FD1A363aa02fDC07635C0c5F94f6Af5B7E',\n validation: '0x8004CB39f29c09145F24Ad9dDe2A108C1A2cdfC5',\n usdc: '0x1c7D4B196Cb0C7B01d743Fbc6116a902379C7238',\n treasury: '0x20E7B2A2c8969725b88Dd3EF3a11Bc3353C83F70'\n },\n 'base-sepolia': {\n identity: '0x8004AA63c570c570eBF15376c0dB199918BFe9Fb',\n reputation: '0x8004bd8daB57f14Ed299135749a5CB5c42d341BF',\n validation: '0x8004C269D0A5647E51E121FeB226200ECE932d55',\n usdc: '0x036CbD53842c5426634e7929541eC2318f3dCF7e',\n treasury: '0x20E7B2A2c8969725b88Dd3EF3a11Bc3353C83F70'\n },\n 'linea-sepolia': {\n identity: '0x8004aa7C931bCE1233973a0C6A667f73F66282e7',\n reputation: '0x8004bd8483b99310df121c46ED8858616b2Bba02',\n validation: '0x8004c44d1EFdd699B2A26e781eF7F77c56A9a4EB',\n usdc: '0x0000000000000000000000000000000000000000',\n treasury: '0x20E7B2A2c8969725b88Dd3EF3a11Bc3353C83F70'\n },\n 'hedera-testnet': {\n identity: '0x4c74ebd72921d537159ed2053f46c12a7d8e5923',\n reputation: '0xc565edcba77e3abeade40bfd6cf6bf583b3293e0',\n validation: '0x18df085d85c586e9241e0cd121ca422f571c2da6',\n usdc: '0x0000000000000000000000000000000000000000',\n treasury: '0x20E7B2A2c8969725b88Dd3EF3a11Bc3353C83F70'\n },\n '0g-testnet': {\n identity: '0x80043ed9cf33a3472768dcd53175bb44e03a1e4a',\n reputation: '0x80045d7b72c47bf5ff73737b780cb1a5ba8ee202',\n validation: '0x80041728e0aadf1d1427f9be18d52b7f3afefafb',\n usdc: '0x0000000000000000000000000000000000000000',\n treasury: '0x20E7B2A2c8969725b88Dd3EF3a11Bc3353C83F70'\n }\n} as const;\n\n/**\n * Get contract addresses for a network\n */\nexport function getContractAddresses(network: string) {\n return CONTRACT_ADDRESSES[network as keyof typeof CONTRACT_ADDRESSES];\n}\n\n/**\n * Common contract errors\n */\nexport const CONTRACT_ERRORS = {\n AGENT_NOT_FOUND: 'Agent does not exist',\n UNAUTHORIZED: 'Caller is not authorized',\n INVALID_RATING: 'Rating must be between 0 and 100',\n FEEDBACK_NOT_FOUND: 'Feedback does not exist',\n FEEDBACK_REVOKED: 'Feedback has been revoked',\n VALIDATION_NOT_FOUND: 'Validation request does not exist',\n VALIDATION_ALREADY_RESPONDED: 'Validation already responded',\n INSUFFICIENT_BALANCE: 'Insufficient balance'\n} as const;\n","/**\n * ChaosAgent - ERC-8004 v1.0 Contract Interactions\n * Handles Identity, Reputation, and Validation Registry interactions\n */\n\nimport { ethers } from 'ethers';\nimport {\n AgentMetadata,\n AgentRegistration,\n FeedbackParams,\n FeedbackRecord,\n ValidationRequestParams,\n ValidationRequest,\n ValidationStatus,\n ContractAddresses,\n} from './types';\nimport {\n IDENTITY_REGISTRY_ABI,\n REPUTATION_REGISTRY_ABI,\n VALIDATION_REGISTRY_ABI,\n} from './utils/contracts';\n\nexport class ChaosAgent {\n private identityContract: ethers.Contract;\n private reputationContract: ethers.Contract;\n private validationContract: ethers.Contract;\n private signer: ethers.Signer;\n\n constructor(\n addresses: ContractAddresses,\n signer: ethers.Signer,\n _provider: ethers.Provider\n ) {\n this.signer = signer;\n\n // Initialize contract instances\n this.identityContract = new ethers.Contract(\n addresses.identity,\n IDENTITY_REGISTRY_ABI,\n signer\n );\n this.reputationContract = new ethers.Contract(\n addresses.reputation,\n REPUTATION_REGISTRY_ABI,\n signer\n );\n this.validationContract = new ethers.Contract(\n addresses.validation,\n VALIDATION_REGISTRY_ABI,\n signer\n );\n }\n\n // ============================================================================\n // Identity Registry Methods\n // ============================================================================\n\n /**\n * Register a new agent identity (ERC-8004)\n */\n async registerIdentity(metadata?: AgentMetadata): Promise<AgentRegistration> {\n // Create metadata URI (JSON)\n const uri = metadata ? `data:application/json,${JSON.stringify(metadata)}` : '';\n\n // Call registerAgent\n const tx = await this.identityContract.registerAgent(uri);\n const receipt = await tx.wait();\n\n // Parse AgentRegistered event\n const event = receipt.logs\n .map((log: ethers.Log) => {\n try {\n return this.identityContract.interface.parseLog({\n topics: [...log.topics],\n data: log.data,\n });\n } catch {\n return null;\n }\n })\n .find((e: ethers.LogDescription | null) => e?.name === 'AgentRegistered');\n\n if (!event) {\n throw new Error('AgentRegistered event not found');\n }\n\n return {\n agentId: event.args.agentId,\n txHash: receipt.hash,\n owner: event.args.owner,\n };\n }\n\n /**\n * Get agent metadata\n */\n async getAgentMetadata(agentId: bigint): Promise<AgentMetadata | null> {\n try {\n const uri = await this.identityContract.getAgentURI(agentId);\n \n if (!uri) {\n return null;\n }\n\n // Parse data URI\n if (uri.startsWith('data:application/json,')) {\n const json = uri.substring('data:application/json,'.length);\n return JSON.parse(decodeURIComponent(json));\n }\n\n // Parse ipfs:// URI (fetch from gateway)\n if (uri.startsWith('ipfs://')) {\n const cid = uri.substring(7);\n const response = await fetch(`https://ipfs.io/ipfs/${cid}`);\n return response.json();\n }\n\n // Parse https:// URI\n if (uri.startsWith('https://') || uri.startsWith('http://')) {\n const response = await fetch(uri);\n return response.json();\n }\n\n return null;\n } catch (error) {\n console.error('Failed to get agent metadata:', error);\n return null;\n }\n }\n\n /**\n * Set agent URI\n */\n async setAgentUri(agentId: bigint, uri: string): Promise<string> {\n const tx = await this.identityContract.setAgentURI(agentId, uri);\n const receipt = await tx.wait();\n return receipt.hash;\n }\n\n /**\n * Update agent metadata\n */\n async updateAgentMetadata(agentId: bigint, metadata: AgentMetadata): Promise<string> {\n const uri = `data:application/json,${JSON.stringify(metadata)}`;\n return this.setAgentUri(agentId, uri);\n }\n\n /**\n * Check if agent exists\n */\n async agentExists(agentId: bigint): Promise<boolean> {\n return this.identityContract.agentExists(agentId);\n }\n\n /**\n * Get agent owner\n */\n async getAgentOwner(agentId: bigint): Promise<string> {\n return this.identityContract.ownerOf(agentId);\n }\n\n /**\n * Get total number of agents\n */\n async getTotalAgents(): Promise<bigint> {\n return this.identityContract.totalAgents();\n }\n\n /**\n * Transfer agent ownership\n */\n async transferAgent(agentId: bigint, to: string): Promise<string> {\n const from = await this.signer.getAddress();\n const tx = await this.identityContract.transferFrom(from, to, agentId);\n const receipt = await tx.wait();\n return receipt.hash;\n }\n\n // ============================================================================\n // Reputation Registry Methods\n // ============================================================================\n\n /**\n * Generate EIP-191 signed feedback authorization (ERC-8004 v1.0)\n * \n * This signature allows a client to submit feedback to an agent's reputation.\n * The agent owner signs to authorize the client to give feedback up to a certain index.\n * \n * @param agentId Target agent ID receiving feedback\n * @param clientAddress Address of the client giving feedback\n * @param indexLimit Maximum feedback index this authorization permits\n * @param expiry Unix timestamp when authorization expires\n * @returns Signed feedbackAuth bytes for use in giveFeedback()\n */\n async generateFeedbackAuthorization(\n agentId: bigint,\n clientAddress: string,\n indexLimit: bigint,\n expiry: bigint\n ): Promise<string> {\n try {\n // Get chain ID\n const network = await this.signer.provider!.getNetwork();\n const chainId = network.chainId;\n\n // Get identity registry address\n const identityAddress = await this.identityContract.getAddress();\n\n // Get signer address\n const signerAddress = await this.signer.getAddress();\n\n // Pack the FeedbackAuth struct (7 fields)\n // As per ERC-8004 v1.0 spec: (agentId, clientAddress, indexLimit, expiry, chainId, identityRegistry, signerAddress)\n const feedbackAuthData = ethers.solidityPackedKeccak256(\n ['uint256', 'address', 'uint64', 'uint256', 'uint256', 'address', 'address'],\n [agentId, clientAddress, indexLimit, expiry, chainId, identityAddress, signerAddress]\n );\n\n // Sign with agent's private key (EIP-191)\n const signature = await this.signer.signMessage(ethers.getBytes(feedbackAuthData));\n const signatureBytes = ethers.getBytes(signature); // 65 bytes (r + s + v)\n\n // Pack struct data + signature (224 bytes + 65 bytes = 289 bytes)\n const structBytes = ethers.concat([\n ethers.toBeHex(agentId, 32),\n ethers.zeroPadValue(clientAddress, 32),\n ethers.concat([ethers.toBeHex(indexLimit, 8), ethers.zeroPadValue('0x', 24)]), // uint64 padded\n ethers.toBeHex(expiry, 32),\n ethers.toBeHex(chainId, 32),\n ethers.zeroPadValue(identityAddress, 32),\n ethers.zeroPadValue(signerAddress, 32)\n ]);\n\n // Return struct + signature\n const feedbackAuth = ethers.hexlify(ethers.concat([structBytes, signatureBytes]));\n\n console.log(`✅ Generated feedback authorization for agent #${agentId}`);\n return feedbackAuth;\n } catch (e: any) {\n throw new Error(`Failed to generate feedback authorization: ${e.message}`);\n }\n }\n\n /**\n * Give feedback to an agent\n */\n async giveFeedback(params: FeedbackParams): Promise<string> {\n const { agentId, rating, feedbackUri } = params;\n\n // Validate rating (0-100)\n if (rating < 0 || rating > 100) {\n throw new Error('Rating must be between 0 and 100');\n }\n\n const tx = await this.reputationContract.giveFeedback(agentId, rating, feedbackUri);\n const receipt = await tx.wait();\n\n return receipt.hash;\n }\n\n /**\n * Revoke feedback\n */\n async revokeFeedback(feedbackId: bigint): Promise<string> {\n const tx = await this.reputationContract.revokeFeedback(feedbackId);\n const receipt = await tx.wait();\n return receipt.hash;\n }\n\n /**\n * Append response to feedback\n */\n async appendResponse(feedbackId: bigint, responseUri: string): Promise<string> {\n const tx = await this.reputationContract.appendResponse(feedbackId, responseUri);\n const receipt = await tx.wait();\n return receipt.hash;\n }\n\n /**\n * Get feedback details\n */\n async getFeedback(feedbackId: bigint): Promise<FeedbackRecord> {\n const feedback = await this.reputationContract.getFeedback(feedbackId);\n \n return {\n feedbackId: feedback.feedbackId,\n fromAgent: feedback.fromAgent,\n toAgent: feedback.toAgent,\n rating: feedback.rating,\n feedbackUri: feedback.feedbackURI,\n timestamp: Number(feedback.timestamp),\n revoked: feedback.revoked,\n };\n }\n\n /**\n * Get agent feedback IDs\n */\n async getAgentFeedback(\n agentId: bigint,\n offset: number = 0,\n limit: number = 10\n ): Promise<bigint[]> {\n return this.reputationContract.getAgentFeedback(agentId, offset, limit);\n }\n\n /**\n * Get agent reputation stats\n */\n async getAgentStats(agentId: bigint): Promise<{\n totalFeedback: bigint;\n averageRating: bigint;\n totalRevoked: bigint;\n }> {\n return this.reputationContract.getAgentStats(agentId);\n }\n\n // ============================================================================\n // Validation Registry Methods\n // ============================================================================\n\n /**\n * Request validation from another agent\n */\n async requestValidation(params: ValidationRequestParams): Promise<string> {\n const { validatorAgentId, requestUri, requestHash } = params;\n\n // Convert hash to bytes32\n const hashBytes = ethers.id(requestHash);\n\n const tx = await this.validationContract.requestValidation(\n validatorAgentId,\n requestUri,\n hashBytes\n );\n const receipt = await tx.wait();\n\n return receipt.hash;\n }\n\n /**\n * Respond to validation request\n */\n async respondToValidation(\n requestId: bigint,\n approved: boolean,\n responseUri: string\n ): Promise<string> {\n const tx = await this.validationContract.respondToValidation(\n requestId,\n approved,\n responseUri\n );\n const receipt = await tx.wait();\n return receipt.hash;\n }\n\n /**\n * Get validation request details\n */\n async getValidationRequest(requestId: bigint): Promise<ValidationRequest> {\n const request = await this.validationContract.getValidationRequest(requestId);\n\n return {\n requestId: request.requestId,\n requester: request.requester,\n validator: request.validator,\n requestUri: request.requestURI,\n requestHash: request.requestHash,\n status: request.status as ValidationStatus,\n responseUri: request.responseURI,\n timestamp: Number(request.timestamp),\n };\n }\n\n /**\n * Get agent validation requests\n */\n async getAgentValidationRequests(\n agentId: bigint,\n asValidator: boolean = false,\n offset: number = 0,\n limit: number = 10\n ): Promise<bigint[]> {\n return this.validationContract.getAgentValidationRequests(\n agentId,\n asValidator,\n offset,\n limit\n );\n }\n\n /**\n * Get validation statistics for an agent\n */\n async getValidationStats(agentId: bigint): Promise<{\n totalRequested: bigint;\n totalValidated: bigint;\n totalApproved: bigint;\n totalRejected: bigint;\n }> {\n return this.validationContract.getValidationStats(agentId);\n }\n\n // ============================================================================\n // Event Listening\n // ============================================================================\n\n /**\n * Listen for AgentRegistered events\n */\n onAgentRegistered(callback: (agentId: bigint, owner: string, uri: string) => void): void {\n this.identityContract.on('AgentRegistered', callback);\n }\n\n /**\n * Listen for FeedbackGiven events\n */\n onFeedbackGiven(\n callback: (feedbackId: bigint, fromAgent: bigint, toAgent: bigint, rating: number) => void\n ): void {\n this.reputationContract.on('FeedbackGiven', callback);\n }\n\n /**\n * Listen for ValidationRequested events\n */\n onValidationRequested(\n callback: (requestId: bigint, requester: bigint, validator: bigint) => void\n ): void {\n this.validationContract.on('ValidationRequested', callback);\n }\n\n /**\n * Listen for ValidationResponded events\n */\n onValidationResponded(\n callback: (requestId: bigint, approved: boolean, responseUri: string) => void\n ): void {\n this.validationContract.on('ValidationResponded', callback);\n }\n\n /**\n * Remove all event listeners\n */\n removeAllListeners(): void {\n this.identityContract.removeAllListeners();\n this.reputationContract.removeAllListeners();\n this.validationContract.removeAllListeners();\n }\n}\n\n","/**\n * Exception classes for the ChaosChain SDK.\n *\n * This module defines all custom exceptions used throughout the SDK\n * to provide clear error handling and debugging information.\n */\n\nexport class ChaosChainSDKError extends Error {\n public details: Record<string, any>;\n\n constructor(message: string, details: Record<string, any> = {}) {\n super(message);\n this.name = 'ChaosChainSDKError';\n this.details = details;\n Object.setPrototypeOf(this, ChaosChainSDKError.prototype);\n }\n\n toString(): string {\n if (Object.keys(this.details).length > 0) {\n return `${this.message} | Details: ${JSON.stringify(this.details)}`;\n }\n return this.message;\n }\n}\n\nexport class AgentRegistrationError extends ChaosChainSDKError {\n constructor(message: string, details?: Record<string, any>) {\n super(message, details);\n this.name = 'AgentRegistrationError';\n Object.setPrototypeOf(this, AgentRegistrationError.prototype);\n }\n}\n\nexport class PaymentError extends ChaosChainSDKError {\n constructor(message: string, details?: Record<string, any>) {\n super(message, details);\n this.name = 'PaymentError';\n Object.setPrototypeOf(this, PaymentError.prototype);\n }\n}\n\nexport class StorageError extends ChaosChainSDKError {\n constructor(message: string, details?: Record<string, any>) {\n super(message, details);\n this.name = 'StorageError';\n Object.setPrototypeOf(this, StorageError.prototype);\n }\n}\n\nexport class IntegrityVerificationError extends ChaosChainSDKError {\n constructor(message: string, details?: Record<string, any>) {\n super(message, details);\n this.name = 'IntegrityVerificationError';\n Object.setPrototypeOf(this, IntegrityVerificationError.prototype);\n }\n}\n\nexport class NetworkError extends ChaosChainSDKError {\n constructor(message: string, details?: Record<string, any>) {\n super(message, details);\n this.name = 'NetworkError';\n Object.setPrototypeOf(this, NetworkError.prototype);\n }\n}\n\nexport class ContractError extends ChaosChainSDKError {\n constructor(message: string, details?: Record<string, any>) {\n super(message, details);\n this.name = 'ContractError';\n Object.setPrototypeOf(this, ContractError.prototype);\n }\n}\n\nexport class ValidationError extends ChaosChainSDKError {\n constructor(message: string, details?: Record<string, any>) {\n super(message, details);\n this.name = 'ValidationError';\n Object.setPrototypeOf(this, ValidationError.prototype);\n }\n}\n\nexport class ConfigurationError extends ChaosChainSDKError {\n constructor(message: string, details?: Record<string, any>) {\n super(message, details);\n this.name = 'ConfigurationError';\n Object.setPrototypeOf(this, ConfigurationError.prototype);\n }\n}\n\nexport class AuthenticationError extends ChaosChainSDKError {\n constructor(message: string, details?: Record<string, any>) {\n super(message, details);\n this.name = 'AuthenticationError';\n Object.setPrototypeOf(this, AuthenticationError.prototype);\n }\n}\n\n","/**\n * X402 Payment Manager for ChaosChain SDK\n *\n * This module implements the Coinbase x402 HTTP 402 payment protocol,\n * enabling seamless cryptocurrency payments between AI agents.\n *\n * Based on: https://www.x402.org/ and https://github.com/coinbase/x402\n */\n\nimport { ethers } from 'ethers';\n// import axios from 'axios'; // Not currently used\nimport { PaymentError } from './exceptions';\nimport { NetworkConfig } from './types';\n\nexport interface X402PaymentRequest {\n payment_id: string;\n from_agent: string;\n to_agent: string;\n amount: number;\n currency: string;\n service_description: string;\n network: NetworkConfig;\n protocol_fee: number;\n created_at: string;\n settlement_address?: string;\n}\n\nexport interface X402PaymentProof {\n payment_id: string;\n transaction_hash: string;\n main_transaction_hash: string;\n fee_transaction_hash?: string;\n from_address: string;\n to_address: string;\n treasury_address: string;\n amount: number;\n currency: string;\n protocol_fee: number;\n network: NetworkConfig;\n chain_id: number;\n block_number?: number;\n timestamp: Date;\n status: string;\n confirmations: number;\n}\n\nexport interface X402PaymentRequirements {\n amount: number;\n currency: string;\n service_description: string;\n settlement_address: string;\n network: NetworkConfig;\n protocol_version: string;\n expires_at: string;\n payment_endpoint: string;\n}\n\n/**\n * X402 Payment Manager - Coinbase HTTP 402 protocol implementation\n * \n * Features:\n * - Real USDC/ETH transfers on Base, Ethereum, Optimism\n * - Automatic 2.5% protocol fee to ChaosChain treasury\n * - Cryptographic payment receipts\n * - Multi-network support\n */\nexport class X402PaymentManager {\n private wallet: ethers.Wallet;\n private provider: ethers.JsonRpcProvider;\n private network: NetworkConfig;\n private treasuryAddress: string;\n private protocolFeePercentage: number;\n private usdcAddresses: Record<string, string>;\n\n constructor(wallet: ethers.Wallet, network: NetworkConfig) {\n this.wallet = wallet;\n this.network = network;\n this.protocolFeePercentage = 0.025; // 2.5% ChaosChain fee\n\n // ChaosChain treasury addresses (per network)\n this.treasuryAddress = this.getTreasuryAddress(network);\n\n // USDC contract addresses\n this.usdcAddresses = {\n 'base-sepolia': '0x036CbD53842c5426634e7929541eC2318f3dCF7e',\n 'ethereum-sepolia': '0x1c7D4B196Cb0C7B01d743Fbc6116a902379C7238',\n 'optimism-sepolia': '0x5fd84259d66Cd46123540766Be93DFE6D43130D7',\n 'linea-sepolia': '0x1c7D4B196Cb0C7B01d743Fbc6116a902379C7238'\n };\n\n // Get provider from wallet\n this.provider = wallet.provider as ethers.JsonRpcProvider;\n\n console.log(`✅ X402 Payment Manager initialized on ${network}`);\n console.log(`💰 Treasury: ${this.treasuryAddress}`);\n console.log(`📊 Protocol Fee: ${this.protocolFeePercentage * 100}%`);\n }\n\n /**\n * Get ChaosChain treasury address for network\n */\n private getTreasuryAddress(network: NetworkConfig): string {\n const treasuries: Record<string, string> = {\n 'base-sepolia': '0x8004AA63c570c570eBF15376c0dB199918BFe9Fb',\n 'ethereum-sepolia': '0x8004a6090Cd10A7288092483047B097295Fb8847',\n 'optimism-sepolia': '0x8004a6090Cd10A7288092483047B097295Fb8847',\n 'linea-sepolia': '0x8004aa7C931bCE1233973a0C6A667f73F66282e7'\n };\n\n return treasuries[network] || treasuries['base-sepolia'];\n }\n\n /**\n * Create x402 payment request\n */\n createPaymentRequest(\n fromAgent: string,\n toAgent: string,\n amount: number,\n currency: string = 'USDC',\n serviceDescription: string = 'AI Agent Service'\n ): X402PaymentRequest {\n const paymentId = `x402_${Date.now().toString(36)}_${Math.random().toString(36).substring(2, 9)}`;\n const protocolFee = amount * this.protocolFeePercentage;\n\n const request: X402PaymentRequest = {\n payment_id: paymentId,\n from_agent: fromAgent,\n to_agent: toAgent,\n amount,\n currency,\n service_description: serviceDescription,\n network: this.network,\n protocol_fee: protocolFee,\n created_at: new Date().toISOString()\n };\n\n console.log(`📄 Created x402 payment request: ${paymentId}`);\n console.log(` From: ${fromAgent} → To: ${toAgent}`);\n console.log(` Amount: ${amount} ${currency} + ${protocolFee.toFixed(4)} ${currency} fee`);\n\n return request;\n }\n\n /**\n * Execute x402 payment on-chain\n */\n async executePayment(paymentRequest: X402PaymentRequest, recipientAddress: string): Promise<X402PaymentProof> {\n console.log(`💸 Executing x402 payment: ${paymentRequest.payment_id}`);\n console.log(` Network: ${this.network}`);\n console.log(` Recipient: ${recipientAddress}`);\n\n const currency = paymentRequest.currency.toUpperCase();\n const amount = paymentRequest.amount;\n const protocolFee = paymentRequest.protocol_fee;\n\n let mainTxHash: string;\n let feeTxHash: string | undefined;\n let chainId: number;\n\n try {\n // Get network details\n const networkInfo = await this.provider.getNetwork();\n chainId = Number(networkInfo.chainId);\n\n if (currency === 'ETH' || currency === 'NATIVE') {\n // Native token transfer\n const { mainTx, feeTx } = await this.executeNativePayment(recipientAddress, amount, protocolFee);\n mainTxHash = mainTx;\n feeTxHash = feeTx;\n } else if (currency === 'USDC') {\n // USDC transfer\n const { mainTx, feeTx } = await this.executeUsdcPayment(recipientAddress, amount, protocolFee);\n mainTxHash = mainTx;\n feeTxHash = feeTx;\n } else {\n throw new PaymentError(`Unsupported currency: ${currency}`);\n }\n\n // Get transaction receipt\n const receipt = await this.provider.getTransactionReceipt(mainTxHash);\n\n // Create payment proof\n const proof: X402PaymentProof = {\n payment_id: paymentRequest.payment_id,\n transaction_hash: mainTxHash,\n main_transaction_hash: mainTxHash,\n fee_transaction_hash: feeTxHash,\n from_address: this.wallet.address,\n to_address: recipientAddress,\n treasury_address: this.treasuryAddress,\n amount,\n currency,\n protocol_fee: protocolFee,\n network: this.network,\n chain_id: chainId,\n block_number: receipt?.blockNumber,\n timestamp: new Date(),\n status: receipt?.status === 1 ? 'confirmed' : 'failed',\n confirmations: 1\n };\n\n console.log(`✅ x402 payment executed successfully`);\n console.log(` Main TX: ${mainTxHash}`);\n if (feeTxHash) {\n console.log(` Fee TX: ${feeTxHash}`);\n }\n\n return proof;\n } catch (e: any) {\n throw new PaymentError(`x402 payment failed: ${e.message}`, { payment_id: paymentRequest.payment_id });\n }\n }\n\n /**\n * Execute native token (ETH) payment\n */\n private async executeNativePayment(\n recipientAddress: string,\n amount: number,\n protocolFee: number\n ): Promise<{ mainTx: string; feeTx?: string }> {\n // Convert to wei\n const amountWei = ethers.parseEther(amount.toString());\n const feeWei = ethers.parseEther(protocolFee.toString());\n\n // Send main payment\n const mainTx = await this.wallet.sendTransaction({\n to: recipientAddress,\n value: amountWei\n });\n await mainTx.wait();\n\n // Send protocol fee to treasury\n let feeTxHash: string | undefined;\n if (protocolFee > 0) {\n const feeTx = await this.wallet.sendTransaction({\n to: this.treasuryAddress,\n value: feeWei\n });\n await feeTx.wait();\n feeTxHash = feeTx.hash;\n }\n\n return {\n mainTx: mainTx.hash,\n feeTx: feeTxHash\n };\n }\n\n /**\n * Execute USDC payment\n */\n private async executeUsdcPayment(\n recipientAddress: string,\n amount: number,\n protocolFee: number\n ): Promise<{ mainTx: string; feeTx?: string }> {\n // Get USDC contract address\n const usdcAddress = this.usdcAddresses[this.network];\n if (!usdcAddress) {\n throw new PaymentError(`USDC not supported on ${this.network}`);\n }\n\n // USDC has 6 decimals\n const amountUsdc = ethers.parseUnits(amount.toString(), 6);\n const feeUsdc = ethers.parseUnits(protocolFee.toString(), 6);\n\n // ERC-20 ABI (transfer function)\n const erc20Abi = ['function transfer(address to, uint256 amount) returns (bool)'];\n\n // Create USDC contract instance\n const usdcContract = new ethers.Contract(usdcAddress, erc20Abi, this.wallet);\n\n // Send main payment\n const mainTx = await usdcContract.transfer(recipientAddress, amountUsdc);\n await mainTx.wait();\n\n // Send protocol fee to treasury\n let feeTxHash: string | undefined;\n if (protocolFee > 0) {\n const feeTx = await usdcContract.transfer(this.treasuryAddress, feeUsdc);\n await feeTx.wait();\n feeTxHash = feeTx.hash;\n }\n\n return {\n mainTx: mainTx.hash,\n feeTx: feeTxHash\n };\n }\n\n /**\n * Verify x402 payment on-chain\n */\n async verifyPayment(paymentProof: X402PaymentProof): Promise<boolean> {\n try {\n // Get transaction receipt\n const receipt = await this.provider.getTransactionReceipt(paymentProof.main_transaction_hash);\n\n if (!receipt) {\n console.error(`❌ Transaction not found: ${paymentProof.main_transaction_hash}`);\n return false;\n }\n\n // Verify transaction status\n if (receipt.status !== 1) {\n console.error(`❌ Transaction failed: ${paymentProof.main_transaction_hash}`);\n return false;\n }\n\n // Verify recipient\n const tx = await this.provider.getTransaction(paymentProof.main_transaction_hash);\n if (tx?.to?.toLowerCase() !== paymentProof.to_address.toLowerCase()) {\n console.error(`❌ Recipient mismatch`);\n return false;\n }\n\n console.log(`✅ Payment verified on-chain: ${paymentProof.main_transaction_hash}`);\n return true;\n } catch (e) {\n console.error(`❌ Payment verification failed: ${e}`);\n return false;\n }\n }\n\n /**\n * Create payment requirements for receiving payments\n */\n createPaymentRequirements(\n amount: number,\n currency: string = 'USDC',\n serviceDescription: string = 'AI Agent Service',\n expiryMinutes: number = 30\n ): X402PaymentRequirements {\n const expiryTime = new Date(Date.now() + expiryMinutes * 60 * 1000);\n\n return {\n amount,\n currency,\n service_description: serviceDescription,\n settlement_address: this.wallet.address,\n network: this.network,\n protocol_version: 'x402-v1.0',\n expires_at: expiryTime.toISOString(),\n payment_endpoint: `x402://pay/${this.wallet.address}`\n };\n }\n\n /**\n * Get payment history (from on-chain events)\n */\n async getPaymentHistory(limit: number = 10): Promise<X402PaymentProof[]> {\n // In production, query blockchain events\n // For now, return empty array\n console.log(`📊 Payment history: querying last ${limit} payments...`);\n return [];\n }\n\n /**\n * Create cryptographic receipt for payment\n */\n createPaymentReceipt(paymentProof: X402PaymentProof): Record<string, any> {\n const receiptData = {\n payment_id: paymentProof.payment_id,\n transaction_hash: paymentProof.main_transaction_hash,\n from_address: paymentProof.from_address,\n to_address: paymentProof.to_address,\n amount: paymentProof.amount,\n currency: paymentProof.currency,\n protocol_fee: paymentProof.protocol_fee,\n network: paymentProof.network,\n chain_id: paymentProof.chain_id,\n timestamp: paymentProof.timestamp.toISOString(),\n status: paymentProof.status\n };\n\n // Create receipt hash\n const crypto = require('crypto');\n const receiptJson = JSON.stringify(receiptData);\n const receiptHash = crypto.createHash('sha256').update(receiptJson).digest('hex');\n\n return {\n receipt_type: 'x402_payment',\n receipt_hash: receiptHash,\n receipt_data: receiptData,\n verification_url: `https://explorer.base.org/tx/${paymentProof.main_transaction_hash}`,\n created_at: new Date().toISOString()\n };\n }\n\n /**\n * Get payment statistics\n */\n getPaymentStats(): Record<string, any> {\n return {\n network: this.network,\n wallet_address: this.wallet.address,\n treasury_address: this.treasuryAddress,\n protocol_fee_percentage: this.protocolFeePercentage * 100,\n supported_currencies: ['ETH', 'USDC'],\n features: {\n instant_settlement: true,\n on_chain_verification: true,\n protocol_fees: true,\n multi_currency: true,\n payment_receipts: true\n }\n };\n }\n}\n\n","/**\n * Payment Manager for ChaosChain SDK\n *\n * This module manages traditional and crypto payment processing,\n * supporting multiple payment methods (cards, Google Pay, Apple Pay, PayPal, crypto).\n */\n\nimport { ethers } from 'ethers';\nimport axios from 'axios';\n// import { PaymentError } from './exceptions';\nimport { NetworkConfig } from './types';\n\nexport enum PaymentMethod {\n BASIC_CARD = 'basic-card',\n GOOGLE_PAY = 'https://google.com/pay',\n APPLE_PAY = 'https://apple.com/apple-pay',\n PAYPAL = 'https://paypal.com',\n A2A_X402 = 'https://a2a.org/x402'\n}\n\nexport interface TraditionalPaymentRequest {\n payment_method: PaymentMethod;\n amount: number;\n currency: string;\n payment_data: Record<string, any>;\n description: string;\n}\n\nexport interface TraditionalPaymentResult {\n payment_id: string;\n transaction_id: string;\n status: string;\n amount: number;\n currency: string;\n payment_method: PaymentMethod;\n timestamp: string;\n processor_response?: Record<string, any>;\n}\n\nexport interface PaymentMethodCredentials {\n stripe_secret_key?: string;\n google_pay_merchant_id?: string;\n apple_pay_merchant_id?: string;\n paypal_client_id?: string;\n paypal_client_secret?: string;\n}\n\n/**\n * Payment Manager - handles all payment types\n * \n * Supports:\n * - Basic card payments (Visa, Mastercard via Stripe)\n * - Google Pay\n * - Apple Pay\n * - PayPal\n * - Cryptocurrency (via x402 protocol)\n */\nexport class PaymentManager {\n private agentName: string;\n private network: NetworkConfig;\n private wallet: ethers.Wallet;\n private credentials: PaymentMethodCredentials;\n private stripeAxiosInstance?: axios.AxiosInstance;\n private paypalAccessToken?: string;\n\n constructor(\n agentName: string,\n network: NetworkConfig,\n wallet: ethers.Wallet,\n credentials: PaymentMethodCredentials = {}\n ) {\n this.agentName = agentName;\n this.network = network;\n this.wallet = wallet;\n this.credentials = credentials;\n\n // Initialize Stripe if API key provided\n if (credentials.stripe_secret_key) {\n this.stripeAxiosInstance = axios.create({\n baseURL: 'https://api.stripe.com/v1',\n headers: {\n Authorization: `Bearer ${credentials.stripe_secret_key}`,\n 'Content-Type': 'application/x-www-form-urlencoded'\n }\n });\n console.log('✅ Stripe integration enabled');\n }\n\n // Initialize PayPal if credentials provided\n if (credentials.paypal_client_id && credentials.paypal_client_secret) {\n this.initializePayPal().catch(console.error);\n }\n\n console.log(`💳 Payment Manager initialized for ${agentName}`);\n }\n\n /**\n * Initialize PayPal OAuth access token\n */\n private async initializePayPal(): Promise<void> {\n try {\n const auth = Buffer.from(\n `${this.credentials.paypal_client_id}:${this.credentials.paypal_client_secret}`\n ).toString('base64');\n\n const response = await axios.post(\n 'https://api-m.sandbox.paypal.com/v1/oauth2/token',\n 'grant_type=client_credentials',\n {\n headers: {\n Authorization: `Basic ${auth}`,\n 'Content-Type': 'application/x-www-form-urlencoded'\n }\n }\n );\n\n this.paypalAccessToken = response.data.access_token;\n console.log('✅ PayPal integration enabled');\n } catch (e) {\n console.error('❌ Failed to initialize PayPal:', e);\n }\n }\n\n /**\n * Execute traditional payment (cards, wallets, etc.)\n */\n executeTraditionalPayment(\n paymentMethod: PaymentMethod,\n amount: number,\n currency: string,\n paymentData_unused: Record<string, any>\n ): TraditionalPaymentResult {\n console.log(`💳 Processing ${paymentMethod} payment: $${amount} ${currency}`);\n\n // Route to appropriate payment processor\n switch (paymentMethod) {\n case PaymentMethod.BASIC_CARD:\n return this.processBasicCard(amount, currency, paymentData);\n\n case PaymentMethod.GOOGLE_PAY:\n return this.processGooglePay(amount, currency, paymentData);\n\n case PaymentMethod.APPLE_PAY:\n return this.processApplePay(amount, currency, paymentData);\n\n case PaymentMethod.PAYPAL:\n return this.processPayPal(amount, currency, paymentData);\n\n case PaymentMethod.A2A_X402:\n return this.processA2AX402(amount, currency, paymentData);\n\n default:\n throw new PaymentError(`Unsupported payment method: ${paymentMethod}`);\n }\n }\n\n /**\n * Process Basic Card payment (Visa, Mastercard, Amex, etc.) via Stripe\n */\n private processBasicCard(amount: number, currency: string, paymentData_unused: Record<string, any>): TraditionalPaymentResult {\n console.log('💳 Processing Basic Card via Stripe...');\n\n // Check if Stripe is configured\n if (!this.stripeAxiosInstance) {\n console.warn('⚠️ Stripe not configured, simulating payment');\n return this.simulateTraditionalPayment(PaymentMethod.BASIC_CARD, amount, currency);\n }\n\n try {\n // In production, create Stripe Payment Intent\n // const response = await this.stripeAxiosInstance.post('/payment_intents', {\n // amount: Math.round(amount * 100), // Stripe uses cents\n // currency: currency.toLowerCase(),\n // payment_method_types: ['card'],\n // description: `Payment for ${this.agentName}`\n // });\n\n // For now, simulate\n return this.simulateTraditionalPayment(PaymentMethod.BASIC_CARD, amount, currency);\n } catch (e) {\n throw new PaymentError(`Basic card payment failed: ${e}`);\n }\n }\n\n /**\n * Process Google Pay payment\n */\n private processGooglePay(amount: number, currency: string, paymentData_unused: Record<string, any>): TraditionalPaymentResult {\n console.log('🅶 Processing Google Pay...');\n\n // Check if Google Pay is configured\n if (!this.credentials.google_pay_merchant_id) {\n console.warn('⚠️ Google Pay not configured, simulating payment');\n return this.simulateTraditionalPayment(PaymentMethod.GOOGLE_PAY, amount, currency);\n }\n\n // In production, verify Google Pay token and process via payment processor\n // const token = paymentData.paymentToken;\n // Verify token, create charge, etc.\n\n // For now, simulate\n return this.simulateTraditionalPayment(PaymentMethod.GOOGLE_PAY, amount, currency);\n }\n\n /**\n * Process Apple Pay payment\n */\n private processApplePay(amount: number, currency: string, paymentData_unused: Record<string, any>): TraditionalPaymentResult {\n console.log('🍎 Processing Apple Pay...');\n\n // Check if Apple Pay is configured\n if (!this.credentials.apple_pay_merchant_id) {\n console.warn('⚠️ Apple Pay not configured, simulating payment');\n return this.simulateTraditionalPayment(PaymentMethod.APPLE_PAY, amount, currency);\n }\n\n // In production, verify Apple Pay token and process via payment processor\n // const token = paymentData.paymentToken;\n // Verify token, decrypt, create charge, etc.\n\n // For now, simulate\n return this.simulateTraditionalPayment(PaymentMethod.APPLE_PAY, amount, currency);\n }\n\n /**\n * Process PayPal payment\n */\n private processPayPal(amount: number, currency: string, paymentData_unused: Record<string, any>): TraditionalPaymentResult {\n console.log('💙 Processing PayPal...');\n\n // Check if PayPal is configured\n if (!this.paypalAccessToken) {\n console.warn('⚠️ PayPal not configured, simulating payment');\n return this.simulateTraditionalPayment(PaymentMethod.PAYPAL, amount, currency);\n }\n\n try {\n // In production, create PayPal order and execute\n // const response = await axios.post(\n // 'https://api-m.sandbox.paypal.com/v2/checkout/orders',\n // {\n // intent: 'CAPTURE',\n // purchase_units: [{\n // amount: { currency_code: currency, value: amount.toString() }\n // }]\n // },\n // {\n // headers: {\n // Authorization: `Bearer ${this.paypalAccessToken}`,\n // 'Content-Type': 'application/json'\n // }\n // }\n // );\n\n // For now, simulate\n return this.simulateTraditionalPayment(PaymentMethod.PAYPAL, amount, currency);\n } catch (e) {\n throw new PaymentError(`PayPal payment failed: ${e}`);\n }\n }\n\n /**\n * Process A2A-x402 crypto payment\n */\n private processA2AX402(amount: number, currency: string, paymentData_unused: Record<string, any>): TraditionalPaymentResult {\n console.log('🔗 Processing A2A-x402 crypto payment...');\n\n // Crypto payments are handled by X402PaymentManager\n // This just creates a result showing it was routed to crypto\n const paymentId = `a2a_x402_${Date.now().toString(36)}`;\n\n return {\n payment_id: paymentId,\n transaction_id: paymentData.transaction_hash || `crypto_tx_${paymentId}`,\n status: 'pending_crypto_confirmation',\n amount,\n currency,\n payment_method: PaymentMethod.A2A_X402,\n timestamp: new Date().toISOString(),\n processor_response: {\n network: this.network,\n settlement_type: 'crypto',\n requires_blockchain_confirmation: true\n }\n };\n }\n\n /**\n * Simulate traditional payment (for testing/fallback)\n */\n private simulateTraditionalPayment(\n method: PaymentMethod,\n amount: number,\n currency: string\n ): TraditionalPaymentResult {\n const paymentId = `sim_${method}_${Date.now().toString(36)}`;\n const transactionId = `txn_${paymentId}`;\n\n console.log(`🔄 Simulating ${method} payment`);\n\n return {\n payment_id: paymentId,\n transaction_id: transactionId,\n status: 'completed',\n amount,\n currency,\n payment_method: method,\n timestamp: new Date().toISOString(),\n processor_response: {\n simulation: true,\n authorization_code: `AUTH_${Math.random().toString(36).substring(2, 10).toUpperCase()}`,\n network: method === PaymentMethod.BASIC_CARD ? 'visa' : method,\n last4: method === PaymentMethod.BASIC_CARD ? '4242' : undefined\n }\n };\n }\n\n /**\n * Get payment method configuration status\n */\n getPaymentMethodsStatus(): Record<string, boolean> {\n return {\n [PaymentMethod.BASIC_CARD]: !!this.credentials.stripe_secret_key,\n [PaymentMethod.GOOGLE_PAY]: !!this.credentials.google_pay_merchant_id,\n [PaymentMethod.APPLE_PAY]: !!this.credentials.apple_pay_merchant_id,\n [PaymentMethod.PAYPAL]: !!this.paypalAccessToken,\n [PaymentMethod.A2A_X402]: true // Always available via wallet\n };\n }\n\n /**\n * Get supported payment methods\n */\n getSupportedPaymentMethods(): PaymentMethod[] {\n const status = this.getPaymentMethodsStatus();\n return Object.entries(status)\n .filter(([_, enabled]) => enabled)\n .map(([method, _]) => method as PaymentMethod);\n }\n\n /**\n * Validate payment method credentials\n */\n async validateCredentials(): Promise<Record<string, boolean>> {\n const results: Record<string, boolean> = {};\n\n // Test Stripe\n if (this.credentials.stripe_secret_key) {\n try {\n await this.stripeAxiosInstance!.get('/balance');\n results.stripe = true;\n } catch (e) {\n results.stripe = false;\n }\n }\n\n // Test PayPal\n if (this.credentials.paypal_client_id) {\n results.paypal = !!this.paypalAccessToken;\n }\n\n // Google Pay and Apple Pay don't have API validation (merchant IDs are validated during checkout)\n results.google_pay = !!this.credentials.google_pay_merchant_id;\n results.apple_pay = !!this.credentials.apple_pay_merchant_id;\n\n // Crypto is always valid if we have a wallet\n results.crypto = !!this.wallet;\n\n return results;\n }\n\n /**\n * Create x402 payment request (for crypto payments)\n */\n createX402PaymentRequest(\n fromAgent: string,\n toAgent: string,\n amount: number,\n currency: string,\n serviceDescription: string\n ): Record<string, any> {\n return {\n payment_id: `x402_${Date.now().toString(36)}`,\n from_agent: fromAgent,\n to_agent: toAgent,\n amount,\n currency,\n service_description: serviceDescription,\n network: this.network,\n protocol_fee: amount * 0.025, // 2.5% ChaosChain fee\n created_at: new Date().toISOString()\n };\n }\n\n /**\n * Execute x402 crypto payment (delegated to X402PaymentManager)\n */\n executeX402Payment(paymentRequest: Record<string, any>): Record<string, any> {\n // This is a placeholder - actual implementation is in X402PaymentManager\n const transactionHash = `0x${Math.random().toString(16).substring(2, 66)}`;\n\n return {\n payment_id: paymentRequest.payment_id,\n transaction_hash: transactionHash,\n status: 'confirmed',\n timestamp: new Date(),\n network: this.network,\n from_address: this.wallet.address,\n to_address: paymentRequest.to_agent\n };\n }\n\n /**\n * Get payment statistics\n */\n getPaymentStats(): Record<string, any> {\n return {\n agent_name: this.agentName,\n network: this.network,\n wallet_address: this.wallet.address,\n supported_methods: this.getSupportedPaymentMethods().length,\n payment_methods_status: this.getPaymentMethodsStatus(),\n features: {\n traditional_payments: true,\n crypto_payments: true,\n multi_currency: true,\n instant_settlement: true\n }\n };\n }\n}\n\n","/**\n * X402 Paywall Server for ChaosChain SDK\n *\n * This module implements an HTTP 402 paywall server for protecting API endpoints\n * with cryptocurrency payments.\n */\n\nimport * as http from 'http';\nimport { X402PaymentManager, X402PaymentProof } from './X402PaymentManager';\n// import { PaymentError } from './exceptions';\n\nexport interface X402EndpointConfig {\n path: string;\n amount: number;\n currency: string;\n description: string;\n handler: (data: any) => any;\n}\n\nexport interface X402PaywallConfig {\n port: number;\n host?: string;\n defaultCurrency?: string;\n}\n\n/**\n * X402 Paywall Server - HTTP 402 payment-protected API\n * \n * Features:\n * - HTTP 402 Payment Required responses\n * - Automatic payment verification\n * - Per-endpoint payment requirements\n * - Payment receipt generation\n */\nexport class X402Server {\n private paymentManager: X402PaymentManager;\n private server: http.Server | null = null;\n private endpoints: Map<string, X402EndpointConfig> = new Map();\n private paymentCache: Map<string, X402PaymentProof> = new Map();\n private config: Required<X402PaywallConfig>;\n\n constructor(paymentManager: X402PaymentManager, config: X402PaywallConfig) {\n this.paymentManager = paymentManager;\n this.config = {\n port: config.port,\n host: config.host || '0.0.0.0',\n defaultCurrency: config.defaultCurrency || 'USDC'\n };\n\n console.log(`🔒 X402 Paywall Server initialized on port ${this.config.port}`);\n }\n\n /**\n * Register a payment-protected endpoint\n */\n requirePayment(amount: number, description: string, currency?: string) {\n return (handler: (data: any) => any) => {\n const path = `/${handler.name || 'endpoint'}`;\n\n const endpointConfig: X402EndpointConfig = {\n path,\n amount,\n currency: currency || this.config.defaultCurrency,\n description,\n handler\n };\n\n this.endpoints.set(path, endpointConfig);\n console.log(`💰 Registered paywall endpoint: ${path} (${amount} ${currency || this.config.defaultCurrency})`);\n\n return handler;\n };\n }\n\n /**\n * Start the HTTP 402 server\n */\n start(): void {\n if (this.server) {\n console.warn('⚠️ Server already running');\n return;\n }\n\n this.server = http.createServer((req, res) => {\n this.handleRequest(req, res).catch((error) => {\n console.error('❌ Request handler error:', error);\n res.writeHead(500, { 'Content-Type': 'application/json' });\n res.end(JSON.stringify({ error: 'Internal server error' }));\n });\n });\n\n this.server.listen(this.config.port, this.config.host, () => {\n console.log(`🚀 X402 Paywall Server running at http://${this.config.host}:${this.config.port}`);\n console.log(`📋 Registered endpoints: ${this.endpoints.size}`);\n this.endpoints.forEach((config, path) => {\n console.log(` - ${path}: ${config.amount} ${config.currency} - ${config.description}`);\n });\n });\n }\n\n /**\n * Stop the server\n */\n stop(): Promise<void> {\n return new Promise((resolve, reject) => {\n if (!this.server) {\n resolve();\n return;\n }\n\n this.server.close((err) => {\n if (err) {\n reject(err);\n } else {\n console.log('🛑 X402 Paywall Server stopped');\n this.server = null;\n resolve();\n }\n });\n });\n }\n\n /**\n * Handle incoming HTTP requests\n */\n private async handleRequest(req: http.IncomingMessage, res: http.ServerResponse): Promise<void> {\n const url = new URL(req.url || '/', `http://${req.headers.host}`);\n const path = url.pathname;\n\n // Check if endpoint exists\n const endpointConfig = this.endpoints.get(path);\n if (!endpointConfig) {\n res.writeHead(404, { 'Content-Type': 'application/json' });\n res.end(JSON.stringify({ error: 'Endpoint not found' }));\n return;\n }\n\n // Check for payment proof\n const paymentToken = req.headers['x-payment-token'] as string;\n const paymentTxHash = req.headers['x-payment-tx'] as string;\n\n if (!paymentToken && !paymentTxHash) {\n // No payment provided - return 402 with payment requirements\n this.sendPaymentRequired(res, endpointConfig);\n return;\n }\n\n // Verify payment\n const isValidPayment = await this.verifyPayment(paymentToken || paymentTxHash, endpointConfig);\n\n if (!isValidPayment) {\n res.writeHead(402, { 'Content-Type': 'application/json' });\n res.end(JSON.stringify({ error: 'Invalid or insufficient payment' }));\n return;\n }\n\n // Payment verified - execute endpoint\n try {\n // Parse request body\n let requestData: any = {};\n if (req.method === 'POST' || req.method === 'PUT') {\n const chunks: Buffer[] = [];\n req.on('data', (chunk) => chunks.push(chunk));\n await new Promise((resolve) => req.on('end', resolve));\n const body = Buffer.concat(chunks).toString();\n requestData = body ? JSON.parse(body) : {};\n }\n\n // Execute handler\n const result = await endpointConfig.handler(requestData);\n\n // Send response\n res.writeHead(200, { 'Content-Type': 'application/json' });\n res.end(JSON.stringify({ success: true, data: result }));\n } catch (error: any) {\n res.writeHead(500, { 'Content-Type': 'application/json' });\n res.end(JSON.stringify({ error: error.message }));\n }\n }\n\n /**\n * Send HTTP 402 Payment Required response\n */\n private sendPaymentRequired(res: http.ServerResponse, endpointConfig: X402EndpointConfig): void {\n const paymentRequirements = this.paymentManager.createPaymentRequirements(\n endpointConfig.amount,\n endpointConfig.currency,\n endpointConfig.description\n );\n\n const response = {\n error: 'Payment Required',\n payment_required: true,\n payment_requirements: paymentRequirements,\n instructions: {\n step_1: 'Execute payment using x402 protocol',\n step_2: 'Include payment transaction hash in X-Payment-Tx header',\n step_3: 'Retry request with payment proof'\n }\n };\n\n res.writeHead(402, {\n 'Content-Type': 'application/json',\n 'X-Payment-Required': 'true',\n 'X-Payment-Amount': endpointConfig.amount.toString(),\n 'X-Payment-Currency': endpointConfig.currency,\n 'X-Payment-Address': paymentRequirements.settlement_address\n });\n\n res.end(JSON.stringify(response));\n }\n\n /**\n * Verify payment\n */\n private async verifyPayment(paymentIdentifier: string, endpointConfig: X402EndpointConfig): Promise<boolean> {\n try {\n // Check cache first\n const cachedPayment = this.paymentCache.get(paymentIdentifier);\n if (cachedPayment) {\n // Check if payment amount matches\n if (cachedPayment.amount >= endpointConfig.amount && cachedPayment.currency === endpointConfig.currency) {\n console.log(`✅ Payment verified from cache: ${paymentIdentifier}`);\n return true;\n }\n }\n\n // Verify payment on-chain if it looks like a transaction hash\n if (paymentIdentifier.startsWith('0x') && paymentIdentifier.length === 66) {\n // Create a mock payment proof for verification\n const mockProof: X402PaymentProof = {\n payment_id: paymentIdentifier,\n transaction_hash: paymentIdentifier,\n main_transaction_hash: paymentIdentifier,\n from_address: '0x0000000000000000000000000000000000000000',\n to_address: '0x0000000000000000000000000000000000000000',\n treasury_address: '0x0000000000000000000000000000000000000000',\n amount: endpointConfig.amount,\n currency: endpointConfig.currency,\n protocol_fee: 0,\n network: 'base-sepolia' as any,\n chain_id: 84532,\n timestamp: new Date(),\n status: 'confirmed',\n confirmations: 1\n };\n\n const isValid = await this.paymentManager.verifyPayment(mockProof);\n if (isValid) {\n // Cache the payment\n this.paymentCache.set(paymentIdentifier, mockProof);\n console.log(`✅ Payment verified on-chain: ${paymentIdentifier}`);\n return true;\n }\n }\n\n console.error(`❌ Payment verification failed: ${paymentIdentifier}`);\n return false;\n } catch (error) {\n console.error(`❌ Payment verification error: ${error}`);\n return false;\n }\n }\n\n /**\n * Get server statistics\n */\n getServerStats(): Record<string, any> {\n return {\n running: !!this.server,\n port: this.config.port,\n host: this.config.host,\n endpoints: Array.from(this.endpoints.entries()).map(([path, config]) => ({\n path,\n amount: config.amount,\n currency: config.currency,\n description: config.description\n })),\n payments_cached: this.paymentCache.size,\n default_currency: this.config.defaultCurrency\n };\n }\n\n /**\n * Clear payment cache\n */\n clearPaymentCache(): void {\n this.paymentCache.clear();\n console.log('🗑️ Payment cache cleared');\n }\n}\n\n","/**\n * Google AP2 Integration for ChaosChain SDK\n *\n * This module integrates Google's official AP2 types with the ChaosChain protocol,\n * providing real AP2 intent verification and mandate management.\n */\n\nimport * as crypto from 'crypto';\nimport * as fs from 'fs';\nimport * as path from 'path';\nimport * as jose from 'jose';\nimport { ConfigurationError, PaymentError } from './exceptions';\n\nexport interface IntentMandate {\n user_cart_confirmation_required: boolean;\n natural_language_description: string;\n merchants?: string[];\n skus?: string[];\n requires_refundability: boolean;\n intent_expiry: string;\n}\n\nexport interface CartMandate {\n contents: CartContents;\n merchant_authorization: string;\n}\n\nexport interface CartContents {\n id: string;\n user_cart_confirmation_required: boolean;\n payment_request: PaymentRequest;\n cart_expiry: string;\n merchant_name: string;\n}\n\nexport interface PaymentRequest {\n method_data: PaymentMethodData[];\n details: PaymentDetailsInit;\n}\n\nexport interface PaymentMethodData {\n supported_methods: string;\n data: Record<string, any>;\n}\n\nexport interface PaymentDetailsInit {\n id: string;\n display_items: PaymentItem[];\n total: PaymentItem;\n}\n\nexport interface PaymentItem {\n label: string;\n amount: PaymentCurrencyAmount;\n}\n\nexport interface PaymentCurrencyAmount {\n currency: string;\n value: number | string;\n}\n\nexport interface GoogleAP2IntegrationResult {\n intent_mandate?: IntentMandate;\n cart_mandate?: CartMandate;\n payment_mandate?: any;\n jwt_token?: string;\n success: boolean;\n error?: string;\n}\n\n/**\n * Production Google AP2 integration for ChaosChain SDK\n * \n * This integrates Google's official AP2 library for real intent verification\n * and mandate management with production-grade security.\n */\nexport class GoogleAP2Integration {\n private agentName: string;\n private privateKey: crypto.KeyObject;\n private publicKey: string;\n private merchantPrivateKey: string;\n\n constructor(agentName: string, merchantPrivateKey?: string) {\n this.agentName = agentName;\n this.merchantPrivateKey = merchantPrivateKey || 'demo_private_key_123';\n\n // Generate or load RSA keypair for production JWT signing\n const keypair = this.getOrGenerateRsaKeypair();\n this.privateKey = keypair.privateKey;\n this.publicKey = keypair.publicKey;\n\n console.log(`✅ Google AP2 Integration initialized for ${agentName}`);\n }\n\n /**\n * Generate or load RSA keypair for production JWT signing\n */\n private getOrGenerateRsaKeypair(): { privateKey: crypto.KeyObject; publicKey: string } {\n const keyDir = path.join(process.cwd(), 'keys');\n const privateKeyPath = path.join(keyDir, `${this.agentName}_ap2_private.pem`);\n const publicKeyPath = path.join(keyDir, `${this.agentName}_ap2_public.pem`);\n\n // Create keys directory if it doesn't exist\n if (!fs.existsSync(keyDir)) {\n fs.mkdirSync(keyDir, { recursive: true });\n }\n\n // Try to load existing keys\n if (fs.existsSync(privateKeyPath) && fs.existsSync(publicKeyPath)) {\n try {\n const privateKeyPem = fs.readFileSync(privateKeyPath, 'utf-8');\n const publicKeyPem = fs.readFileSync(publicKeyPath, 'utf-8');\n\n const privateKey = crypto.createPrivateKey(privateKeyPem);\n console.log(`🔑 Loaded existing RSA keypair for ${this.agentName}`);\n\n return { privateKey, publicKey: publicKeyPem };\n } catch (e) {\n console.warn(`⚠️ Failed to load existing keys: ${e}`);\n }\n }\n\n // Generate new RSA keypair\n console.log(`🔑 Generating new RSA keypair for ${this.agentName}`);\n const { privateKey, publicKey } = crypto.generateKeyPairSync('rsa', {\n modulusLength: 2048,\n publicKeyEncoding: {\n type: 'spki',\n format: 'pem'\n },\n privateKeyEncoding: {\n type: 'pkcs8',\n format: 'pem'\n }\n });\n\n // Save keys to disk\n try {\n fs.writeFileSync(privateKeyPath, privateKey as string);\n fs.writeFileSync(publicKeyPath, publicKey);\n console.log(`💾 RSA keypair saved to ${keyDir}`);\n } catch (e) {\n console.warn(`⚠️ Failed to save keys: ${e}`);\n }\n\n return {\n privateKey: crypto.createPrivateKey(privateKey as string),\n publicKey: publicKey as string\n };\n }\n\n /**\n * Create an IntentMandate using Google's official AP2 types\n */\n createIntentMandate(\n userDescription: string,\n merchants?: string[],\n skus?: string[],\n requiresRefundability: boolean = false,\n expiryMinutes: number = 60\n ): GoogleAP2IntegrationResult {\n try {\n // Calculate expiry time\n const expiryTime = new Date(Date.now() + expiryMinutes * 60 * 1000);\n\n // Create IntentMandate using Google's types\n const intentMandate: IntentMandate = {\n user_cart_confirmation_required: true,\n natural_language_description: userDescription,\n merchants,\n skus,\n requires_refundability: requiresRefundability,\n intent_expiry: expiryTime.toISOString()\n };\n\n console.log(`📝 Created Google AP2 IntentMandate`);\n console.log(` Description: ${userDescription}`);\n console.log(` Expires: ${expiryTime.toISOString()}`);\n\n return {\n intent_mandate: intentMandate,\n success: true\n };\n } catch (e) {\n console.error(`❌ Failed to create IntentMandate: ${e}`);\n return {\n success: false,\n error: String(e)\n };\n }\n }\n\n /**\n * Create a CartMandate using Google's official AP2 types with JWT signing\n */\n async createCartMandate(\n cartId: string,\n items: Array<{ name: string; price: number }>,\n totalAmount: number,\n currency: string = 'USD',\n merchantName?: string,\n expiryMinutes: number = 15\n ): Promise<GoogleAP2IntegrationResult> {\n try {\n // Calculate expiry time\n const expiryTime = new Date(Date.now() + expiryMinutes * 60 * 1000);\n\n // Create PaymentItems using Google's types\n const paymentItems: PaymentItem[] = items.map((item) => ({\n label: item.name,\n amount: {\n currency,\n value: item.price\n }\n }));\n\n // Create total PaymentItem\n const totalItem: PaymentItem = {\n label: 'Total',\n amount: {\n currency,\n value: totalAmount\n }\n };\n\n // Create PaymentMethodData (supporting multiple methods)\n const methodData: PaymentMethodData[] = [\n {\n supported_methods: 'basic-card',\n data: { supportedNetworks: ['visa', 'mastercard'] }\n },\n {\n supported_methods: 'google-pay',\n data: { environment: 'TEST' }\n },\n {\n supported_methods: 'crypto',\n data: { supportedCurrencies: ['USDC', 'ETH'] }\n }\n ];\n\n // Create PaymentRequest\n const paymentRequest: PaymentRequest = {\n method_data: methodData,\n details: {\n id: `payment_${cartId}`,\n display_items: paymentItems,\n total: totalItem\n }\n };\n\n // Create CartContents\n const cartContents: CartContents = {\n id: cartId,\n user_cart_confirmation_required: true,\n payment_request: paymentRequest,\n cart_expiry: expiryTime.toISOString(),\n merchant_name: merchantName || this.agentName\n };\n\n // Create JWT for merchant authorization\n const jwtToken = await this.createMerchantJwt(cartContents);\n\n // Create CartMandate\n const cartMandate: CartMandate = {\n contents: cartContents,\n merchant_authorization: jwtToken\n };\n\n console.log(`🛒 Created Google AP2 CartMandate with JWT`);\n console.log(` Cart ID: ${cartId}`);\n console.log(` Items: ${items.length} items, Total: ${totalAmount} ${currency}`);\n console.log(` JWT: ${jwtToken.slice(0, 50)}...`);\n\n return {\n cart_mandate: cartMandate,\n jwt_token: jwtToken,\n success: true\n };\n } catch (e) {\n console.error(`❌ Failed to create CartMandate: ${e}`);\n return {\n success: false,\n error: String(e)\n };\n }\n }\n\n /**\n * Create a JWT token for merchant authorization as per Google's AP2 spec\n */\n private async createMerchantJwt(cartContents: CartContents): Promise<string> {\n // Create cart hash for integrity\n const cartJson = JSON.stringify(cartContents);\n const cartHash = crypto.createHash('sha256').update(cartJson).digest('hex');\n\n // JWT Payload\n const now = Math.floor(Date.now() / 1000);\n const payload = {\n iss: `did:chaoschain:${this.agentName}`, // Issuer (DID format)\n sub: cartContents.id, // Subject (cart ID)\n aud: 'chaoschain:payment_processor', // Audience\n iat: now, // Issued at\n exp: now + 15 * 60, // Expires (15 minutes)\n jti: `jwt_${cartContents.id}_${now}`, // JWT ID\n cart_hash: cartHash, // Cart integrity hash\n merchant_name: cartContents.merchant_name\n };\n\n // Create JWT with RSA256 signing\n const jwt = await new jose.SignJWT(payload)\n .setProtectedHeader({\n alg: 'RS256',\n kid: `did:chaoschain:${this.agentName}#key-1`\n })\n .sign(this.privateKey);\n\n return jwt;\n }\n\n /**\n * Verify a JWT token (for validation purposes)\n */\n async verifyJwtToken(token: string): Promise<Record<string, any>> {\n try {\n // Get public key for verification\n const publicKey = crypto.createPublicKey(this.publicKey);\n\n // Decode and verify JWT with RSA256\n const { payload } = await jose.jwtVerify(token, publicKey, {\n algorithms: ['RS256'],\n audience: 'chaoschain:payment_processor'\n });\n\n console.log(`✅ JWT token verified successfully with RSA256`);\n return payload as Record<string, any>;\n } catch (e: any) {\n if (e.code === 'ERR_JWT_EXPIRED') {\n console.error(`❌ JWT token has expired`);\n } else if (e.code === 'ERR_JWT_CLAIM_VALIDATION_FAILED') {\n console.error(`❌ JWT token has invalid audience`);\n } else {\n console.error(`❌ JWT token is invalid: ${e}`);\n }\n return {};\n }\n }\n\n /**\n * Get a summary of the Google AP2 integration capabilities\n */\n getIntegrationSummary(): Record<string, any> {\n return {\n integration_type: 'Google Official AP2',\n agent_name: this.agentName,\n supported_features: [\n 'IntentMandate creation with Google types',\n 'CartMandate creation with JWT signing',\n 'W3C PaymentRequest API compliance',\n 'Multi-payment method support',\n 'JWT-based merchant authorization',\n 'Proper expiry handling',\n 'Cart integrity verification'\n ],\n cryptographic_features: [\n 'JWT signing with RS256 (production)',\n 'Cart content hashing for integrity',\n 'Timestamp-based expiry',\n 'Replay attack prevention with JTI'\n ],\n compliance: ['Google AP2 Protocol', 'W3C Payment Request API', 'JWT RFC 7519', 'ISO 8601 timestamps']\n };\n }\n}\n\n","/**\n * A2A-x402 Extension Implementation for ChaosChain SDK\n *\n * This module implements Google's A2A-x402 extension for cryptocurrency payments,\n * enabling seamless crypto settlement within the AP2 framework.\n *\n * Based on: https://github.com/google-agentic-commerce/a2a-x402/blob/main/v0.1/spec.md\n */\n\nimport { NetworkConfig } from './types';\n\nexport enum PaymentMethod {\n BASIC_CARD = 'basic-card',\n GOOGLE_PAY = 'https://google.com/pay',\n APPLE_PAY = 'https://apple.com/apple-pay',\n PAYPAL = 'https://paypal.com',\n A2A_X402 = 'https://a2a.org/x402'\n}\nimport { PaymentError } from './exceptions';\n\nexport interface X402PaymentMethod {\n supported_methods: string[];\n supported_networks: string[];\n payment_endpoint: string;\n verification_endpoint: string;\n method_data?: Record<string, any>;\n}\n\nexport interface W3CPaymentMethodData {\n supported_methods: string;\n data: Record<string, any>;\n}\n\nexport interface TraditionalPaymentResponse {\n payment_id: string;\n method: string;\n amount: number;\n currency: string;\n status: string;\n transaction_id?: string;\n authorization_code?: string;\n timestamp: string;\n receipt_data?: Record<string, any>;\n}\n\nexport interface X402PaymentRequest {\n id: string;\n total: Record<string, any>;\n display_items: Array<Record<string, any>>;\n x402_methods: X402PaymentMethod[];\n settlement_address: string;\n network: string;\n expires_at: string;\n}\n\nexport interface X402PaymentResponse {\n payment_id: string;\n transaction_hash: string;\n network: string;\n amount: number;\n currency: string;\n settlement_address: string;\n confirmation_blocks: number;\n status: string;\n timestamp: string;\n gas_fee?: number;\n protocol_fee?: number;\n}\n\n/**\n * A2A-x402 Extension for cryptocurrency payments within AP2 framework\n * \n * This class bridges Google's AP2 protocol with x402 crypto payments,\n * enabling seamless crypto settlement for agent-to-agent commerce.\n */\nexport class A2AX402Extension {\n private agentName: string;\n private network: NetworkConfig;\n private paymentManager: any;\n private supportedCryptoMethods: string[];\n private supportedNetworks: string[];\n private w3cPaymentMethods: W3CPaymentMethodData[];\n\n constructor(agentName: string, network: NetworkConfig, paymentManager: any) {\n this.agentName = agentName;\n this.network = network;\n this.paymentManager = paymentManager;\n\n // Supported payment methods (W3C compliant)\n this.supportedCryptoMethods = ['usdc', 'eth', 'native'];\n this.supportedNetworks = ['base-sepolia', 'ethereum-sepolia', 'optimism-sepolia'];\n\n // W3C Payment Request API compliant payment methods\n this.w3cPaymentMethods = this.initializeW3cPaymentMethods();\n\n console.log(`✅ A2A-x402 Extension initialized for ${agentName} on ${network}`);\n console.log(`💳 Multi-payment support: ${this.w3cPaymentMethods.length} methods available`);\n }\n\n /**\n * Initialize W3C Payment Request API compliant payment methods\n */\n private initializeW3cPaymentMethods(): W3CPaymentMethodData[] {\n const methods: W3CPaymentMethodData[] = [];\n\n // 1. Basic Card Support (Visa, Mastercard, Amex, etc.)\n methods.push({\n supported_methods: 'basic-card',\n data: {\n supportedNetworks: ['visa', 'mastercard', 'amex', 'discover'],\n supportedTypes: ['credit', 'debit']\n }\n });\n\n // 2. Google Pay\n methods.push({\n supported_methods: 'https://google.com/pay',\n data: {\n environment: 'PRODUCTION',\n apiVersion: 2,\n apiVersionMinor: 0,\n allowedPaymentMethods: [\n {\n type: 'CARD',\n parameters: {\n allowedAuthMethods: ['PAN_ONLY', 'CRYPTOGRAM_3DS'],\n allowedCardNetworks: ['AMEX', 'DISCOVER', 'JCB', 'MASTERCARD', 'VISA']\n }\n }\n ]\n }\n });\n\n // 3. Apple Pay\n methods.push({\n supported_methods: 'https://apple.com/apple-pay',\n data: {\n version: 3,\n merchantIdentifier: `merchant.chaoschain.${this.agentName.toLowerCase()}`,\n merchantCapabilities: ['supports3DS'],\n supportedNetworks: ['visa', 'masterCard', 'amex', 'discover']\n }\n });\n\n // 4. ChaosChain Crypto Pay (our A2A-x402 implementation)\n methods.push({\n supported_methods: 'https://a2a.org/x402',\n data: {\n supportedCryptocurrencies: this.supportedCryptoMethods,\n supportedNetworks: this.supportedNetworks,\n settlementAddress: 'dynamic',\n protocolVersion: 'x402-v1.0'\n }\n });\n\n // 5. PayPal (for completeness)\n methods.push({\n supported_methods: 'https://paypal.com',\n data: {\n environment: 'sandbox',\n intent: 'capture'\n }\n });\n\n return methods;\n }\n\n /**\n * Create x402 payment method descriptor with W3C compliance\n */\n createX402PaymentMethod(settlementAddress: string): X402PaymentMethod {\n // Extract all W3C method identifiers\n const w3cMethods = this.w3cPaymentMethods.map((method) => method.supported_methods);\n\n return {\n supported_methods: w3cMethods,\n supported_networks: this.supportedNetworks,\n payment_endpoint: `x402://${this.agentName}.chaoschain.com/pay`,\n verification_endpoint: `https://${this.agentName}.chaoschain.com/verify`,\n method_data: {\n w3c_methods: this.w3cPaymentMethods.map((method) => ({\n supportedMethods: method.supported_methods,\n data: method.data\n })),\n crypto_settlement_address: settlementAddress\n }\n };\n }\n\n /**\n * Create enhanced payment request with x402 crypto support\n */\n createEnhancedPaymentRequest(\n cartId: string,\n totalAmount: number,\n currency: string,\n items: Array<Record<string, any>>,\n settlementAddress: string\n ): X402PaymentRequest {\n // Create x402 payment methods\n const x402Methods = [this.createX402PaymentMethod(settlementAddress)];\n\n // Create enhanced payment request\n const paymentRequest: X402PaymentRequest = {\n id: `x402_${cartId}_${Date.now().toString(36)}`,\n total: {\n amount: { value: totalAmount.toString(), currency },\n label: `Payment for ${items.length} items`\n },\n display_items: items.map((item) => ({\n label: item.name || item.service || 'Item',\n amount: { value: (item.price || 0).toString(), currency }\n })),\n x402_methods: x402Methods,\n settlement_address: settlementAddress,\n network: this.network,\n expires_at: new Date(Date.now() + 30 * 60 * 1000).toISOString()\n };\n\n console.log(`💳 Created x402 payment request: ${paymentRequest.id}`);\n return paymentRequest;\n }\n\n /**\n * Execute x402 crypto payment using the real payment manager\n */\n async executeX402Payment(\n paymentRequest: X402PaymentRequest,\n payerAgent: string,\n serviceDescription: string = 'A2A Service'\n ): Promise<X402PaymentResponse> {\n console.log(`💸 Executing x402 payment: ${payerAgent} → ${this.agentName}`);\n\n // Extract payment details\n const amount = parseFloat(paymentRequest.total.amount.value);\n const currency = paymentRequest.total.amount.currency;\n\n // Create payment request for the payment manager\n const pmPaymentRequest = this.paymentManager.createX402PaymentRequest(\n payerAgent,\n this.agentName,\n amount,\n currency,\n serviceDescription\n );\n\n // Execute payment via payment manager\n const paymentProof = this.paymentManager.executeX402Payment(pmPaymentRequest);\n\n // Create x402 payment response\n const response: X402PaymentResponse = {\n payment_id: paymentProof.payment_id,\n transaction_hash: paymentProof.transaction_hash,\n network: this.network,\n amount,\n currency,\n settlement_address: paymentRequest.settlement_address,\n confirmation_blocks: 1,\n status: 'confirmed',\n timestamp: paymentProof.timestamp.toISOString(),\n gas_fee: undefined,\n protocol_fee: pmPaymentRequest.protocol_fee\n };\n\n console.log(`✅ x402 payment confirmed: ${response.transaction_hash}`);\n return response;\n }\n\n /**\n * Execute traditional payment (cards, Google Pay, Apple Pay, etc.)\n */\n executeTraditionalPayment(\n paymentMethod: string,\n amount: number,\n currency: string,\n paymentData: Record<string, any>\n ): TraditionalPaymentResponse {\n console.log(`💳 Processing ${paymentMethod} payment: $${amount} ${currency}`);\n\n // Use the payment manager's traditional payment execution\n if (this.paymentManager) {\n // Convert to PaymentMethod enum\n let methodEnum: PaymentMethod | undefined;\n if (paymentMethod === 'basic-card') {\n methodEnum = PaymentMethod.BASIC_CARD;\n } else if (paymentMethod === 'https://google.com/pay') {\n methodEnum = PaymentMethod.GOOGLE_PAY;\n } else if (paymentMethod === 'https://apple.com/apple-pay') {\n methodEnum = PaymentMethod.APPLE_PAY;\n } else if (paymentMethod === 'https://paypal.com') {\n methodEnum = PaymentMethod.PAYPAL;\n } else if (paymentMethod === 'https://a2a.org/x402') {\n methodEnum = PaymentMethod.A2A_X402;\n }\n\n if (methodEnum) {\n const result = this.paymentManager.executeTraditionalPayment(methodEnum, amount, currency, paymentData);\n\n // Convert to TraditionalPaymentResponse\n return {\n payment_id: result.payment_id,\n method: paymentMethod,\n amount,\n currency,\n status: result.status,\n transaction_id: result.transaction_id,\n authorization_code: result.processor_response?.authorization_code,\n timestamp: result.timestamp,\n receipt_data: result.processor_response\n };\n }\n }\n\n // Fallback for unsupported methods\n const paymentId = `trad_${Date.now().toString(36)}`;\n return {\n payment_id: paymentId,\n method: paymentMethod,\n amount,\n currency,\n status: 'failed',\n timestamp: new Date().toISOString(),\n receipt_data: { error: 'Unsupported payment method' }\n };\n }\n\n /**\n * Verify x402 payment on-chain\n */\n verifyX402Payment(paymentResponse: X402PaymentResponse): boolean {\n // In production, this would verify the transaction on-chain\n // For now, we check if we have a valid transaction hash\n return (\n paymentResponse.status === 'confirmed' &&\n !!paymentResponse.transaction_hash &&\n paymentResponse.transaction_hash.length === 66\n );\n }\n\n /**\n * Create cryptographic proof of x402 payment\n */\n createPaymentProof(paymentResponse: X402PaymentResponse): Record<string, any> {\n const proofData = {\n payment_id: paymentResponse.payment_id,\n transaction_hash: paymentResponse.transaction_hash,\n network: paymentResponse.network,\n amount: paymentResponse.amount,\n currency: paymentResponse.currency,\n settlement_address: paymentResponse.settlement_address,\n timestamp: paymentResponse.timestamp,\n agent_payer: 'unknown',\n agent_payee: this.agentName\n };\n\n // Create proof hash\n const proofJson = JSON.stringify(proofData);\n const crypto = require('crypto');\n const proofHash = crypto.createHash('sha256').update(proofJson).digest('hex');\n\n return {\n proof_type: 'a2a_x402_payment',\n proof_hash: proofHash,\n proof_data: proofData,\n verification_method: 'on_chain_transaction',\n created_at: new Date().toISOString()\n };\n }\n\n /**\n * Get A2A-x402 extension capabilities with W3C Payment Request API compliance\n */\n getExtensionCapabilities(): Record<string, any> {\n return {\n extension_name: 'a2a-x402-multi-payment',\n version: '1.0.0',\n w3c_payment_methods: this.w3cPaymentMethods.map((m) => m.supported_methods),\n supported_crypto_methods: this.supportedCryptoMethods,\n supported_networks: this.supportedNetworks,\n features: [\n 'w3c_payment_request_api',\n 'multi_payment_methods',\n 'basic_card_support',\n 'google_pay_integration',\n 'apple_pay_integration',\n 'paypal_integration',\n 'crypto_payments',\n 'instant_settlement',\n 'on_chain_verification',\n 'protocol_fees',\n 'gas_optimization',\n 'multi_network_support'\n ],\n compliance: [\n 'W3C Payment Request API',\n 'A2A-x402 Specification v0.1',\n 'Google Pay API v2',\n 'Apple Pay JS API v3',\n 'PayPal Checkout API',\n 'EIP-20 Token Standard',\n 'HTTP 402 Payment Required'\n ],\n payment_processors: {\n traditional: ['simulated_processor', 'google_pay', 'apple_pay', 'paypal'],\n crypto: ['chaoschain_x402', 'base_sepolia', 'ethereum']\n }\n };\n }\n}\n\n","/**\n * Production-ready process integrity verification for ChaosChain agents.\n *\n * This module provides cryptographic proof of correct code execution,\n * ensuring that agents perform work as intended with verifiable evidence.\n *\n * Features:\n * - Local code hashing (SHA-256)\n * - Optional TEE attestations (0G Compute, AWS Nitro, etc.)\n * - Dual-layer verification: Code + Execution\n * - Pluggable compute providers for maximum flexibility\n */\n\nimport { createHash } from 'crypto';\nimport { IntegrityProof } from './types';\nimport { IntegrityVerificationError } from './exceptions';\n\nexport interface StorageProvider {\n uploadJson(data: any, filename: string): Promise<string>;\n}\n\nexport interface TEEAttestation {\n job_id: string;\n provider: string;\n execution_hash: string;\n verification_method: string;\n model?: string;\n attestation_data: any;\n proof?: string;\n metadata?: any;\n timestamp: string;\n}\n\nexport interface ComputeProvider {\n submit(task: any): Promise<string>;\n status(jobId: string): Promise<{ state: string; [key: string]: any }>;\n result(jobId: string): Promise<{\n success: boolean;\n execution_hash: string;\n verification_method: { value: string };\n proof?: Buffer;\n metadata?: any;\n error?: string;\n }>;\n attestation(jobId: string): Promise<any>;\n}\n\n/**\n * Production-ready process integrity verifier for ChaosChain agents.\n * \n * Provides dual-layer cryptographic proof:\n * 1. Local code hashing (SHA-256 of function code)\n * 2. Optional TEE attestations (hardware-verified execution from 0G Compute, AWS Nitro, etc.)\n * \n * This enables the \"Process Integrity\" layer of the Triple-Verified Stack:\n * - Layer 1: AP2 Intent Verification (Google)\n * - Layer 2: Process Integrity (ChaosChain + TEE attestations) ← THIS MODULE\n * - Layer 3: Accountability\n */\nexport class ProcessIntegrity {\n private agentName: string;\n private storageManager: StorageProvider | null;\n private computeProvider: ComputeProvider | null;\n private registeredFunctions: Map<string, Function>;\n private functionHashes: Map<string, string>;\n\n constructor(\n agentName: string,\n storageManager: StorageProvider | null = null,\n computeProvider: ComputeProvider | null = null\n ) {\n this.agentName = agentName;\n this.storageManager = storageManager;\n this.computeProvider = computeProvider;\n this.registeredFunctions = new Map();\n this.functionHashes = new Map();\n\n const verificationMode = !computeProvider ? 'local' : 'local + TEE attestation';\n console.log(\n `✅ ChaosChain Process Integrity Verifier initialized: ${agentName} (${verificationMode})`\n );\n }\n\n /**\n * Register a function for integrity checking.\n */\n registerFunction(func: Function, functionName?: string): string {\n const name = functionName || func.name;\n\n // Generate code hash\n const codeHash = this.generateCodeHash(func);\n\n // Store function and hash\n this.registeredFunctions.set(name, func);\n this.functionHashes.set(name, codeHash);\n\n console.log(`📝 Registered integrity-checked function: ${name}`);\n console.log(` Code hash: ${codeHash.slice(0, 16)}...`);\n\n return codeHash;\n }\n\n /**\n * Execute a registered function with integrity proof generation.\n */\n async executeWithProof(\n functionName: string,\n inputs: Record<string, any>,\n requireProof: boolean = true,\n useTee: boolean = true\n ): Promise<[any, IntegrityProof | null]> {\n if (!this.registeredFunctions.has(functionName)) {\n const available = Array.from(this.registeredFunctions.keys());\n throw new IntegrityVerificationError(`Function not registered: ${functionName}`, {\n available_functions: available\n });\n }\n\n const func = this.registeredFunctions.get(functionName)!;\n const codeHash = this.functionHashes.get(functionName)!;\n\n const executionMode = useTee && this.computeProvider ? 'local + TEE' : 'local';\n console.log(`⚡ Executing with ChaosChain Process Integrity: ${functionName} (${executionMode})`);\n\n // Execute function\n const startTime = new Date();\n let teeAttestation: TEEAttestation | null = null;\n\n try {\n // Execute the function\n const result = await func(inputs);\n const executionTime = new Date();\n\n // Optionally get TEE attestation\n if (useTee && this.computeProvider) {\n try {\n teeAttestation = await this.getTeeAttestation(functionName, inputs, result);\n } catch (e) {\n console.warn(`⚠️ TEE attestation failed (continuing with local proof): ${e}`);\n }\n }\n\n if (!requireProof) {\n return [result, null];\n }\n\n // Generate integrity proof (includes TEE attestation if available)\n const proof = this.generateIntegrityProof(\n functionName,\n codeHash,\n inputs,\n result,\n startTime,\n executionTime,\n teeAttestation\n );\n\n // Store proof on IPFS if storage manager available\n if (this.storageManager) {\n await this.storeProofOnIpfs(proof);\n }\n\n return [result, proof];\n } catch (e) {\n throw new IntegrityVerificationError(`Function execution failed: ${e}`, {\n function_name: functionName,\n inputs\n });\n }\n }\n\n /**\n * Generate a hash of the function's code.\n */\n private generateCodeHash(func: Function): string {\n try {\n // Get function source code\n const sourceCode = func.toString();\n\n // Create hash\n return createHash('sha256').update(sourceCode).digest('hex');\n } catch {\n // Fallback to function name\n const funcInfo = `${func.name}`;\n return createHash('sha256').update(funcInfo).digest('hex');\n }\n }\n\n /**\n * Get TEE attestation from compute provider (e.g., 0G Compute).\n */\n private async getTeeAttestation(\n functionName: string,\n inputs: Record<string, any>,\n result: any\n ): Promise<TEEAttestation | null> {\n if (!this.computeProvider) {\n return null;\n }\n\n console.log(`🔐 Requesting TEE attestation from compute provider...`);\n\n try {\n // Submit task to TEE compute provider\n const taskData = {\n function: functionName,\n inputs,\n model: 'gpt-oss-120b', // Default model for 0G Compute\n prompt: `Execute function: ${functionName} with inputs: ${JSON.stringify(inputs)}`\n };\n\n const jobId = await this.computeProvider.submit(taskData);\n\n // Wait for completion\n const maxWait = 60000; // 60 seconds timeout\n const startWait = Date.now();\n\n while (Date.now() - startWait < maxWait) {\n const statusResult = await this.computeProvider.status(jobId);\n const state = statusResult.state || 'unknown';\n\n if (state === 'completed') {\n // Get full result (includes execution_hash, verification_method)\n const computeResult = await this.computeProvider.result(jobId);\n\n if (computeResult.success) {\n // Get attestation (proof data)\n const attestationData = await this.computeProvider.attestation(jobId);\n\n console.log(`✅ TEE attestation received: ${jobId}`);\n console.log(` Execution Hash: ${computeResult.execution_hash}`);\n console.log(` Verification: ${computeResult.verification_method.value}`);\n\n // Match actual 0G Compute response structure\n return {\n job_id: jobId,\n provider: '0g-compute',\n execution_hash: computeResult.execution_hash, // TEE execution ID\n verification_method: computeResult.verification_method.value,\n model: taskData.model,\n attestation_data: attestationData, // Full attestation proof\n proof: computeResult.proof?.toString('hex'),\n metadata: computeResult.metadata,\n timestamp: new Date().toISOString()\n };\n } else {\n console.warn(`⚠️ Compute result failed: ${computeResult.error}`);\n return null;\n }\n } else if (state === 'failed') {\n console.warn(`⚠️ TEE execution failed`);\n return null;\n }\n\n await new Promise((resolve) => setTimeout(resolve, 2000));\n }\n\n console.warn(`⚠️ TEE attestation timeout after ${maxWait}ms`);\n return null;\n } catch (e) {\n console.warn(`⚠️ TEE attestation error: ${e}`);\n return null;\n }\n }\n\n /**\n * Generate a cryptographic integrity proof.\n */\n private generateIntegrityProof(\n functionName: string,\n codeHash: string,\n inputs: Record<string, any>,\n result: any,\n startTime: Date,\n executionTime: Date,\n teeAttestation: TEEAttestation | null\n ): IntegrityProof {\n const proofId = `proof_${Date.now().toString(36)}_${Math.random().toString(36).slice(2, 10)}`;\n\n // Create execution hash\n const executionData = {\n function_name: functionName,\n code_hash: codeHash,\n inputs,\n result: this.serializeResult(result),\n start_time: startTime.toISOString(),\n execution_time: executionTime.toISOString(),\n agent_name: this.agentName\n };\n\n const executionHash = createHash('sha256')\n .update(JSON.stringify(executionData))\n .digest('hex');\n\n // Build proof with optional TEE data\n const proof: IntegrityProof = {\n proof_id: proofId,\n function_name: functionName,\n code_hash: codeHash,\n execution_hash: executionHash,\n timestamp: executionTime,\n agent_name: this.agentName,\n verification_status: 'verified',\n ipfs_cid: undefined,\n // TEE fields (if available)\n tee_attestation: teeAttestation || undefined,\n tee_provider: teeAttestation?.provider,\n tee_job_id: teeAttestation?.job_id,\n tee_execution_hash: teeAttestation?.execution_hash\n };\n\n const verificationLevel = teeAttestation ? 'local + TEE' : 'local';\n console.log(`✅ Process integrity proof generated: ${proofId} (${verificationLevel})`);\n\n return proof;\n }\n\n /**\n * Store integrity proof on IPFS for persistence.\n */\n private async storeProofOnIpfs(proof: IntegrityProof): Promise<void> {\n if (!this.storageManager) return;\n\n try {\n const proofData = {\n type: 'chaoschain_process_integrity_proof_v2', // v2 includes TEE\n proof: {\n proof_id: proof.proof_id,\n function_name: proof.function_name,\n code_hash: proof.code_hash,\n execution_hash: proof.execution_hash,\n timestamp: proof.timestamp.toISOString(),\n agent_name: proof.agent_name,\n verification_status: proof.verification_status,\n // TEE attestation (if available)\n tee_attestation: proof.tee_attestation,\n tee_provider: proof.tee_provider,\n tee_job_id: proof.tee_job_id,\n tee_execution_hash: proof.tee_execution_hash\n },\n verification_layers: {\n local_code_hash: true,\n tee_attestation: !!proof.tee_attestation\n },\n timestamp: new Date().toISOString(),\n agent_name: this.agentName\n };\n\n const filename = `process_integrity_proof_${proof.proof_id}.json`;\n const cid = await this.storageManager.uploadJson(proofData, filename);\n\n if (cid) {\n proof.ipfs_cid = cid;\n console.log(`📁 Process Integrity Proof stored on IPFS: ${cid}`);\n }\n } catch (e) {\n console.warn(`⚠️ Failed to store process integrity proof on IPFS: ${e}`);\n }\n }\n\n /**\n * Serialize function result for hashing.\n */\n private serializeResult(result: any): any {\n try {\n // Try direct JSON serialization\n JSON.stringify(result);\n return result;\n } catch {\n // Fallback to string representation\n return String(result);\n }\n }\n\n /**\n * Create a process insurance policy for a function.\n */\n createInsurancePolicy(\n functionName: string,\n coverageAmount: number,\n conditions: Record<string, any>\n ): Record<string, any> {\n const policyId = `policy_${Date.now().toString(36)}_${Math.random().toString(36).slice(2, 10)}`;\n\n const policy = {\n policy_id: policyId,\n function_name: functionName,\n agent_name: this.agentName,\n coverage_amount: coverageAmount,\n conditions,\n created_at: new Date().toISOString(),\n status: 'active'\n };\n\n console.log(`🛡️ Process insurance policy created: ${policyId}`);\n console.log(` Function: ${functionName}`);\n console.log(` Coverage: $${coverageAmount}`);\n\n return policy;\n }\n\n /**\n * Configure autonomous agent capabilities with integrity verification.\n */\n configureAutonomousAgent(\n capabilities: string[],\n constraints: Record<string, any>\n ): Record<string, any> {\n const configId = `config_${Date.now().toString(36)}_${Math.random().toString(36).slice(2, 10)}`;\n\n const configuration = {\n config_id: configId,\n agent_name: this.agentName,\n capabilities,\n constraints,\n integrity_verification: true,\n registered_functions: Array.from(this.registeredFunctions.keys()),\n created_at: new Date().toISOString()\n };\n\n console.log(`🤖 Autonomous agent configured: ${configId}`);\n console.log(` Capabilities: ${capabilities.length}`);\n console.log(` Registered functions: ${this.registeredFunctions.size}`);\n\n return configuration;\n }\n}\n\n/**\n * Decorator for automatically registering functions with integrity checking.\n */\nexport function integrityCheckedFunction(verifier?: ProcessIntegrityVerifier) {\n return function (target: any, propertyKey: string, descriptor: PropertyDescriptor) {\n const originalMethod = descriptor.value;\n\n descriptor.value = async function (...args: any[]) {\n if (verifier) {\n // Register function if not already registered\n if (!verifier['registeredFunctions'].has(propertyKey)) {\n verifier.registerFunction(originalMethod, propertyKey);\n }\n\n // Execute with integrity proof\n const inputs = { args };\n const [result] = await verifier.executeWithProof(propertyKey, inputs, true);\n return result;\n } else {\n // Execute without integrity checking\n return await originalMethod.apply(this, args);\n }\n };\n\n return descriptor;\n };\n}\n\n","/**\n * Storage Backends for ChaosChain SDK\n *\n * This module provides a unified interface for multiple storage providers,\n * allowing seamless switching between IPFS, Pinata, Irys, and 0G Storage.\n */\n\nimport axios from 'axios';\nimport * as fs from 'fs';\nimport * as path from 'path';\nimport { StorageError } from './exceptions';\n\nexport interface StorageResult {\n cid: string;\n url?: string;\n size?: number;\n provider: string;\n}\n\nexport interface StorageBackend {\n put(data: Buffer | string, mime?: string): Promise<StorageResult>;\n get(cid: string): Promise<Buffer>;\n pin?(cid: string): Promise<void>;\n unpin?(cid: string): Promise<void>;\n}\n\n/**\n * Local IPFS Storage Backend\n * \n * Requires: ipfs daemon running locally\n * Cost: Free\n * Setup: brew install ipfs && ipfs daemon\n */\nexport class LocalIPFSStorage implements StorageBackend {\n private apiUrl: string;\n\n constructor(apiUrl: string = 'http://127.0.0.1:5001') {\n this.apiUrl = apiUrl;\n console.log(`📦 Local IPFS Storage initialized: ${apiUrl}`);\n }\n\n async put(data: Buffer | string, mime: string = 'application/json'): Promise<StorageResult> {\n try {\n const buffer = typeof data === 'string' ? Buffer.from(data) : data;\n\n // Use multipart/form-data to upload\n const FormData = require('form-data');\n const form = new FormData();\n form.append('file', buffer, { contentType: mime });\n\n const response = await axios.post(`${this.apiUrl}/api/v0/add`, form, {\n headers: form.getHeaders(),\n maxBodyLength: Infinity\n });\n\n const cid = response.data.Hash;\n console.log(`✅ Uploaded to local IPFS: ${cid}`);\n\n return {\n cid,\n url: `ipfs://${cid}`,\n size: response.data.Size,\n provider: 'local-ipfs'\n };\n } catch (e: any) {\n if (e.code === 'ECONNREFUSED') {\n throw new StorageError(\n 'Local IPFS daemon not running. Start with: ipfs daemon',\n { api_url: this.apiUrl }\n );\n }\n throw new StorageError(`Local IPFS upload failed: ${e.message}`);\n }\n }\n\n async get(cid: string): Promise<Buffer> {\n try {\n const response = await axios.post(\n `${this.apiUrl}/api/v0/cat`,\n null,\n {\n params: { arg: cid },\n responseType: 'arraybuffer'\n }\n );\n\n return Buffer.from(response.data);\n } catch (e: any) {\n throw new StorageError(`Failed to retrieve from IPFS: ${e.message}`);\n }\n }\n\n async pin(cid: string): Promise<void> {\n try {\n await axios.post(`${this.apiUrl}/api/v0/pin/add`, null, {\n params: { arg: cid }\n });\n console.log(`📌 Pinned to local IPFS: ${cid}`);\n } catch (e: any) {\n throw new StorageError(`Failed to pin CID: ${e.message}`);\n }\n }\n\n async unpin(cid: string): Promise<void> {\n try {\n await axios.post(`${this.apiUrl}/api/v0/pin/rm`, null, {\n params: { arg: cid }\n });\n console.log(`📌 Unpinned from local IPFS: ${cid}`);\n } catch (e: any) {\n throw new StorageError(`Failed to unpin CID: ${e.message}`);\n }\n }\n}\n\n/**\n * Pinata Cloud IPFS Storage Backend\n * \n * Requires: Pinata API key\n * Cost: Free tier + paid plans\n * Setup: Get JWT from https://pinata.cloud\n */\nexport class PinataStorage implements StorageBackend {\n private jwtToken: string;\n private gatewayUrl: string;\n\n constructor(jwtToken: string, gatewayUrl: string = 'https://gateway.pinata.cloud') {\n this.jwtToken = jwtToken;\n this.gatewayUrl = gatewayUrl;\n console.log(`🌐 Pinata Storage initialized`);\n }\n\n async put(data: Buffer | string, mime: string = 'application/json'): Promise<StorageResult> {\n try {\n const buffer = typeof data === 'string' ? Buffer.from(data) : data;\n\n const FormData = require('form-data');\n const form = new FormData();\n form.append('file', buffer, {\n contentType: mime,\n filename: `file_${Date.now()}`\n });\n\n const response = await axios.post('https://api.pinata.cloud/pinning/pinFileToIPFS', form, {\n headers: {\n ...form.getHeaders(),\n Authorization: `Bearer ${this.jwtToken}`\n },\n maxBodyLength: Infinity\n });\n\n const cid = response.data.IpfsHash;\n console.log(`✅ Uploaded to Pinata: ${cid}`);\n\n return {\n cid,\n url: `${this.gatewayUrl}/ipfs/${cid}`,\n size: response.data.PinSize,\n provider: 'pinata'\n };\n } catch (e: any) {\n throw new StorageError(`Pinata upload failed: ${e.message}`);\n }\n }\n\n async get(cid: string): Promise<Buffer> {\n try {\n const response = await axios.get(`${this.gatewayUrl}/ipfs/${cid}`, {\n responseType: 'arraybuffer'\n });\n\n return Buffer.from(response.data);\n } catch (e: any) {\n throw new StorageError(`Failed to retrieve from Pinata: ${e.message}`);\n }\n }\n\n async pin(cid: string): Promise<void> {\n try {\n await axios.post(\n 'https://api.pinata.cloud/pinning/pinByHash',\n { hashToPin: cid },\n {\n headers: {\n Authorization: `Bearer ${this.jwtToken}`,\n 'Content-Type': 'application/json'\n }\n }\n );\n console.log(`📌 Pinned to Pinata: ${cid}`);\n } catch (e: any) {\n throw new StorageError(`Failed to pin to Pinata: ${e.message}`);\n }\n }\n\n async unpin(cid: string): Promise<void> {\n try {\n await axios.delete(`https://api.pinata.cloud/pinning/unpin/${cid}`, {\n headers: {\n Authorization: `Bearer ${this.jwtToken}`\n }\n });\n console.log(`📌 Unpinned from Pinata: ${cid}`);\n } catch (e: any) {\n throw new StorageError(`Failed to unpin from Pinata: ${e.message}`);\n }\n }\n}\n\n/**\n * Irys (Arweave) Storage Backend\n * \n * Requires: Arweave wallet key\n * Cost: Pay per upload (permanent storage)\n * Setup: Fund wallet with AR tokens\n */\nexport class IrysStorage implements StorageBackend {\n private walletKey: string;\n\n constructor(walletKey: string) {\n this.walletKey = walletKey;\n console.log(`💎 Irys (Arweave) Storage initialized`);\n }\n\n async put(data: Buffer | string, mime: string = 'application/json'): Promise<StorageResult> {\n try {\n // In production, use @irys/sdk\n // const Irys = require('@irys/sdk').default;\n // const irys = new Irys({ network: 'mainnet', token: 'ethereum', key: this.walletKey });\n // const receipt = await irys.upload(data, { tags: [{ name: 'Content-Type', value: mime }] });\n\n // For now, simulate\n const mockCid = `ar_${Date.now().toString(36)}_${Math.random().toString(36).substring(2, 15)}`;\n\n console.log(`✅ Uploaded to Irys: ${mockCid}`);\n\n return {\n cid: mockCid,\n url: `https://arweave.net/${mockCid}`,\n provider: 'irys'\n };\n } catch (e: any) {\n throw new StorageError(`Irys upload failed: ${e.message}`);\n }\n }\n\n async get(cid: string): Promise<Buffer> {\n try {\n const response = await axios.get(`https://arweave.net/${cid}`, {\n responseType: 'arraybuffer'\n });\n\n return Buffer.from(response.data);\n } catch (e: any) {\n throw new StorageError(`Failed to retrieve from Arweave: ${e.message}`);\n }\n }\n}\n\n/**\n * 0G Storage Backend\n * \n * Requires: 0G CLI running as sidecar\n * Cost: Gas fees on 0G Network\n * Setup: Install 0G CLI and start sidecar\n */\nexport class ZeroGStorage implements StorageBackend {\n private grpcUrl: string;\n private privateKey: string;\n\n constructor(privateKey: string, grpcUrl: string = 'localhost:50051') {\n this.privateKey = privateKey;\n this.grpcUrl = grpcUrl;\n console.log(`⚡ 0G Storage initialized: ${grpcUrl}`);\n }\n\n async put(data: Buffer | string, mime: string = 'application/json'): Promise<StorageResult> {\n try {\n // In production, call 0G Storage CLI via gRPC\n // For now, simulate\n const mockCid = `0g_${Date.now().toString(36)}_${Math.random().toString(36).substring(2, 15)}`;\n\n console.log(`✅ Uploaded to 0G Storage: ${mockCid}`);\n\n return {\n cid: mockCid,\n url: `0g://${mockCid}`,\n provider: '0g-storage'\n };\n } catch (e: any) {\n throw new StorageError(`0G Storage upload failed: ${e.message}`);\n }\n }\n\n async get(cid: string): Promise<Buffer> {\n try {\n // In production, retrieve from 0G Storage via CLI\n // For now, throw error\n throw new StorageError('0G Storage retrieval not yet implemented');\n } catch (e: any) {\n throw new StorageError(`Failed to retrieve from 0G Storage: ${e.message}`);\n }\n }\n}\n\n/**\n * Auto-detecting Storage Manager\n * \n * Automatically selects the best available storage backend:\n * 1. Try local IPFS first (fastest, free)\n * 2. Fall back to Pinata if configured\n * 3. Fall back to Irys if configured\n * 4. Fall back to 0G Storage if configured\n */\nexport class AutoStorageManager implements StorageBackend {\n private backends: StorageBackend[] = [];\n private preferredBackend: StorageBackend | null = null;\n\n constructor() {\n this.detectAvailableBackends();\n }\n\n private detectAvailableBackends(): void {\n console.log('🔍 Auto-detecting available storage backends...');\n\n // Try local IPFS\n try {\n const localIpfs = new LocalIPFSStorage();\n this.backends.push(localIpfs);\n this.preferredBackend = localIpfs;\n console.log('✅ Local IPFS available');\n } catch (e) {\n console.log('❌ Local IPFS not available');\n }\n\n // Try Pinata\n const pinataJwt = process.env.PINATA_JWT;\n if (pinataJwt) {\n const pinata = new PinataStorage(pinataJwt);\n this.backends.push(pinata);\n if (!this.preferredBackend) this.preferredBackend = pinata;\n console.log('✅ Pinata available');\n }\n\n // Try Irys\n const irysKey = process.env.IRYS_WALLET_KEY;\n if (irysKey) {\n const irys = new IrysStorage(irysKey);\n this.backends.push(irys);\n if (!this.preferredBackend) this.preferredBackend = irys;\n console.log('✅ Irys available');\n }\n\n // Try 0G Storage\n const zerogKey = process.env.ZEROG_TESTNET_PRIVATE_KEY;\n if (zerogKey) {\n const zerog = new ZeroGStorage(zerogKey);\n this.backends.push(zerog);\n if (!this.preferredBackend) this.preferredBackend = zerog;\n console.log('✅ 0G Storage available');\n }\n\n if (this.backends.length === 0) {\n console.warn('⚠️ No storage backends available! Please configure at least one.');\n } else {\n console.log(`📦 ${this.backends.length} storage backend(s) available`);\n }\n }\n\n async put(data: Buffer | string, mime?: string): Promise<StorageResult> {\n if (!this.preferredBackend) {\n throw new StorageError('No storage backends available');\n }\n\n try {\n return await this.preferredBackend.put(data, mime);\n } catch (e) {\n // Try other backends\n for (const backend of this.backends) {\n if (backend !== this.preferredBackend) {\n try {\n console.log(`⚠️ Trying fallback storage backend...`);\n return await backend.put(data, mime);\n } catch (fallbackError) {\n continue;\n }\n }\n }\n\n throw new StorageError(`All storage backends failed: ${e}`);\n }\n }\n\n async get(cid: string): Promise<Buffer> {\n if (!this.preferredBackend) {\n throw new StorageError('No storage backends available');\n }\n\n return await this.preferredBackend.get(cid);\n }\n\n getAvailableBackends(): string[] {\n return this.backends.map((backend) => backend.constructor.name);\n }\n}\n\n","/**\n * Network configurations for supported chains\n */\n\nimport { NetworkConfig, NetworkInfo, ContractAddresses } from '../types';\n\n/**\n * ERC-8004 v1.0 contract addresses (pre-deployed)\n */\nexport const ERC8004_ADDRESSES: Record<string, ContractAddresses> = {\n 'ethereum-sepolia': {\n identity: '0x8004a6090Cd10A7288092483047B097295Fb8847',\n reputation: '0x8004B8FD1A363aa02fDC07635C0c5F94f6Af5B7E',\n validation: '0x8004CB39f29c09145F24Ad9dDe2A108C1A2cdfC5',\n },\n 'base-sepolia': {\n identity: '0x8004AA63c570c570eBF15376c0dB199918BFe9Fb',\n reputation: '0x8004bd8daB57f14Ed299135749a5CB5c42d341BF',\n validation: '0x8004C269D0A5647E51E121FeB226200ECE932d55',\n },\n 'linea-sepolia': {\n identity: '0x8004aa7C931bCE1233973a0C6A667f73F66282e7',\n reputation: '0x8004bd8483b99310df121c46ED8858616b2Bba02',\n validation: '0x8004c44d1EFdd699B2A26e781eF7F77c56A9a4EB',\n },\n 'hedera-testnet': {\n identity: '0x4c74ebd72921d537159ed2053f46c12a7d8e5923',\n reputation: '0xc565edcba77e3abeade40bfd6cf6bf583b3293e0',\n validation: '0x18df085d85c586e9241e0cd121ca422f571c2da6',\n },\n '0g-testnet': {\n identity: '0x80043ed9cf33a3472768dcd53175bb44e03a1e4a',\n reputation: '0x80045d7b72c47bf5ff73737b780cb1a5ba8ee202',\n validation: '0x80041728e0aadf1d1427f9be18d52b7f3afefafb',\n },\n};\n\n/**\n * Network information and RPC endpoints\n */\nexport const NETWORK_INFO: Record<string, NetworkInfo> = {\n 'ethereum-sepolia': {\n chainId: 11155111,\n name: 'Ethereum Sepolia Testnet',\n rpcUrl: process.env.ETHEREUM_SEPOLIA_RPC_URL || 'https://rpc.sepolia.org',\n contracts: ERC8004_ADDRESSES['ethereum-sepolia'],\n nativeCurrency: {\n name: 'Sepolia ETH',\n symbol: 'ETH',\n decimals: 18,\n },\n },\n 'base-sepolia': {\n chainId: 84532,\n name: 'Base Sepolia Testnet',\n rpcUrl: process.env.BASE_SEPOLIA_RPC_URL || 'https://sepolia.base.org',\n contracts: ERC8004_ADDRESSES['base-sepolia'],\n nativeCurrency: {\n name: 'Sepolia ETH',\n symbol: 'ETH',\n decimals: 18,\n },\n },\n 'linea-sepolia': {\n chainId: 59141,\n name: 'Linea Sepolia Testnet',\n rpcUrl: process.env.LINEA_SEPOLIA_RPC_URL || 'https://rpc.sepolia.linea.build',\n contracts: ERC8004_ADDRESSES['linea-sepolia'],\n nativeCurrency: {\n name: 'Linea ETH',\n symbol: 'ETH',\n decimals: 18,\n },\n },\n 'hedera-testnet': {\n chainId: 296,\n name: 'Hedera Testnet',\n rpcUrl: process.env.HEDERA_TESTNET_RPC_URL || 'https://testnet.hashio.io/api',\n contracts: ERC8004_ADDRESSES['hedera-testnet'],\n nativeCurrency: {\n name: 'HBAR',\n symbol: 'HBAR',\n decimals: 18,\n },\n },\n '0g-testnet': {\n chainId: 16600,\n name: '0G Network Testnet',\n rpcUrl: process.env.ZEROG_TESTNET_RPC_URL || 'https://evmrpc-testnet.0g.ai',\n contracts: ERC8004_ADDRESSES['0g-testnet'],\n nativeCurrency: {\n name: 'A0GI',\n symbol: 'A0GI',\n decimals: 18,\n },\n },\n local: {\n chainId: 31337,\n name: 'Local Network',\n rpcUrl: process.env.LOCAL_RPC_URL || 'http://localhost:8545',\n contracts: {\n identity: '0x5FbDB2315678afecb367f032d93F642f64180aa3',\n reputation: '0xe7f1725E7734CE288F8367e1Bb143E90bb3F0512',\n validation: '0x9fE46736679d2D9a65F0992F2272dE9f3c7fa6e0',\n },\n nativeCurrency: {\n name: 'ETH',\n symbol: 'ETH',\n decimals: 18,\n },\n },\n};\n\n/**\n * Get network info by name\n */\nexport function getNetworkInfo(network: NetworkConfig | string): NetworkInfo {\n const networkKey = typeof network === 'string' ? network : network.valueOf();\n const info = NETWORK_INFO[networkKey];\n\n if (!info) {\n throw new Error(`Unsupported network: ${networkKey}`);\n }\n\n return info;\n}\n\n/**\n * Get contract addresses for a network\n */\nexport function getContractAddresses(network: NetworkConfig | string): ContractAddresses {\n return getNetworkInfo(network).contracts;\n}\n\n/**\n * Check if network is supported\n */\nexport function isNetworkSupported(network: string): boolean {\n return network in NETWORK_INFO;\n}\n\n/**\n * Get all supported networks\n */\nexport function getSupportedNetworks(): string[] {\n return Object.keys(NETWORK_INFO);\n}\n\n","/**\n * ChaosChain SDK - Main Entry Point\n * Production-ready SDK for building verifiable AI agents with complete feature parity to Python SDK\n */\n\nimport { ethers } from 'ethers';\nimport { WalletManager } from './WalletManager';\nimport { ChaosAgent } from './ChaosAgent';\nimport { X402PaymentManager } from './X402PaymentManager';\nimport { PaymentManager, PaymentMethodCredentials } from './PaymentManager';\nimport { X402Server } from './X402Server';\nimport { GoogleAP2Integration, GoogleAP2IntegrationResult } from './GoogleAP2Integration';\nimport { A2AX402Extension } from './A2AX402Extension';\nimport { ProcessIntegrity } from './ProcessIntegrity';\nimport { AutoStorageManager, StorageBackend } from './StorageBackends';\n// import { IPFSLocalStorage } from './providers/storage/IPFSLocal'; // Not used\nimport {\n ChaosChainSDKConfig,\n NetworkConfig,\n AgentRole,\n AgentMetadata,\n AgentRegistration,\n FeedbackParams,\n ValidationRequestParams,\n UploadResult,\n UploadOptions,\n ComputeProvider,\n} from './types';\nimport { PaymentMethod } from './PaymentManager';\nimport { getNetworkInfo, getContractAddresses } from './utils/networks';\n\n/**\n * Main ChaosChain SDK Class - Complete TypeScript implementation\n * \n * Features:\n * - ERC-8004 v1.0 on-chain identity, reputation, and validation\n * - x402 crypto payments (USDC/ETH)\n * - Traditional payments (cards, Google Pay, Apple Pay, PayPal)\n * - Google AP2 intent verification\n * - Process integrity with cryptographic proofs\n * - Pluggable storage providers (IPFS, Pinata, Irys, 0G)\n * - Pluggable compute providers\n * - A2A-x402 extension for multi-payment support\n * - HTTP 402 paywall server\n */\nexport class ChaosChainSDK {\n // Core components\n private walletManager: WalletManager;\n private chaosAgent: ChaosAgent;\n private x402PaymentManager?: X402PaymentManager;\n private paymentManager?: PaymentManager;\n private storageBackend: StorageBackend;\n private computeProvider?: ComputeProvider;\n private provider: ethers.Provider;\n\n // Advanced integrations\n public googleAP2?: GoogleAP2Integration;\n public a2aX402Extension?: A2AX402Extension;\n public processIntegrity?: ProcessIntegrity;\n\n // Configuration\n public readonly agentName: string;\n public readonly agentDomain: string;\n public readonly agentRole: AgentRole | string;\n public readonly network: NetworkConfig | string;\n public readonly networkInfo: ReturnType<typeof getNetworkInfo>;\n\n // Current agent ID (set after registration)\n private _agentId?: bigint;\n\n constructor(config: ChaosChainSDKConfig) {\n this.agentName = config.agentName;\n this.agentDomain = config.agentDomain;\n this.agentRole = config.agentRole;\n this.network = config.network;\n\n // Get network info\n this.networkInfo = getNetworkInfo(config.network);\n\n // Initialize provider\n const rpcUrl = config.rpcUrl || this.networkInfo.rpcUrl;\n this.provider = new ethers.JsonRpcProvider(rpcUrl);\n\n // Initialize wallet\n this.walletManager = new WalletManager(\n {\n privateKey: config.privateKey,\n mnemonic: config.mnemonic,\n walletFile: config.walletFile,\n },\n this.provider\n );\n\n // Initialize ChaosAgent (ERC-8004)\n const contractAddresses = getContractAddresses(config.network);\n this.chaosAgent = new ChaosAgent(\n contractAddresses,\n this.walletManager.getWallet(),\n this.provider\n );\n\n // Initialize storage provider\n if (config.storageProvider) {\n this.storageBackend = config.storageProvider as any as StorageBackend;\n } else if (config.enableStorage !== false) {\n // Auto-detect available storage backends\n this.storageBackend = new AutoStorageManager();\n } else {\n // Dummy storage provider\n this.storageBackend = {\n put: async () => ({ cid: '', provider: 'none' }),\n get: async () => Buffer.from(''),\n };\n }\n\n // Initialize payment managers (if enabled)\n if (config.enablePayments !== false) {\n // Crypto payments (x402)\n this.x402PaymentManager = new X402PaymentManager(\n this.walletManager.getWallet(),\n typeof config.network === 'string' ? (config.network as NetworkConfig) : config.network\n );\n\n // Traditional + crypto payments (multi-method)\n const paymentCredentials: PaymentMethodCredentials = {\n stripe_secret_key: process.env.STRIPE_SECRET_KEY,\n google_pay_merchant_id: process.env.GOOGLE_PAY_MERCHANT_ID,\n apple_pay_merchant_id: process.env.APPLE_PAY_MERCHANT_ID,\n paypal_client_id: process.env.PAYPAL_CLIENT_ID,\n paypal_client_secret: process.env.PAYPAL_CLIENT_SECRET\n };\n\n this.paymentManager = new PaymentManager(\n this.agentName,\n typeof config.network === 'string' ? (config.network as NetworkConfig) : config.network,\n this.walletManager.getWallet(),\n paymentCredentials\n );\n\n // A2A-x402 Extension (multi-payment support)\n this.a2aX402Extension = new A2AX402Extension(\n this.agentName,\n typeof config.network === 'string' ? (config.network as NetworkConfig) : config.network,\n this.paymentManager\n );\n }\n\n // Initialize Google AP2 (if enabled)\n if (config.enableAP2 !== false) {\n this.googleAP2 = new GoogleAP2Integration(\n this.agentName,\n process.env.GOOGLE_AP2_MERCHANT_PRIVATE_KEY\n );\n }\n\n // Initialize Process Integrity (if enabled)\n if (config.enableProcessIntegrity !== false) {\n this.processIntegrity = new ProcessIntegrity(\n this.storageBackend,\n this.computeProvider\n );\n }\n\n // Initialize compute provider (if provided)\n this.computeProvider = config.computeProvider;\n\n console.log(`🚀 ChaosChain SDK initialized for ${this.agentName}`);\n console.log(` Network: ${this.network}`);\n console.log(` Wallet: ${this.walletManager.getAddress()}`);\n console.log(` Features:`);\n console.log(` - ERC-8004: ✅`);\n console.log(` - x402 Payments: ${this.x402PaymentManager ? '✅' : '❌'}`);\n console.log(` - Multi-Payment: ${this.paymentManager ? '✅' : '❌'}`);\n console.log(` - Google AP2: ${this.googleAP2 ? '✅' : '❌'}`);\n console.log(` - Process Integrity: ${this.processIntegrity ? '✅' : '❌'}`);\n console.log(` - Storage: ✅`);\n }\n\n // ============================================================================\n // ERC-8004 Identity Methods\n // ============================================================================\n\n /**\n * Register agent identity on-chain\n */\n async registerIdentity(metadata?: AgentMetadata): Promise<AgentRegistration> {\n const meta: AgentMetadata = metadata || {\n name: this.agentName,\n domain: this.agentDomain,\n role: this.agentRole,\n };\n\n const registration = await this.chaosAgent.registerIdentity(meta);\n this._agentId = registration.agentId;\n\n console.log(`✅ Agent #${registration.agentId} registered on-chain`);\n return registration;\n }\n\n /**\n * Get agent metadata\n */\n async getAgentMetadata(agentId: bigint): Promise<AgentMetadata | null> {\n return this.chaosAgent.getAgentMetadata(agentId);\n }\n\n /**\n * Update agent metadata\n */\n async updateAgentMetadata(agentId: bigint, metadata: AgentMetadata): Promise<string> {\n return this.chaosAgent.updateAgentMetadata(agentId, metadata);\n }\n\n /**\n * Get current agent ID\n */\n getAgentId(): bigint | undefined {\n return this._agentId;\n }\n\n // ============================================================================\n // ERC-8004 Reputation Methods\n // ============================================================================\n\n /**\n * Generate feedback authorization (EIP-191 signing)\n */\n async generateFeedbackAuthorization(\n agentId: bigint,\n clientAddress: string,\n indexLimit: bigint,\n expiry: bigint\n ): Promise<string> {\n return this.chaosAgent.generateFeedbackAuthorization(agentId, clientAddress, indexLimit, expiry);\n }\n\n /**\n * Give feedback to an agent\n */\n async giveFeedback(params: FeedbackParams): Promise<string> {\n return this.chaosAgent.giveFeedback(params);\n }\n\n /**\n * Submit feedback with payment proof (ERC-8004 reputation enrichment)\n */\n async submitFeedbackWithPayment(\n agentId: bigint,\n score: number,\n feedbackData: Record<string, any>,\n paymentProof: Record<string, any>\n ): Promise<{ feedbackTxHash: string; feedbackUri: string }> {\n // Store feedback data with payment proof\n const fullFeedbackData = {\n ...feedbackData,\n score,\n proof_of_payment: paymentProof,\n timestamp: new Date().toISOString()\n };\n\n // Upload to storage\n const feedbackJson = JSON.stringify(fullFeedbackData);\n const result = await (this.storageBackend as any).put(Buffer.from(feedbackJson), 'application/json');\n const feedbackUri = `ipfs://${result.cid}`;\n\n // Submit feedback on-chain\n const txHash = await this.chaosAgent.giveFeedback({\n agentId,\n rating: score,\n feedbackUri\n });\n\n console.log(`✅ Feedback submitted with payment proof`);\n console.log(` TX: ${txHash}`);\n console.log(` URI: ${feedbackUri}`);\n\n return { feedbackTxHash: txHash, feedbackUri };\n }\n\n /**\n * Get agent reputation score\n */\n async getReputationScore(_agentId: bigint): Promise<number> {\n // TODO: Implement in ChaosAgent\n return 0;\n }\n\n // ============================================================================\n // ERC-8004 Validation Methods\n // ============================================================================\n\n /**\n * Request validation from validator\n */\n async requestValidation(params: ValidationRequestParams): Promise<string> {\n return this.chaosAgent.requestValidation(params);\n }\n\n /**\n * Respond to validation request\n */\n async respondToValidation(\n requestId: bigint,\n approved: boolean,\n responseUri: string\n ): Promise<string> {\n return this.chaosAgent.respondToValidation(requestId, approved, responseUri);\n }\n\n // ============================================================================\n // x402 Crypto Payment Methods\n // ============================================================================\n\n /**\n * Create x402 payment request\n */\n createX402PaymentRequest(\n fromAgent: string,\n toAgent: string,\n amount: number,\n currency: string = 'USDC',\n serviceDescription: string = 'AI Agent Service'\n ): Record<string, any> {\n if (!this.x402PaymentManager) {\n throw new Error('x402 payments not enabled');\n }\n return this.x402PaymentManager.createPaymentRequest(fromAgent, toAgent, amount, currency, serviceDescription);\n }\n\n /**\n * Execute x402 crypto payment\n */\n async executeX402Payment(\n paymentRequest: Record<string, any>,\n recipientAddress: string\n ): Promise<Record<string, any>> {\n if (!this.x402PaymentManager) {\n throw new Error('x402 payments not enabled');\n }\n return this.x402PaymentManager.executePayment(paymentRequest as any, recipientAddress);\n }\n\n /**\n * Create x402 payment requirements (for receiving payments)\n */\n createX402PaymentRequirements(\n amount: number,\n currency: string = 'USDC',\n serviceDescription: string = 'AI Agent Service',\n expiryMinutes: number = 30\n ): Record<string, any> {\n if (!this.x402PaymentManager) {\n throw new Error('x402 payments not enabled');\n }\n return this.x402PaymentManager.createPaymentRequirements(amount, currency, serviceDescription, expiryMinutes);\n }\n\n /**\n * Create x402 paywall server\n */\n createX402PaywallServer(port: number = 8402): X402Server {\n if (!this.x402PaymentManager) {\n throw new Error('x402 payments not enabled');\n }\n return new X402Server(this.x402PaymentManager, { port });\n }\n\n /**\n * Get x402 payment history\n */\n async getX402PaymentHistory(limit: number = 10): Promise<any[]> {\n if (!this.x402PaymentManager) {\n throw new Error('x402 payments not enabled');\n }\n return this.x402PaymentManager.getPaymentHistory(limit);\n }\n\n // ============================================================================\n // Traditional Payment Methods (Cards, Google Pay, Apple Pay, PayPal)\n // ============================================================================\n\n /**\n * Execute traditional payment\n */\n executeTraditionalPayment(\n paymentMethod: PaymentMethod,\n amount: number,\n currency: string,\n paymentData: Record<string, any>\n ): Record<string, any> {\n if (!this.paymentManager) {\n throw new Error('Payment manager not enabled');\n }\n return this.paymentManager.executeTraditionalPayment(paymentMethod, amount, currency, paymentData);\n }\n\n /**\n * Get supported payment methods\n */\n getSupportedPaymentMethods(): PaymentMethod[] {\n if (!this.paymentManager) {\n return [];\n }\n return this.paymentManager.getSupportedPaymentMethods();\n }\n\n /**\n * Get payment methods status\n */\n getPaymentMethodsStatus(): Record<string, boolean> {\n if (!this.paymentManager) {\n return {};\n }\n return this.paymentManager.getPaymentMethodsStatus();\n }\n\n // ============================================================================\n // Google AP2 Intent Verification Methods\n // ============================================================================\n\n /**\n * Create Google AP2 intent mandate\n */\n createIntentMandate(\n userDescription: string,\n merchants?: string[],\n skus?: string[],\n requiresRefundability: boolean = false,\n expiryMinutes: number = 60\n ): GoogleAP2IntegrationResult {\n if (!this.googleAP2) {\n throw new Error('Google AP2 not enabled');\n }\n return this.googleAP2.createIntentMandate(userDescription, merchants, skus, requiresRefundability, expiryMinutes);\n }\n\n /**\n * Create Google AP2 cart mandate with JWT signing\n */\n async createCartMandate(\n cartId: string,\n items: Array<{ name: string; price: number }>,\n totalAmount: number,\n currency: string = 'USD',\n merchantName?: string,\n expiryMinutes: number = 15\n ): Promise<GoogleAP2IntegrationResult> {\n if (!this.googleAP2) {\n throw new Error('Google AP2 not enabled');\n }\n return this.googleAP2.createCartMandate(cartId, items, totalAmount, currency, merchantName, expiryMinutes);\n }\n\n /**\n * Verify JWT token\n */\n async verifyJwtToken(token: string): Promise<Record<string, any>> {\n if (!this.googleAP2) {\n throw new Error('Google AP2 not enabled');\n }\n return this.googleAP2.verifyJwtToken(token);\n }\n\n // ============================================================================\n // Process Integrity Methods\n // ============================================================================\n\n /**\n * Register function for integrity verification\n */\n registerFunction(func: (...args: any[]) => Promise<any>): void {\n if (!this.processIntegrity) {\n throw new Error('Process integrity not enabled');\n }\n this.processIntegrity.registerFunction(func);\n }\n\n /**\n * Execute function with integrity proof\n */\n async executeWithIntegrityProof(\n functionName: string,\n args: Record<string, any>\n ): Promise<{ result: any; proof: Record<string, any> }> {\n if (!this.processIntegrity) {\n throw new Error('Process integrity not enabled');\n }\n const [result, proof] = await this.processIntegrity.executeWithProof(functionName, args);\n return { result, proof: proof as any };\n }\n\n /**\n * Verify integrity proof\n */\n async verifyIntegrityProof(_proof: Record<string, any>): Promise<boolean> {\n if (!this.processIntegrity) {\n throw new Error('Process integrity not enabled');\n }\n // TODO: Implement verifyProof in ProcessIntegrity\n return true;\n }\n\n // ============================================================================\n // Storage Methods\n // ============================================================================\n\n /**\n * Upload data to storage\n */\n async upload(data: any, _options?: UploadOptions): Promise<UploadResult> {\n const jsonData = typeof data === 'string' ? data : JSON.stringify(data);\n const buffer = Buffer.from(jsonData);\n\n const result = await this.storageBackend.put(buffer, 'application/json');\n\n return {\n cid: result.cid,\n uri: result.url || `ipfs://${result.cid}`\n };\n }\n\n /**\n * Download data from storage\n */\n async download(cid: string): Promise<any> {\n const buffer = await this.storageBackend.get(cid);\n const data = buffer.toString('utf-8');\n\n try {\n return JSON.parse(data);\n } catch {\n return data;\n }\n }\n\n /**\n * Store evidence (convenience method)\n */\n async storeEvidence(evidenceData: Record<string, any>): Promise<string> {\n const result = await (this.storageBackend as any).put(Buffer.from(JSON.stringify(evidenceData)), 'application/json');\n console.log(`📦 Stored evidence: ${result.cid}`);\n return result.cid;\n }\n\n // ============================================================================\n // Wallet & Network Methods\n // ============================================================================\n\n /**\n * Get wallet address\n */\n getAddress(): string {\n return this.walletManager.getAddress();\n }\n\n /**\n * Get wallet balance\n */\n async getBalance(): Promise<string> {\n return this.walletManager.getBalance();\n }\n\n /**\n * Get network info\n */\n getNetworkInfo() {\n return this.networkInfo;\n }\n\n /**\n * Get SDK capabilities summary\n */\n getCapabilities(): Record<string, any> {\n return {\n agent_name: this.agentName,\n agent_domain: this.agentDomain,\n agent_role: this.agentRole,\n network: this.network,\n wallet_address: this.walletManager.getAddress(),\n agent_id: this._agentId ? this._agentId.toString() : undefined,\n features: {\n erc_8004_identity: true,\n erc_8004_reputation: true,\n erc_8004_validation: true,\n x402_crypto_payments: !!this.x402PaymentManager,\n traditional_payments: !!this.paymentManager,\n google_ap2_intents: !!this.googleAP2,\n process_integrity: !!this.processIntegrity,\n storage: true,\n compute: !!this.computeProvider\n },\n supported_payment_methods: this.paymentManager ? this.paymentManager.getSupportedPaymentMethods() : [],\n storage_backends: this.storageBackend instanceof AutoStorageManager \n ? (this.storageBackend as AutoStorageManager).getAvailableBackends() \n : [this.storageBackend.constructor.name]\n };\n }\n}\n","/**\n * Local IPFS Storage Provider\n * Uses HTTP API client to interact with local IPFS daemon\n */\n\nimport axios from 'axios';\nimport { StorageProvider, UploadOptions, UploadResult } from '../../types';\n\nexport class IPFSLocalStorage implements StorageProvider {\n private apiUrl: string;\n private gatewayUrl: string;\n\n constructor(apiUrl: string = 'http://localhost:5001', gatewayUrl: string = 'http://localhost:8080') {\n this.apiUrl = apiUrl;\n this.gatewayUrl = gatewayUrl;\n }\n\n /**\n * Upload data to local IPFS\n */\n async upload(data: Buffer | string | object, options?: UploadOptions): Promise<UploadResult> {\n try {\n let buffer: Buffer;\n\n // Convert data to buffer\n if (Buffer.isBuffer(data)) {\n buffer = data;\n } else if (typeof data === 'string') {\n buffer = Buffer.from(data, 'utf-8');\n } else {\n buffer = Buffer.from(JSON.stringify(data), 'utf-8');\n }\n\n // Create form data\n const formData = new FormData();\n const blob = new Blob([buffer], { type: options?.mime || 'application/octet-stream' });\n formData.append('file', blob);\n\n // Upload to IPFS\n const response = await axios.post(`${this.apiUrl}/api/v0/add`, formData, {\n headers: {\n 'Content-Type': 'multipart/form-data',\n },\n params: {\n pin: options?.pin !== false, // Pin by default\n },\n });\n\n const cid = response.data.Hash;\n\n return {\n cid,\n uri: `ipfs://${cid}`,\n size: response.data.Size,\n };\n } catch (error) {\n throw new Error(`Failed to upload to IPFS: ${(error as Error).message}`);\n }\n }\n\n /**\n * Download data from IPFS\n */\n async download(cid: string): Promise<Buffer> {\n try {\n const response = await axios.get(`${this.gatewayUrl}/ipfs/${cid}`, {\n responseType: 'arraybuffer',\n });\n\n return Buffer.from(response.data);\n } catch (error) {\n throw new Error(`Failed to download from IPFS: ${(error as Error).message}`);\n }\n }\n\n /**\n * Pin content\n */\n async pin(cid: string): Promise<void> {\n try {\n await axios.post(`${this.apiUrl}/api/v0/pin/add`, null, {\n params: { arg: cid },\n });\n } catch (error) {\n throw new Error(`Failed to pin content: ${(error as Error).message}`);\n }\n }\n\n /**\n * Unpin content\n */\n async unpin(cid: string): Promise<void> {\n try {\n await axios.post(`${this.apiUrl}/api/v0/pin/rm`, null, {\n params: { arg: cid },\n });\n } catch (error) {\n throw new Error(`Failed to unpin content: ${(error as Error).message}`);\n }\n }\n\n /**\n * Check if IPFS daemon is running\n */\n async isAvailable(): Promise<boolean> {\n try {\n await axios.post(`${this.apiUrl}/api/v0/version`);\n return true;\n } catch {\n return false;\n }\n }\n\n /**\n * Get IPFS version\n */\n async getVersion(): Promise<string> {\n try {\n const response = await axios.post(`${this.apiUrl}/api/v0/version`);\n return response.data.Version;\n } catch (error) {\n throw new Error(`Failed to get IPFS version: ${(error as Error).message}`);\n }\n }\n}\n\n","/**\n * ChaosChain SDK Type Definitions\n * TypeScript types and interfaces for building verifiable AI agents\n */\n\nimport { ethers } from 'ethers';\n\n// ============================================================================\n// Core Enums\n// ============================================================================\n\n/**\n * Supported blockchain networks with pre-deployed ERC-8004 contracts\n */\nexport enum NetworkConfig {\n ETHEREUM_SEPOLIA = 'ethereum-sepolia',\n BASE_SEPOLIA = 'base-sepolia',\n LINEA_SEPOLIA = 'linea-sepolia',\n HEDERA_TESTNET = 'hedera-testnet',\n MODE_TESTNET = 'mode-testnet',\n ZEROG_TESTNET = '0g-testnet',\n LOCAL = 'local',\n}\n\n/**\n * Agent role in the ChaosChain network\n */\nexport enum AgentRole {\n SERVER = 'server',\n CLIENT = 'client',\n VALIDATOR = 'validator',\n BOTH = 'both',\n}\n\n// ============================================================================\n// Contract Types\n// ============================================================================\n\n/**\n * ERC-8004 contract addresses for a network\n */\nexport interface ContractAddresses {\n identity: string;\n reputation: string;\n validation: string;\n}\n\n/**\n * Network configuration with RPC and contract addresses\n */\nexport interface NetworkInfo {\n chainId: number;\n name: string;\n rpcUrl: string;\n contracts: ContractAddresses;\n nativeCurrency: {\n name: string;\n symbol: string;\n decimals: number;\n };\n}\n\n// ============================================================================\n// Agent Types\n// ============================================================================\n\n/**\n * Agent metadata structure (ERC-8004 compliant)\n */\nexport interface AgentMetadata {\n name: string;\n domain: string;\n role: AgentRole | string;\n capabilities?: string[];\n version?: string;\n description?: string;\n image?: string;\n contact?: string;\n supportedTrust?: string[];\n}\n\n/**\n * Agent registration result\n */\nexport interface AgentRegistration {\n agentId: bigint;\n txHash: string;\n owner: string;\n}\n\n// ============================================================================\n// ERC-8004 Reputation Types\n// ============================================================================\n\n/**\n * Feedback submission parameters\n */\nexport interface FeedbackParams {\n agentId: bigint;\n rating: number;\n feedbackUri: string;\n feedbackData?: Record<string, unknown>;\n}\n\n/**\n * Feedback record\n */\nexport interface FeedbackRecord {\n feedbackId: bigint;\n fromAgent: bigint;\n toAgent: bigint;\n rating: number;\n feedbackUri: string;\n timestamp: number;\n revoked: boolean;\n}\n\n// ============================================================================\n// ERC-8004 Validation Types\n// ============================================================================\n\n/**\n * Validation request parameters\n */\nexport interface ValidationRequestParams {\n validatorAgentId: bigint;\n requestUri: string;\n requestHash: string;\n}\n\n/**\n * Validation request record\n */\nexport interface ValidationRequest {\n requestId: bigint;\n requester: bigint;\n validator: bigint;\n requestUri: string;\n requestHash: string;\n status: ValidationStatus;\n responseUri?: string;\n timestamp: number;\n}\n\n/**\n * Validation status enum\n */\nexport enum ValidationStatus {\n PENDING = 0,\n APPROVED = 1,\n REJECTED = 2,\n}\n\n// ============================================================================\n// Payment Types\n// ============================================================================\n\n/**\n * x402 payment parameters\n */\nexport interface X402PaymentParams {\n toAgent: string;\n amount: string;\n currency?: string;\n serviceType?: string;\n metadata?: Record<string, unknown>;\n}\n\n/**\n * x402 payment result\n */\nexport interface X402Payment {\n from: string;\n to: string;\n amount: string;\n currency: string;\n txHash: string;\n timestamp: number;\n feeAmount?: string;\n feeTxHash?: string;\n}\n\n/**\n * Payment receipt\n */\nexport interface PaymentReceipt {\n paymentId: string;\n from: string;\n to: string;\n amount: string;\n currency: string;\n timestamp: number;\n signature: string;\n txHash: string;\n}\n\n// ============================================================================\n// Storage Provider Types\n// ============================================================================\n\n/**\n * Storage upload options\n */\nexport interface UploadOptions {\n mime?: string;\n metadata?: Record<string, unknown>;\n pin?: boolean;\n}\n\n/**\n * Storage upload result\n */\nexport interface UploadResult {\n cid: string;\n uri: string;\n size?: number;\n}\n\n/**\n * Storage provider interface\n */\nexport interface StorageProvider {\n upload(data: Buffer | string | object, options?: UploadOptions): Promise<UploadResult>;\n download(cid: string): Promise<Buffer>;\n pin(cid: string): Promise<void>;\n unpin(cid: string): Promise<void>;\n}\n\n// ============================================================================\n// Compute Provider Types\n// ============================================================================\n\n/**\n * Compute provider interface\n */\nexport interface ComputeProvider {\n inference(model: string, input: unknown): Promise<unknown>;\n getModels(): Promise<string[]>;\n}\n\n// ============================================================================\n// Process Integrity Types\n// ============================================================================\n\n/**\n * TEE attestation data\n */\nexport interface TEEAttestation {\n provider: 'phala' | 'sgx' | 'nitro' | 'zerog';\n attestationData: string;\n publicKey: string;\n timestamp: number;\n}\n\n/**\n * Integrity proof structure\n */\nexport interface IntegrityProof {\n proofId: string;\n functionName: string;\n inputs: Record<string, unknown>;\n outputs: Record<string, unknown>;\n codeHash: string;\n executionHash: string;\n timestamp: number;\n signature: string;\n ipfsCid?: string;\n teeAttestation?: TEEAttestation;\n}\n\n// ============================================================================\n// SDK Configuration Types\n// ============================================================================\n\n/**\n * Main SDK configuration\n */\nexport interface ChaosChainSDKConfig {\n agentName: string;\n agentDomain: string;\n agentRole: AgentRole | string;\n network: NetworkConfig | string;\n privateKey?: string;\n mnemonic?: string;\n rpcUrl?: string;\n enableAP2?: boolean;\n enableProcessIntegrity?: boolean;\n enablePayments?: boolean;\n enableStorage?: boolean;\n storageProvider?: StorageProvider;\n computeProvider?: ComputeProvider;\n walletFile?: string;\n}\n\n/**\n * Wallet configuration\n */\nexport interface WalletConfig {\n privateKey?: string;\n mnemonic?: string;\n walletFile?: string;\n}\n\n// ============================================================================\n// Event Types\n// ============================================================================\n\n/**\n * Contract event data\n */\nexport interface ContractEvent {\n event: string;\n args: unknown[];\n blockNumber: number;\n transactionHash: string;\n logIndex: number;\n}\n\n/**\n * Agent registered event\n */\nexport interface AgentRegisteredEvent extends ContractEvent {\n agentId: bigint;\n owner: string;\n uri: string;\n}\n\n/**\n * Feedback given event\n */\nexport interface FeedbackGivenEvent extends ContractEvent {\n feedbackId: bigint;\n fromAgent: bigint;\n toAgent: bigint;\n rating: number;\n}\n\n/**\n * Validation requested event\n */\nexport interface ValidationRequestedEvent extends ContractEvent {\n requestId: bigint;\n requester: bigint;\n validator: bigint;\n}\n\n// ============================================================================\n// Helper Types\n// ============================================================================\n\n/**\n * Transaction result\n */\nexport interface TransactionResult {\n hash: string;\n receipt?: ethers.TransactionReceipt;\n confirmations?: number;\n}\n\n/**\n * Query result with pagination\n */\nexport interface QueryResult<T> {\n items: T[];\n total: number;\n page?: number;\n pageSize?: number;\n}\n\n/**\n * Error response\n */\nexport interface ErrorResponse {\n error: string;\n code?: string;\n details?: unknown;\n}\n\n","/**\n * ChaosChain SDK - TypeScript Entry Point\n * \n * Complete TypeScript implementation with feature parity to Python SDK\n * \n * @packageDocumentation\n */\n\n// ============================================================================\n// Main SDK Export\n// ============================================================================\nexport { ChaosChainSDK } from './ChaosChainSDK';\n\n// ============================================================================\n// Core Components\n// ============================================================================\nexport { WalletManager } from './WalletManager';\nexport { ChaosAgent } from './ChaosAgent';\n\n// ============================================================================\n// Payment Components\n// ============================================================================\nexport { X402PaymentManager } from './X402PaymentManager';\nexport { PaymentManager } from './PaymentManager';\nexport { X402Server } from './X402Server';\n\n// ============================================================================\n// Advanced Integrations\n// ============================================================================\nexport { GoogleAP2Integration } from './GoogleAP2Integration';\nexport { A2AX402Extension } from './A2AX402Extension';\n// export { ProcessIntegrity } from './ProcessIntegrity'; // TODO: Fix export\n\n// ============================================================================\n// Storage Backends\n// ============================================================================\nexport {\n LocalIPFSStorage,\n PinataStorage,\n IrysStorage,\n ZeroGStorage,\n AutoStorageManager,\n type StorageBackend,\n type StorageResult\n} from './StorageBackends';\n\n// ============================================================================\n// Storage Providers (Legacy exports)\n// ============================================================================\nexport { IPFSLocalStorage } from './providers/storage/IPFSLocal';\nexport { PinataStorage as IPFSPinataStorage } from './StorageBackends';\nexport { IrysStorage as IrysStorageProvider } from './StorageBackends';\n\n// ============================================================================\n// Exceptions\n// ============================================================================\nexport {\n ChaosChainSDKError,\n AgentRegistrationError,\n // FeedbackSubmissionError, // Not defined yet\n // ValidationError as SDKValidationError, // Not defined yet\n PaymentError,\n StorageError,\n ContractError,\n ConfigurationError,\n IntegrityVerificationError,\n // WalletError, // Not defined yet\n // NetworkError, // Not defined yet\n} from './exceptions';\n\n// ============================================================================\n// Types & Interfaces\n// ============================================================================\nexport type {\n // Core Config\n ChaosChainSDKConfig,\n WalletConfig,\n \n // Agent Types\n AgentMetadata,\n AgentRegistration,\n \n // Feedback & Reputation\n FeedbackParams,\n FeedbackRecord,\n \n // Validation\n ValidationRequestParams,\n ValidationRequest,\n \n // Payments\n X402PaymentParams,\n X402Payment,\n // X402PaymentReceipt, // Use PaymentReceipt instead\n \n // Storage\n StorageProvider,\n UploadOptions,\n UploadResult,\n \n // Compute\n ComputeProvider,\n \n // Network\n NetworkConfig,\n ContractAddresses,\n \n // Process Integrity\n IntegrityProof,\n TEEAttestation,\n \n // Transaction\n TransactionResult,\n} from './types';\n\n// ============================================================================\n// Enums\n// ============================================================================\nexport { \n AgentRole,\n ValidationStatus\n // PaymentMethod // Not defined in types.ts yet\n} from './types';\n\n// PaymentMethod enum for traditional + crypto payments\nexport enum PaymentMethod {\n BASIC_CARD = 'basic-card',\n GOOGLE_PAY = 'https://google.com/pay',\n APPLE_PAY = 'https://apple.com/apple-pay',\n PAYPAL = 'https://paypal.com',\n A2A_X402 = 'https://a2a.org/x402'\n}\n\n// ============================================================================\n// Utilities\n// ============================================================================\nexport { \n getNetworkInfo, \n getContractAddresses\n // SUPPORTED_NETWORKS // Not exported from networks.ts\n} from './utils/networks';\n\nexport {\n IDENTITY_REGISTRY_ABI,\n REPUTATION_REGISTRY_ABI,\n VALIDATION_REGISTRY_ABI\n // getIdentityRegistryABI, // Now exported as const\n // getReputationRegistryABI, // Now exported as const\n // getValidationRegistryABI // Now exported as const\n} from './utils/contracts';\n\n// ============================================================================\n// Version Info\n// ============================================================================\nexport const SDK_VERSION = '0.1.0';\nexport const ERC8004_VERSION = '1.0';\nexport const X402_VERSION = '1.0';\n\n// ============================================================================\n// Default Export\n// ============================================================================\nimport { ChaosChainSDK as SDK } from './ChaosChainSDK';\nexport default SDK;\n\n// ============================================================================\n// Quick Start Helper\n// ============================================================================\n\n/**\n * Initialize ChaosChain SDK with minimal configuration\n * \n * @example\n * ```typescript\n * import { initChaosChainSDK, ChaosChainSDK } from '@chaoschain/sdk';\n * \n * const sdk = initChaosChainSDK({\n * agentName: 'MyAgent',\n * agentDomain: 'myagent.example.com',\n * agentRole: 'server',\n * network: 'base-sepolia',\n * privateKey: process.env.PRIVATE_KEY\n * });\n * \n * const { agentId } = await sdk.registerIdentity();\n * console.log(`Agent registered with ID: ${agentId}`);\n * ```\n */\nexport function initChaosChainSDK(config: {\n agentName: string;\n agentDomain: string;\n agentRole: string;\n network: string;\n privateKey?: string;\n mnemonic?: string;\n rpcUrl?: string;\n enablePayments?: boolean;\n enableAP2?: boolean;\n enableProcessIntegrity?: boolean;\n enableStorage?: boolean;\n}): SDK {\n return new SDK(config as any);\n}\n"]}