{"_id":"@actualte/sentra","name":"@actualte/sentra","dist-tags":{"latest":"1.0.1"},"versions":{"1.0.1":{"name":"@actualte/sentra","version":"1.0.1","description":"TypeScript SDK for Sentra AI Agent Payment Protocol","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"tsc","test":"mocha -r ts-node/register 'src/**/*.test.ts'","prepublishOnly":"npm run build"},"keywords":["sentra","ai-agents","payments","blockchain","ethereum","base"],"author":{"name":"Sentra Protocol"},"license":"MIT","dependencies":{"ethers":"^6.9.0"},"devDependencies":{"@types/node":"^20.10.0","typescript":"^5.3.3","ts-node":"^10.9.2","mocha":"^10.2.0","@types/mocha":"^10.0.6"},"_id":"@actualte/sentra@1.0.1","gitHead":"6f59120ac7e326cadfb436ad1b68b83c346ffd7f","_nodeVersion":"22.21.0","_npmVersion":"10.9.4","dist":{"integrity":"sha512-1ybw0oOP13jnDkUugIsbOdiZkDaYVt7mPZkQO8QRf4Hk/LzHzXPTIqCrQg5Wn6ZTJCtyQiNduK69q7J00YB9fw==","shasum":"db8416e1986bbd9e7ba719ae9c0cc64ad74dac7d","tarball":"https://registry.npmjs.org/@actualte/sentra/-/sentra-1.0.1.tgz","fileCount":12,"unpackedSize":37332,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIA7XvQ2p+Ju/FR2NQLiYJpxuXVOZFXdcq+K9NE3Xzyz5AiEAxhZR7jcCyzH9RY5+VOd30xkidWEdWMUO0mELIvqbYSE="}]},"_npmUser":{"name":"actualte","email":"dhanushkenkiri@gmail.com"},"directories":{},"maintainers":[{"name":"actualte","email":"dhanushkenkiri@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/sentra_1.0.1_1761623689966_0.37593453487344086"},"_hasShrinkwrap":false}},"time":{"created":"2025-10-28T03:54:49.867Z","1.0.1":"2025-10-28T03:54:50.156Z","modified":"2025-10-28T03:54:50.443Z"},"maintainers":[{"name":"actualte","email":"dhanushkenkiri@gmail.com"}],"description":"TypeScript SDK for Sentra AI Agent Payment Protocol","keywords":["sentra","ai-agents","payments","blockchain","ethereum","base"],"author":{"name":"Sentra Protocol"},"license":"MIT","readme":"# Sentra Protocol SDK\r\n\r\nTypeScript SDK for interacting with the sentra AI Agent Payment Protocol.\r\n\r\n## Installation\r\n\r\n```bash\r\nnpm install @actualte/sentra ethers\r\n```\r\n\r\n## Quick Start\r\n\r\n```typescript\r\nimport { SentraClient, ethers } from '@actualte/sentra';\r\n\r\n// Initialize client\r\nconst provider = new ethers.JsonRpcProvider('https://base-mainnet.g.alchemy.com/v2/YOUR_KEY');\r\nconst signer = new ethers.Wallet('YOUR_PRIVATE_KEY', provider);\r\n\r\nconst client = new SentraClient({\r\n  provider,\r\n  signer,\r\n  contracts: {\r\n    identityRegistry: '0x...',\r\n    budgetController: '0x...',\r\n    serviceEscrow: '0x...'\r\n  }\r\n});\r\n\r\n// Register an agent\r\nconst tx = await client.registerAgent(\r\n  agentAddress,\r\n  'did:sentra:agent:001',\r\n  publicKeyX,\r\n  publicKeyY\r\n);\r\nawait tx.wait();\r\n\r\n// Set budget policy\r\nawait client.setBudgetPolicy(\r\n  agentAddress,\r\n  ethers.parseEther('10'), // 10 ETH daily limit\r\n  ethers.parseEther('1'),  // 1 ETH per transaction\r\n  60 // 60 seconds between transactions\r\n);\r\n\r\n// Authorize payment\r\nawait client.authorizePayment(\r\n  agentAddress,\r\n  ethers.parseEther('0.5')\r\n);\r\n\r\n// Create escrow\r\nconst commitmentHash = ethers.keccak256(ethers.toUtf8Bytes('service-data'));\r\nconst timeout = Math.floor(Date.now() / 1000) + 3600; // 1 hour\r\n\r\nawait client.createEscrow(\r\n  serviceProviderAddress,\r\n  'did:sentra:service:001',\r\n  commitmentHash,\r\n  timeout,\r\n  ethers.parseEther('0.5')\r\n);\r\n```\r\n\r\n## API Reference\r\n\r\n### Agent Management\r\n\r\n#### `registerAgent(address, did, publicKeyX, publicKeyY)`\r\nRegister a new AI agent with W3C DID.\r\n\r\n```typescript\r\nawait client.registerAgent(\r\n  '0xAgentAddress',\r\n  'did:sentra:agent:12345',\r\n  publicKeyX,\r\n  publicKeyY\r\n);\r\n```\r\n\r\n#### `getAgent(address)`\r\nGet agent details by address.\r\n\r\n```typescript\r\nconst agent = await client.getAgent('0xAgentAddress');\r\nconsole.log(agent.did); // did:sentra:agent:12345\r\nconsole.log(agent.reputationScore); // 500n\r\n```\r\n\r\n#### `verifyAgent(address)`\r\nCheck if agent is eligible for payments.\r\n\r\n```typescript\r\nconst isValid = await client.verifyAgent('0xAgentAddress');\r\n```\r\n\r\n### Budget Management\r\n\r\n#### `setBudgetPolicy(address, dailyLimit, perTxLimit, minTime)`\r\nSet spending limits for an agent.\r\n\r\n```typescript\r\nawait client.setBudgetPolicy(\r\n  agentAddress,\r\n  ethers.parseEther('100'), // Daily limit\r\n  ethers.parseEther('10'),  // Per-tx limit\r\n  120 // 2 minutes between transactions\r\n);\r\n```\r\n\r\n#### `getBudgetPolicy(address)`\r\nGet current budget policy.\r\n\r\n```typescript\r\nconst policy = await client.getBudgetPolicy(agentAddress);\r\nconsole.log(policy.dailyLimit); // 100000000000000000000n\r\nconsole.log(policy.dailySpent); // 50000000000000000000n\r\n```\r\n\r\n#### `authorizePayment(address, amount, currency?)`\r\nAuthorize a payment for an agent.\r\n\r\n```typescript\r\nawait client.authorizePayment(\r\n  agentAddress,\r\n  ethers.parseEther('5'),\r\n  ethers.ZeroAddress // Native token\r\n);\r\n```\r\n\r\n### Service Escrow\r\n\r\n#### `createEscrow(provider, serviceDid, hash, timeout, amount)`\r\nCreate escrow for service delivery.\r\n\r\n```typescript\r\nawait client.createEscrow(\r\n  '0xProviderAddress',\r\n  'did:sentra:service:ai-compute',\r\n  commitmentHash,\r\n  Date.now() / 1000 + 3600, // 1 hour\r\n  ethers.parseEther('2')\r\n);\r\n```\r\n\r\n#### `getEscrow(escrowId)`\r\nGet escrow details.\r\n\r\n```typescript\r\nconst escrow = await client.getEscrow(0);\r\nconsole.log(escrow.amount); // 2000000000000000000n\r\nconsole.log(escrow.fulfilled); // false\r\n```\r\n\r\n#### `submitDeliveryProof(escrowId, proof)`\r\nSubmit ZK proof and release payment.\r\n\r\n```typescript\r\nawait client.submitDeliveryProof(0, proofBytes);\r\n```\r\n\r\n#### `refundEscrow(escrowId)`\r\nRefund escrow after timeout.\r\n\r\n```typescript\r\nawait client.refundEscrow(0);\r\n```\r\n\r\n### Event Listeners\r\n\r\nListen for on-chain events:\r\n\r\n```typescript\r\n// Agent registration\r\nclient.onAgentRegistered((agentId, did, owner) => {\r\n  console.log(`Agent ${did} registered with ID ${agentId}`);\r\n});\r\n\r\n// Payment authorization\r\nclient.onPaymentAuthorized((agentId, agent, amount, currency) => {\r\n  console.log(`Payment of ${amount} authorized for agent ${agent}`);\r\n});\r\n\r\n// Escrow creation\r\nclient.onEscrowCreated((escrowId, agent, provider, amount) => {\r\n  console.log(`Escrow ${escrowId} created for ${amount}`);\r\n});\r\n\r\n// Payment release\r\nclient.onPaymentReleased((escrowId, agent, amount) => {\r\n  console.log(`Payment ${amount} released from escrow ${escrowId}`);\r\n});\r\n```\r\n\r\n## Multi-Network Support\r\n\r\nThe SDK works on all supported networks:\r\n\r\n```typescript\r\n// Base Mainnet\r\nconst baseProvider = new ethers.JsonRpcProvider('https://mainnet.base.org');\r\n\r\n// Polygon\r\nconst polygonProvider = new ethers.JsonRpcProvider('https://polygon-rpc.com');\r\n\r\n// Avalanche\r\nconst avaxProvider = new ethers.JsonRpcProvider('https://api.avax.network/ext/bc/C/rpc');\r\n\r\n// Ethereum\r\nconst ethProvider = new ethers.JsonRpcProvider('https://eth.llamarpc.com');\r\n```\r\n\r\n## Error Handling\r\n\r\n```typescript\r\ntry {\r\n  await client.authorizePayment(agentAddress, ethers.parseEther('100'));\r\n} catch (error) {\r\n  if (error.message.includes('Exceeds daily limit')) {\r\n    console.error('Daily budget exceeded');\r\n  } else if (error.message.includes('Agent not registered')) {\r\n    console.error('Agent must be registered first');\r\n  }\r\n}\r\n```\r\n\r\n## TypeScript Types\r\n\r\nAll methods are fully typed:\r\n\r\n```typescript\r\nimport type { Agent, BudgetPolicy, Escrow } from '@actualte/sentra';\r\n\r\nconst agent: Agent = await client.getAgent(address);\r\nconst policy: BudgetPolicy = await client.getBudgetPolicy(address);\r\nconst escrow: Escrow = await client.getEscrow(0);\r\n```\r\n\r\n## License\r\n\r\nMIT\r\n","readmeFilename":"README.md","_rev":"1-98ed84a33d934d1d04cc32b6fa73280a"}