@pulseai/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/client.ts","../src/chains.ts","../src/config.ts","../src/abis/PulseExtension.ts","../src/abis/Erc8004Identity.ts","../src/agent/index.ts","../src/abis/ServiceMarketplace.ts","../src/marketplace/index.ts","../src/abis/JobEngine.ts","../src/abis/ERC20.ts","../src/utils/signing.ts","../src/jobs/index.ts","../src/warren/index.ts","../src/warren/deploy.ts","../src/abis/Page.ts","../src/abis/Master.ts","../src/utils.ts","../src/types.ts","../src/indexer/client.ts","../src/runtime/provider.ts","../src/runtime/buyer.ts","../src/runtime/handler-provider.ts","../src/abis/FeeDistributor.ts","../src/abis/Erc8004Reputation.ts"],"sourcesContent":["import {\n type Abi,\n type Account,\n type Address,\n type Chain,\n type Hash,\n type PublicClient,\n type Transport,\n type WalletClient,\n createPublicClient,\n createWalletClient,\n http,\n} from 'viem';\nimport { megaethMainnet, megaethTestnet } from './chains.js';\nimport {\n DEFAULT_INDEXER_URLS,\n MAINNET_ADDRESSES,\n TESTNET_ADDRESSES,\n type PulseAddresses,\n} from './config.js';\n\nexport type PulseClient = {\n publicClient: PublicClient;\n walletClient: WalletClient | undefined;\n addresses: PulseAddresses;\n chain: Chain;\n};\n\n/** Helper: get wallet with account or throw. */\nexport function requireWallet(client: PulseClient) {\n if (!client.walletClient?.account) throw new Error('Wallet client with account required');\n return { wallet: client.walletClient, account: client.walletClient.account, chain: client.chain };\n}\n\n/** Helper: writeContract with chain/account pre-filled. */\nexport async function write(\n client: PulseClient,\n params: { address: Address; abi: Abi; functionName: string; args?: readonly unknown[] },\n): Promise<Hash> {\n const { wallet, account, chain } = requireWallet(client);\n return wallet.writeContract({\n ...params,\n chain,\n account,\n } as Parameters<typeof wallet.writeContract>[0]);\n}\n\nexport type CreatePulseClientOptions = {\n chain: Chain;\n addresses: PulseAddresses;\n transport?: Transport;\n account?: Account | Address;\n};\n\nexport type CreatePresetPulseClientOptions = {\n account?: Account | Address;\n indexerUrl?: string;\n transport?: Transport;\n};\n\nexport type PresetPulseClient = PulseClient & { indexerUrl: string };\n\nexport function createPulseClient(options: CreatePulseClientOptions): PulseClient {\n const { chain, addresses, account } = options;\n const transport = options.transport ?? http();\n\n const publicClient = createPublicClient({ chain, transport });\n\n const walletClient = account\n ? createWalletClient({ chain, transport, account })\n : undefined;\n\n return { publicClient, walletClient, addresses, chain };\n}\n\nexport function createTestnetClient(\n options: CreatePresetPulseClientOptions = {},\n): PresetPulseClient {\n const { account, transport, indexerUrl = DEFAULT_INDEXER_URLS.testnet } = options;\n const client = createPulseClient({\n chain: megaethTestnet,\n addresses: TESTNET_ADDRESSES,\n account,\n transport,\n });\n\n return { ...client, indexerUrl };\n}\n\nexport function createMainnetClient(\n options: CreatePresetPulseClientOptions = {},\n): PresetPulseClient {\n const { account, transport, indexerUrl = DEFAULT_INDEXER_URLS.mainnet } = options;\n const client = createPulseClient({\n chain: megaethMainnet,\n addresses: MAINNET_ADDRESSES,\n account,\n transport,\n });\n\n return { ...client, indexerUrl };\n}\n","import { defineChain } from 'viem';\n\nexport const megaethTestnet = defineChain({\n id: 6343,\n name: 'MegaETH Testnet',\n nativeCurrency: { name: 'ETH', symbol: 'ETH', decimals: 18 },\n rpcUrls: {\n default: { http: ['https://carrot.megaeth.com/rpc'] },\n },\n});\n\nexport const megaethMainnet = defineChain({\n id: 4326,\n name: 'MegaETH',\n nativeCurrency: { name: 'ETH', symbol: 'ETH', decimals: 18 },\n rpcUrls: {\n default: { http: ['https://mainnet.megaeth.com/rpc'] },\n },\n});\n","import type { Address } from 'viem';\n\nexport type PulseAddresses = {\n pulseExtension: Address;\n serviceMarketplace: Address;\n jobEngine: Address;\n feeDistributor: Address;\n identityRegistry: Address;\n reputationRegistry: Address;\n usdm: Address;\n};\n\n/** Full Pulse contract addresses on MegaETH Testnet. */\nexport const TESTNET_ADDRESSES: PulseAddresses = {\n pulseExtension: '0x332073288B1fBeBe41FCB212E9fF280c216b803A' as Address,\n serviceMarketplace: '0x8F9da275D80b5022208DE373cEcB09c431FfceeB' as Address,\n jobEngine: '0x8582103b5fAAa6846f4F031159b45CccB28AA111' as Address,\n feeDistributor: '0xD47eF976D4A637Ad0432274CcFe0Fc8885B23d20' as Address,\n identityRegistry: '0x8004A818BFB912233c491871b3d84c89A494BD9e' as Address,\n reputationRegistry: '0x8004B663056A597Dffe9eCcC1965A193B7388713' as Address,\n usdm: '0x939Ff43f7c4A2E94069af7DBbc4497377DdcCE3f' as Address,\n};\n\nconst PLACEHOLDER_ADDRESS = '0x0' as Address;\n\n/** Full Pulse contract addresses on MegaETH Mainnet (partial placeholders). */\nexport const MAINNET_ADDRESSES: PulseAddresses = {\n pulseExtension: PLACEHOLDER_ADDRESS,\n serviceMarketplace: PLACEHOLDER_ADDRESS,\n jobEngine: PLACEHOLDER_ADDRESS,\n feeDistributor: PLACEHOLDER_ADDRESS,\n identityRegistry: '0x8004A169FB4a3325136EB29fA0ceB6D2e539a432' as Address,\n reputationRegistry: '0x8004BAa17C55a88189AE136b182e5fdA19dE9b63' as Address,\n usdm: '0xFAfDdbb3FC7688494971a79cc65DCa3EF82079E7' as Address,\n};\n\n/** Default indexer URLs by network. */\nexport const DEFAULT_INDEXER_URLS = {\n testnet: 'https://pulse-indexer.up.railway.app',\n mainnet: 'https://pulse-indexer.up.railway.app',\n} as const;\n\n/** ERC-8004 testnet addresses (deployed on MegaETH Testnet). */\nexport const testnetERC8004 = {\n identityRegistry: '0x8004A818BFB912233c491871b3d84c89A494BD9e' as Address,\n reputationRegistry: '0x8004B663056A597Dffe9eCcC1965A193B7388713' as Address,\n};\n\n/** ERC-8004 mainnet addresses (deployed on MegaETH Mainnet). */\nexport const mainnetERC8004 = {\n identityRegistry: '0x8004A169FB4a3325136EB29fA0ceB6D2e539a432' as Address,\n reputationRegistry: '0x8004BAa17C55a88189AE136b182e5fdA19dE9b63' as Address,\n};\n\n/** USDm token address on MegaETH Mainnet. */\nexport const USDM_MAINNET = '0xFAfDdbb3FC7688494971a79cc65DCa3EF82079E7' as Address;\n\n/** Fee constants matching on-chain values. */\nexport const FEE_BPS = 500n;\nexport const BPS_DENOMINATOR = 10_000n;\nexport const TREASURY_BPS = 8_000n;\nexport const RISK_POOL_BPS = 2_000n;\nexport const ACCEPT_TIMEOUT = 24n * 60n * 60n; // 24 hours in seconds\nexport const EVALUATION_TIMEOUT = 72n * 60n * 60n; // 72 hours in seconds\n","// Auto-generated by scripts/sync-abi.mjs — do not edit manually.\nexport const pulseExtensionAbi = [\n {\n \"type\": \"constructor\",\n \"inputs\": [\n {\n \"name\": \"_identityRegistry\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getAgentPulseData\",\n \"inputs\": [\n {\n \"name\": \"agentId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"pulseData\",\n \"type\": \"tuple\",\n \"internalType\": \"struct DataTypes.PulseAgentData\",\n \"components\": [\n {\n \"name\": \"operator\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"warrenMasterContract\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"registeredAt\",\n \"type\": \"uint64\",\n \"internalType\": \"uint64\"\n },\n {\n \"name\": \"active\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ]\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"identityRegistry\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"contract IERC8004Identity\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"initAgent\",\n \"inputs\": [\n {\n \"name\": \"agentId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"operator\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"isAgentActive\",\n \"inputs\": [\n {\n \"name\": \"agentId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"active\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"setOperator\",\n \"inputs\": [\n {\n \"name\": \"agentId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"newOperator\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"setWarrenContract\",\n \"inputs\": [\n {\n \"name\": \"agentId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"warrenAddr\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"event\",\n \"name\": \"AgentInitialized\",\n \"inputs\": [\n {\n \"name\": \"agentId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"operator\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"OperatorChanged\",\n \"inputs\": [\n {\n \"name\": \"agentId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"newOperator\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"WarrenContractSet\",\n \"inputs\": [\n {\n \"name\": \"agentId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"warrenAddr\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"error\",\n \"name\": \"AgentAlreadyInitialized\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"AgentNotActive\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"NotAgentOwnerOrOperator\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"ZeroAddress\",\n \"inputs\": []\n }\n] as const;\n","// Auto-generated by scripts/sync-abi.mjs — do not edit manually.\nexport const erc8004IdentityAbi = [\n {\n \"type\": \"function\",\n \"name\": \"approve\",\n \"inputs\": [\n {\n \"name\": \"to\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"tokenId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"balanceOf\",\n \"inputs\": [\n {\n \"name\": \"owner\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"balance\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getAgentWallet\",\n \"inputs\": [\n {\n \"name\": \"agentId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getApproved\",\n \"inputs\": [\n {\n \"name\": \"tokenId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"operator\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getMetadata\",\n \"inputs\": [\n {\n \"name\": \"agentId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"metadataKey\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"isApprovedForAll\",\n \"inputs\": [\n {\n \"name\": \"owner\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"operator\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"ownerOf\",\n \"inputs\": [\n {\n \"name\": \"tokenId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"owner\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"register\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"agentId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"register\",\n \"inputs\": [\n {\n \"name\": \"agentURI\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n },\n {\n \"name\": \"metadata\",\n \"type\": \"tuple[]\",\n \"internalType\": \"struct IERC8004Identity.MetadataEntry[]\",\n \"components\": [\n {\n \"name\": \"key\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n },\n {\n \"name\": \"value\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n }\n ]\n }\n ],\n \"outputs\": [\n {\n \"name\": \"agentId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"register\",\n \"inputs\": [\n {\n \"name\": \"agentURI\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"agentId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"safeTransferFrom\",\n \"inputs\": [\n {\n \"name\": \"from\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"to\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"tokenId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"safeTransferFrom\",\n \"inputs\": [\n {\n \"name\": \"from\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"to\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"tokenId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"data\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"setAgentURI\",\n \"inputs\": [\n {\n \"name\": \"agentId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"newURI\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"setAgentWallet\",\n \"inputs\": [\n {\n \"name\": \"agentId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"newWallet\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"deadline\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"signature\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"setApprovalForAll\",\n \"inputs\": [\n {\n \"name\": \"operator\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"approved\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"setMetadata\",\n \"inputs\": [\n {\n \"name\": \"agentId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"metadataKey\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n },\n {\n \"name\": \"metadataValue\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"supportsInterface\",\n \"inputs\": [\n {\n \"name\": \"interfaceId\",\n \"type\": \"bytes4\",\n \"internalType\": \"bytes4\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"transferFrom\",\n \"inputs\": [\n {\n \"name\": \"from\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"to\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"tokenId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"unsetAgentWallet\",\n \"inputs\": [\n {\n \"name\": \"agentId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"event\",\n \"name\": \"Approval\",\n \"inputs\": [\n {\n \"name\": \"owner\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"approved\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"tokenId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"ApprovalForAll\",\n \"inputs\": [\n {\n \"name\": \"owner\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"operator\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"approved\",\n \"type\": \"bool\",\n \"indexed\": false,\n \"internalType\": \"bool\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"MetadataSet\",\n \"inputs\": [\n {\n \"name\": \"agentId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"indexedMetadataKey\",\n \"type\": \"string\",\n \"indexed\": true,\n \"internalType\": \"string\"\n },\n {\n \"name\": \"metadataKey\",\n \"type\": \"string\",\n \"indexed\": false,\n \"internalType\": \"string\"\n },\n {\n \"name\": \"metadataValue\",\n \"type\": \"bytes\",\n \"indexed\": false,\n \"internalType\": \"bytes\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"Registered\",\n \"inputs\": [\n {\n \"name\": \"agentId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"agentURI\",\n \"type\": \"string\",\n \"indexed\": false,\n \"internalType\": \"string\"\n },\n {\n \"name\": \"owner\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"Transfer\",\n \"inputs\": [\n {\n \"name\": \"from\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"to\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"tokenId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"URIUpdated\",\n \"inputs\": [\n {\n \"name\": \"agentId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"newURI\",\n \"type\": \"string\",\n \"indexed\": false,\n \"internalType\": \"string\"\n },\n {\n \"name\": \"updatedBy\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n }\n] as const;\n","import type { Address, Hash } from 'viem';\nimport { type PulseClient, write } from '../client.js';\nimport type { PulseAgentData } from '../types.js';\nimport { pulseExtensionAbi } from '../abis/PulseExtension.js';\nimport { erc8004IdentityAbi } from '../abis/Erc8004Identity.js';\n\n/** Register a new agent in the ERC-8004 Identity Registry. */\nexport async function registerAgent(\n client: PulseClient,\n agentURI: string,\n): Promise<{ agentId: bigint; txHash: Hash }> {\n const txHash = await write(client, {\n address: client.addresses.identityRegistry,\n abi: erc8004IdentityAbi,\n functionName: 'register',\n args: [agentURI],\n });\n\n const receipt = await client.publicClient.waitForTransactionReceipt({ hash: txHash });\n\n // Extract agentId from ERC-721 Transfer event.\n const transferTopic = '0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef';\n const transferLog = receipt.logs.find((log) => log.topics[0] === transferTopic);\n const agentId = transferLog?.topics[3] ? BigInt(transferLog.topics[3]) : 0n;\n\n return { agentId, txHash };\n}\n\n/** Initialize an agent in the Pulse extension. */\nexport async function initAgent(client: PulseClient, agentId: bigint, operator: Address): Promise<Hash> {\n return write(client, {\n address: client.addresses.pulseExtension,\n abi: pulseExtensionAbi,\n functionName: 'initAgent',\n args: [agentId, operator],\n });\n}\n\n/** Update the operator for an agent. */\nexport async function setOperator(client: PulseClient, agentId: bigint, newOperator: Address): Promise<Hash> {\n return write(client, {\n address: client.addresses.pulseExtension,\n abi: pulseExtensionAbi,\n functionName: 'setOperator',\n args: [agentId, newOperator],\n });\n}\n\n/** Set the WARREN contract address for an agent. */\nexport async function setWarrenContract(client: PulseClient, agentId: bigint, warrenAddr: Address): Promise<Hash> {\n return write(client, {\n address: client.addresses.pulseExtension,\n abi: pulseExtensionAbi,\n functionName: 'setWarrenContract',\n args: [agentId, warrenAddr],\n });\n}\n\n/** Get agent data including ERC-8004 owner and Pulse extension data. */\nexport async function getAgent(\n client: PulseClient,\n agentId: bigint,\n): Promise<{ owner: Address; pulseData: PulseAgentData; active: boolean }> {\n const [owner, pulseData, active] = await Promise.all([\n client.publicClient.readContract({\n address: client.addresses.identityRegistry,\n abi: erc8004IdentityAbi,\n functionName: 'ownerOf',\n args: [agentId],\n }),\n client.publicClient.readContract({\n address: client.addresses.pulseExtension,\n abi: pulseExtensionAbi,\n functionName: 'getAgentPulseData',\n args: [agentId],\n }),\n client.publicClient.readContract({\n address: client.addresses.pulseExtension,\n abi: pulseExtensionAbi,\n functionName: 'isAgentActive',\n args: [agentId],\n }),\n ]);\n\n return {\n owner: owner as Address,\n pulseData: pulseData as unknown as PulseAgentData,\n active: active as boolean,\n };\n}\n","// Auto-generated by scripts/sync-abi.mjs — do not edit manually.\nexport const serviceMarketplaceAbi = [\n {\n \"type\": \"constructor\",\n \"inputs\": [\n {\n \"name\": \"_identityRegistry\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"_pulseExtension\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"activateOffering\",\n \"inputs\": [\n {\n \"name\": \"offeringId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"deactivateOffering\",\n \"inputs\": [\n {\n \"name\": \"offeringId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getOffering\",\n \"inputs\": [\n {\n \"name\": \"offeringId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"offering\",\n \"type\": \"tuple\",\n \"internalType\": \"struct DataTypes.JobOffering\",\n \"components\": [\n {\n \"name\": \"agentId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"serviceType\",\n \"type\": \"uint8\",\n \"internalType\": \"enum DataTypes.ServiceType\"\n },\n {\n \"name\": \"priceUSDm\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"slaMinutes\",\n \"type\": \"uint32\",\n \"internalType\": \"uint32\"\n },\n {\n \"name\": \"description\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n },\n {\n \"name\": \"requirementsSchemaURI\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n },\n {\n \"name\": \"active\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ]\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getOfferingCount\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"count\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"identityRegistry\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"contract IERC8004Identity\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"listOffering\",\n \"inputs\": [\n {\n \"name\": \"agentId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"serviceType\",\n \"type\": \"uint8\",\n \"internalType\": \"enum DataTypes.ServiceType\"\n },\n {\n \"name\": \"priceUSDm\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"slaMinutes\",\n \"type\": \"uint32\",\n \"internalType\": \"uint32\"\n },\n {\n \"name\": \"description\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n },\n {\n \"name\": \"requirementsSchemaURI\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"offeringId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"pulseExtension\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"contract IPulseExtension\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"updateOffering\",\n \"inputs\": [\n {\n \"name\": \"offeringId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"priceUSDm\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"slaMinutes\",\n \"type\": \"uint32\",\n \"internalType\": \"uint32\"\n },\n {\n \"name\": \"description\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"event\",\n \"name\": \"OfferingActivated\",\n \"inputs\": [\n {\n \"name\": \"offeringId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"OfferingDeactivated\",\n \"inputs\": [\n {\n \"name\": \"offeringId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"OfferingListed\",\n \"inputs\": [\n {\n \"name\": \"offeringId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"agentId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"serviceType\",\n \"type\": \"uint8\",\n \"indexed\": true,\n \"internalType\": \"enum DataTypes.ServiceType\"\n },\n {\n \"name\": \"priceUSDm\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"OfferingUpdated\",\n \"inputs\": [\n {\n \"name\": \"offeringId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"priceUSDm\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"slaMinutes\",\n \"type\": \"uint32\",\n \"indexed\": false,\n \"internalType\": \"uint32\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"error\",\n \"name\": \"AgentNotActive\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"NotAgentOwnerOrOperator\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"OfferingNotActive\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"OfferingNotFound\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"ZeroAddress\",\n \"inputs\": []\n }\n] as const;\n","import type { Hash } from 'viem';\nimport { type PulseClient, write } from '../client.js';\nimport type { JobOffering, ServiceType } from '../types.js';\nimport { serviceMarketplaceAbi } from '../abis/ServiceMarketplace.js';\n\nexport type ListOfferingParams = {\n agentId: bigint;\n serviceType: ServiceType;\n priceUSDm: bigint;\n slaMinutes: number;\n description: string;\n requirementsSchemaURI?: string;\n};\n\n/** List a new service offering. */\nexport async function listOffering(\n client: PulseClient,\n params: ListOfferingParams,\n): Promise<{ offeringId: bigint; txHash: Hash }> {\n const txHash = await write(client, {\n address: client.addresses.serviceMarketplace,\n abi: serviceMarketplaceAbi,\n functionName: 'listOffering',\n args: [\n params.agentId,\n params.serviceType,\n params.priceUSDm,\n params.slaMinutes,\n params.description,\n params.requirementsSchemaURI ?? '',\n ],\n });\n\n const receipt = await client.publicClient.waitForTransactionReceipt({ hash: txHash });\n\n const offeringLog = receipt.logs.find(\n (log) => log.address.toLowerCase() === client.addresses.serviceMarketplace.toLowerCase(),\n );\n const offeringId = offeringLog?.topics[1] ? BigInt(offeringLog.topics[1]) : 0n;\n\n return { offeringId, txHash };\n}\n\n/** Update mutable fields of an offering. */\nexport async function updateOffering(\n client: PulseClient,\n offeringId: bigint,\n priceUSDm: bigint,\n slaMinutes: number,\n description: string,\n): Promise<Hash> {\n return write(client, {\n address: client.addresses.serviceMarketplace,\n abi: serviceMarketplaceAbi,\n functionName: 'updateOffering',\n args: [offeringId, priceUSDm, slaMinutes, description],\n });\n}\n\n/** Deactivate an offering. */\nexport async function deactivateOffering(client: PulseClient, offeringId: bigint): Promise<Hash> {\n return write(client, {\n address: client.addresses.serviceMarketplace,\n abi: serviceMarketplaceAbi,\n functionName: 'deactivateOffering',\n args: [offeringId],\n });\n}\n\n/** Activate a previously deactivated offering. */\nexport async function activateOffering(client: PulseClient, offeringId: bigint): Promise<Hash> {\n return write(client, {\n address: client.addresses.serviceMarketplace,\n abi: serviceMarketplaceAbi,\n functionName: 'activateOffering',\n args: [offeringId],\n });\n}\n\n/** Get an offering by ID. */\nexport async function getOffering(client: PulseClient, offeringId: bigint): Promise<JobOffering> {\n const raw = await client.publicClient.readContract({\n address: client.addresses.serviceMarketplace,\n abi: serviceMarketplaceAbi,\n functionName: 'getOffering',\n args: [offeringId],\n });\n return raw as unknown as JobOffering;\n}\n\n/** Get the total number of offerings. */\nexport async function getOfferingCount(client: PulseClient): Promise<bigint> {\n return client.publicClient.readContract({\n address: client.addresses.serviceMarketplace,\n abi: serviceMarketplaceAbi,\n functionName: 'getOfferingCount',\n }) as Promise<bigint>;\n}\n","// Auto-generated by scripts/sync-abi.mjs — do not edit manually.\nexport const jobEngineAbi = [\n {\n \"type\": \"constructor\",\n \"inputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"ACCEPT_TIMEOUT\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint64\",\n \"internalType\": \"uint64\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"EVALUATION_TIMEOUT\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint64\",\n \"internalType\": \"uint64\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"FEE_BPS\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"UPGRADE_INTERFACE_VERSION\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"acceptJob\",\n \"inputs\": [\n {\n \"name\": \"jobId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"providerSignature\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"cancelJob\",\n \"inputs\": [\n {\n \"name\": \"jobId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"createJob\",\n \"inputs\": [\n {\n \"name\": \"offeringId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"buyerAgentId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"warrenTermsHash\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"jobId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"domainSeparator\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"eip712Domain\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"fields\",\n \"type\": \"bytes1\",\n \"internalType\": \"bytes1\"\n },\n {\n \"name\": \"name\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n },\n {\n \"name\": \"version\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n },\n {\n \"name\": \"chainId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"verifyingContract\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"salt\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"extensions\",\n \"type\": \"uint256[]\",\n \"internalType\": \"uint256[]\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"evaluate\",\n \"inputs\": [\n {\n \"name\": \"jobId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"approved\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n },\n {\n \"name\": \"feedback\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"feeDistributor\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"contract IFeeDistributor\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getJob\",\n \"inputs\": [\n {\n \"name\": \"jobId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"job\",\n \"type\": \"tuple\",\n \"internalType\": \"struct DataTypes.Job\",\n \"components\": [\n {\n \"name\": \"offeringId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"buyerAgentId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"providerAgentId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"priceUSDm\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"status\",\n \"type\": \"uint8\",\n \"internalType\": \"enum DataTypes.JobStatus\"\n },\n {\n \"name\": \"warrenTermsHash\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"deliverableHash\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"createdAt\",\n \"type\": \"uint64\",\n \"internalType\": \"uint64\"\n },\n {\n \"name\": \"acceptedAt\",\n \"type\": \"uint64\",\n \"internalType\": \"uint64\"\n },\n {\n \"name\": \"deliveredAt\",\n \"type\": \"uint64\",\n \"internalType\": \"uint64\"\n },\n {\n \"name\": \"evaluatedAt\",\n \"type\": \"uint64\",\n \"internalType\": \"uint64\"\n },\n {\n \"name\": \"settledAt\",\n \"type\": \"uint64\",\n \"internalType\": \"uint64\"\n },\n {\n \"name\": \"slaMinutes\",\n \"type\": \"uint32\",\n \"internalType\": \"uint32\"\n }\n ]\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getJobCount\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"count\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"identityRegistry\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"contract IERC8004Identity\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"initialize\",\n \"inputs\": [\n {\n \"name\": \"owner_\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"identityRegistry_\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"pulseExtension_\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"serviceMarketplace_\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"feeDistributor_\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"reputationRegistry_\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"usdm_\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"nonces\",\n \"inputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"owner\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"proxiableUUID\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"pulseExtension\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"contract IPulseExtension\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"renounceOwnership\",\n \"inputs\": [],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"reputationRegistry\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"contract IERC8004Reputation\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"resolveDispute\",\n \"inputs\": [\n {\n \"name\": \"jobId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"favorBuyer\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"serviceMarketplace\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"contract IServiceMarketplace\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"settle\",\n \"inputs\": [\n {\n \"name\": \"jobId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"submitDeliverable\",\n \"inputs\": [\n {\n \"name\": \"jobId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"deliverableHash\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"transferOwnership\",\n \"inputs\": [\n {\n \"name\": \"newOwner\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"upgradeToAndCall\",\n \"inputs\": [\n {\n \"name\": \"newImplementation\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"data\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"payable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"usdm\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"event\",\n \"name\": \"DeliverableSubmitted\",\n \"inputs\": [\n {\n \"name\": \"jobId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"deliverableHash\",\n \"type\": \"bytes32\",\n \"indexed\": false,\n \"internalType\": \"bytes32\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"DisputeResolved\",\n \"inputs\": [\n {\n \"name\": \"jobId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"favorBuyer\",\n \"type\": \"bool\",\n \"indexed\": false,\n \"internalType\": \"bool\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"EIP712DomainChanged\",\n \"inputs\": [],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"Initialized\",\n \"inputs\": [\n {\n \"name\": \"version\",\n \"type\": \"uint64\",\n \"indexed\": false,\n \"internalType\": \"uint64\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"JobAccepted\",\n \"inputs\": [\n {\n \"name\": \"jobId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"providerAgentId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"JobCancelled\",\n \"inputs\": [\n {\n \"name\": \"jobId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"previousStatus\",\n \"type\": \"uint8\",\n \"indexed\": false,\n \"internalType\": \"enum DataTypes.JobStatus\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"JobCreated\",\n \"inputs\": [\n {\n \"name\": \"jobId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"offeringId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"buyerAgentId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"providerAgentId\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"priceUSDm\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"JobEvaluated\",\n \"inputs\": [\n {\n \"name\": \"jobId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"approved\",\n \"type\": \"bool\",\n \"indexed\": false,\n \"internalType\": \"bool\"\n },\n {\n \"name\": \"feedback\",\n \"type\": \"string\",\n \"indexed\": false,\n \"internalType\": \"string\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"JobSettled\",\n \"inputs\": [\n {\n \"name\": \"jobId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"providerAmount\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"feeAmount\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"OwnershipTransferred\",\n \"inputs\": [\n {\n \"name\": \"previousOwner\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"newOwner\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"Upgraded\",\n \"inputs\": [\n {\n \"name\": \"implementation\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"error\",\n \"name\": \"AddressEmptyCode\",\n \"inputs\": [\n {\n \"name\": \"target\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"AgentNotActive\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"ERC1967InvalidImplementation\",\n \"inputs\": [\n {\n \"name\": \"implementation\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"ERC1967NonPayable\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"FailedCall\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidInitialization\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidJobStatus\",\n \"inputs\": [\n {\n \"name\": \"current\",\n \"type\": \"uint8\",\n \"internalType\": \"enum DataTypes.JobStatus\"\n },\n {\n \"name\": \"expected\",\n \"type\": \"uint8\",\n \"internalType\": \"enum DataTypes.JobStatus\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidSignature\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"JobNotFound\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"NotAgentOwnerOrOperator\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"NotInitializing\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"OfferingNotActive\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"OwnableInvalidOwner\",\n \"inputs\": [\n {\n \"name\": \"owner\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"OwnableUnauthorizedAccount\",\n \"inputs\": [\n {\n \"name\": \"account\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"SelfService\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"TimeoutNotReached\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"UUPSUnauthorizedCallContext\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"UUPSUnsupportedProxiableUUID\",\n \"inputs\": [\n {\n \"name\": \"slot\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"ZeroAddress\",\n \"inputs\": []\n }\n] as const;\n","// Minimal ERC20 ABI for USDm interactions.\nexport const erc20Abi = [\n {\n type: 'function',\n name: 'approve',\n inputs: [\n { name: 'spender', type: 'address' },\n { name: 'amount', type: 'uint256' },\n ],\n outputs: [{ name: '', type: 'bool' }],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'transfer',\n inputs: [\n { name: 'to', type: 'address' },\n { name: 'amount', type: 'uint256' },\n ],\n outputs: [{ name: '', type: 'bool' }],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'transferFrom',\n inputs: [\n { name: 'from', type: 'address' },\n { name: 'to', type: 'address' },\n { name: 'amount', type: 'uint256' },\n ],\n outputs: [{ name: '', type: 'bool' }],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'balanceOf',\n inputs: [{ name: 'account', type: 'address' }],\n outputs: [{ name: '', type: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'allowance',\n inputs: [\n { name: 'owner', type: 'address' },\n { name: 'spender', type: 'address' },\n ],\n outputs: [{ name: '', type: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'mint',\n inputs: [\n { name: 'to', type: 'address' },\n { name: 'amount', type: 'uint256' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n] as const;\n","import type { Address, Hex, WalletClient } from 'viem';\n\n/**\n * EIP-712 type definition matching MemoLib.sol MEMO_TYPEHASH:\n * \"Memo(uint256 jobId,address signer,bytes32 contentHash,uint64 timestamp,uint256 nonce)\"\n */\nexport const MEMO_TYPES = {\n Memo: [\n { name: 'jobId', type: 'uint256' },\n { name: 'signer', type: 'address' },\n { name: 'contentHash', type: 'bytes32' },\n { name: 'timestamp', type: 'uint64' },\n { name: 'nonce', type: 'uint256' },\n ],\n} as const;\n\n/** EIP-712 domain matching JobEngine's __EIP712_init(\"PulseJobEngine\", \"1\"). */\nexport const PULSE_DOMAIN = {\n name: 'PulseJobEngine',\n version: '1',\n} as const;\n\nexport type SignMemoParams = {\n jobId: bigint;\n contentHash: Hex;\n nonce: bigint;\n verifyingContract: Address;\n chainId: number;\n};\n\n/**\n * Sign a deterministic Memo for acceptJob using EIP-712 typed data.\n * Uses timestamp=0 convention (no block.timestamp prediction needed).\n */\nexport async function signMemo(\n walletClient: WalletClient,\n params: SignMemoParams,\n): Promise<Hex> {\n const account = walletClient.account;\n if (!account) throw new Error('WalletClient must have an account');\n\n return walletClient.signTypedData({\n account,\n domain: {\n ...PULSE_DOMAIN,\n chainId: params.chainId,\n verifyingContract: params.verifyingContract,\n },\n types: MEMO_TYPES,\n primaryType: 'Memo',\n message: {\n jobId: params.jobId,\n signer: account.address,\n contentHash: params.contentHash,\n timestamp: 0n,\n nonce: params.nonce,\n },\n });\n}\n","import type { Hash, Hex } from 'viem';\nimport { type PulseClient, requireWallet, write } from '../client.js';\nimport type { Job } from '../types.js';\nimport { jobEngineAbi } from '../abis/JobEngine.js';\nimport { serviceMarketplaceAbi } from '../abis/ServiceMarketplace.js';\nimport { erc20Abi } from '../abis/ERC20.js';\nimport { signMemo } from '../utils/signing.js';\n\nexport type CreateJobParams = {\n offeringId: bigint;\n buyerAgentId: bigint;\n warrenTermsHash: Hex;\n};\n\n/**\n * Create a job: approve USDm + call createJob.\n * Reads the offering price automatically.\n */\nexport async function createJob(\n client: PulseClient,\n params: CreateJobParams,\n): Promise<{ jobId: bigint; txHash: Hash }> {\n // 1. Get offering price.\n const offering = await client.publicClient.readContract({\n address: client.addresses.serviceMarketplace,\n abi: serviceMarketplaceAbi,\n functionName: 'getOffering',\n args: [params.offeringId],\n });\n const price = (offering as { priceUSDm: bigint }).priceUSDm;\n\n // 2. Approve USDm.\n const approveTx = await write(client, {\n address: client.addresses.usdm,\n abi: erc20Abi,\n functionName: 'approve',\n args: [client.addresses.jobEngine, price],\n });\n await client.publicClient.waitForTransactionReceipt({ hash: approveTx });\n\n // 3. Create job.\n const txHash = await write(client, {\n address: client.addresses.jobEngine,\n abi: jobEngineAbi,\n functionName: 'createJob',\n args: [params.offeringId, params.buyerAgentId, params.warrenTermsHash],\n });\n\n const receipt = await client.publicClient.waitForTransactionReceipt({ hash: txHash });\n\n // Extract jobId from JobCreated event.\n const jobLog = receipt.logs.find(\n (log) => log.address.toLowerCase() === client.addresses.jobEngine.toLowerCase(),\n );\n const jobId = jobLog?.topics[1] ? BigInt(jobLog.topics[1]) : 0n;\n\n return { jobId, txHash };\n}\n\n/**\n * Accept a job as provider: generate EIP-712 signature + call acceptJob.\n */\nexport async function acceptJob(\n client: PulseClient,\n jobId: bigint,\n warrenTermsHash: Hex,\n): Promise<Hash> {\n const { wallet, account } = requireWallet(client);\n\n // 1. Get current nonce.\n const nonce = await client.publicClient.readContract({\n address: client.addresses.jobEngine,\n abi: jobEngineAbi,\n functionName: 'nonces',\n args: [account.address],\n }) as bigint;\n\n // 2. Sign memo.\n const signature = await signMemo(wallet, {\n jobId,\n contentHash: warrenTermsHash,\n nonce,\n verifyingContract: client.addresses.jobEngine,\n chainId: client.chain.id,\n });\n\n // 3. Submit.\n return write(client, {\n address: client.addresses.jobEngine,\n abi: jobEngineAbi,\n functionName: 'acceptJob',\n args: [jobId, signature],\n });\n}\n\n/** Submit a deliverable hash for an in-progress job. */\nexport async function submitDeliverable(\n client: PulseClient,\n jobId: bigint,\n deliverableHash: Hex,\n): Promise<Hash> {\n return write(client, {\n address: client.addresses.jobEngine,\n abi: jobEngineAbi,\n functionName: 'submitDeliverable',\n args: [jobId, deliverableHash],\n });\n}\n\n/** Evaluate a delivered job. */\nexport async function evaluate(\n client: PulseClient,\n jobId: bigint,\n approved: boolean,\n feedback: string,\n): Promise<Hash> {\n return write(client, {\n address: client.addresses.jobEngine,\n abi: jobEngineAbi,\n functionName: 'evaluate',\n args: [jobId, approved, feedback],\n });\n}\n\n/** Settle an evaluated (or auto-approved) job. */\nexport async function settle(client: PulseClient, jobId: bigint): Promise<Hash> {\n return write(client, {\n address: client.addresses.jobEngine,\n abi: jobEngineAbi,\n functionName: 'settle',\n args: [jobId],\n });\n}\n\n/** Cancel a job (buyer or anyone after timeout). */\nexport async function cancelJob(client: PulseClient, jobId: bigint): Promise<Hash> {\n return write(client, {\n address: client.addresses.jobEngine,\n abi: jobEngineAbi,\n functionName: 'cancelJob',\n args: [jobId],\n });\n}\n\n/** Get a job by ID. */\nexport async function getJob(client: PulseClient, jobId: bigint): Promise<Job> {\n const raw = await client.publicClient.readContract({\n address: client.addresses.jobEngine,\n abi: jobEngineAbi,\n functionName: 'getJob',\n args: [jobId],\n });\n\n return raw as unknown as Job;\n}\n\n/** Get the total number of jobs. */\nexport async function getJobCount(client: PulseClient): Promise<bigint> {\n return client.publicClient.readContract({\n address: client.addresses.jobEngine,\n abi: jobEngineAbi,\n functionName: 'getJobCount',\n }) as Promise<bigint>;\n}\n","import { type Address, type Hex, keccak256, toHex } from 'viem';\n\nexport type AgentCardParams = {\n name: string;\n description: string;\n serviceCategory: string;\n capabilities: string[];\n priceRange: { min: bigint; max: bigint; currency?: string };\n owner: Address;\n version?: number;\n};\n\nexport type JobTermsParams = {\n jobId: bigint;\n offeringId: bigint;\n agreedPrice: bigint;\n slaMinutes: number;\n qualityCriteria: string;\n refundConditions?: string;\n buyerAgent: Address;\n providerAgent: Address;\n};\n\n/**\n * Create an AgentCard JSON and compute its keccak256 hash.\n * The hash can be stored on-chain; the JSON can be deployed to WARREN.\n */\nexport function createAgentCard(params: AgentCardParams): { json: string; hash: Hex } {\n const card = {\n name: params.name,\n description: params.description,\n serviceCategory: params.serviceCategory,\n capabilities: params.capabilities,\n priceRange: {\n min: params.priceRange.min.toString(),\n max: params.priceRange.max.toString(),\n currency: params.priceRange.currency ?? 'USDm',\n },\n owner: params.owner,\n version: params.version ?? 1,\n };\n\n const json = JSON.stringify(card, null, 2);\n const hash = keccak256(toHex(json));\n return { json, hash };\n}\n\n/**\n * Create Job Terms JSON and compute its keccak256 hash.\n * The hash is stored as warrenTermsHash in JobEngine.createJob().\n */\nexport function createJobTerms(params: JobTermsParams): { json: string; hash: Hex } {\n const terms = {\n jobId: params.jobId.toString(),\n offeringId: params.offeringId.toString(),\n agreedPrice: params.agreedPrice.toString(),\n slaMinutes: params.slaMinutes,\n qualityCriteria: params.qualityCriteria,\n refundConditions: params.refundConditions ?? '',\n buyerAgent: params.buyerAgent,\n providerAgent: params.providerAgent,\n timestamp: Math.floor(Date.now() / 1000),\n };\n\n const json = JSON.stringify(terms, null, 2);\n const hash = keccak256(toHex(json));\n return { json, hash };\n}\n\n/** Verify that a JSON content string matches an expected keccak256 hash. */\nexport function verifyContentHash(content: string, expectedHash: Hex): boolean {\n const computedHash = keccak256(toHex(content));\n return computedHash === expectedHash;\n}\n\n// --- Deliverable types + functions ---\n\nexport type DeliverableParams = {\n type: 'inline' | 'url';\n content?: string;\n url?: string;\n contentHash?: Hex;\n mimeType?: string;\n jobId: bigint;\n};\n\nexport type DeliverableData = {\n type: 'inline' | 'url';\n content?: string;\n url?: string;\n contentHash?: string;\n mimeType?: string;\n jobId: string;\n size: number;\n timestamp: number;\n};\n\nexport function createDeliverable(params: DeliverableParams): { json: string; hash: Hex } {\n const deliverable: Record<string, unknown> = {\n type: params.type,\n jobId: params.jobId.toString(),\n mimeType: params.mimeType ?? 'application/json',\n timestamp: Math.floor(Date.now() / 1000),\n };\n if (params.type === 'inline') {\n if (!params.content) throw new Error('content required for inline deliverable');\n deliverable.content = params.content;\n deliverable.size = new TextEncoder().encode(params.content).length;\n } else {\n if (!params.url) throw new Error('url required for url deliverable');\n deliverable.url = params.url;\n deliverable.contentHash = params.contentHash ?? '';\n deliverable.size = 0;\n }\n const json = JSON.stringify(deliverable, null, 2);\n const hash = keccak256(toHex(json));\n return { json, hash };\n}\n\n// --- Requirements types + functions ---\n\nexport type RequirementsParams = {\n jobId: bigint;\n offeringId: bigint;\n requirements: Record<string, unknown>;\n};\n\nexport type RequirementsData = {\n jobId: string;\n offeringId: string;\n requirements: Record<string, unknown>;\n timestamp: number;\n};\n\nexport function createRequirements(params: RequirementsParams): { json: string; hash: Hex } {\n const data = {\n jobId: params.jobId.toString(),\n offeringId: params.offeringId.toString(),\n requirements: params.requirements,\n timestamp: Math.floor(Date.now() / 1000),\n };\n const json = JSON.stringify(data, null, 2);\n const hash = keccak256(toHex(json));\n return { json, hash };\n}\n\nexport { deployWarrenPage, deployWarrenMaster, readWarrenPage, readWarrenMaster, deployAgentCard, deployJobTerms, deployDeliverable, readDeliverable, deployRequirements, readRequirements } from './deploy.js';\n","import type { Address, Hash, Hex } from 'viem';\nimport { toHex } from 'viem';\nimport { type PulseClient, requireWallet, write } from '../client.js';\nimport { pageAbi, pageBytecode } from '../abis/Page.js';\nimport { masterAbi, masterBytecode } from '../abis/Master.js';\nimport { pulseExtensionAbi } from '../abis/PulseExtension.js';\nimport { jobEngineAbi } from '../abis/JobEngine.js';\nimport type { AgentCardParams, JobTermsParams, DeliverableParams, DeliverableData, RequirementsParams, RequirementsData } from './index.js';\nimport { createAgentCard, createJobTerms, createDeliverable, createRequirements, verifyContentHash } from './index.js';\n\n/** Deploy raw content to a SSTORE2 Page contract. */\nexport async function deployWarrenPage(\n client: PulseClient,\n content: string,\n): Promise<{ pageAddress: Address; txHash: Hash }> {\n const { wallet, account, chain } = requireWallet(client);\n const contentBytes = toHex(new TextEncoder().encode(content));\n\n const txHash = await wallet.deployContract({\n abi: pageAbi,\n bytecode: pageBytecode,\n args: [contentBytes],\n chain,\n account,\n });\n\n const receipt = await client.publicClient.waitForTransactionReceipt({ hash: txHash });\n if (!receipt.contractAddress) throw new Error('Page deployment failed');\n\n return { pageAddress: receipt.contractAddress, txHash };\n}\n\n/** Deploy a Master contract wrapping a Page for WARREN loader compatibility. */\nexport async function deployWarrenMaster(\n client: PulseClient,\n agentId: bigint,\n pageAddress: Address,\n contentSize: number,\n siteType?: number,\n): Promise<{ masterAddress: Address; txHash: Hash }> {\n const { wallet, account, chain } = requireWallet(client);\n\n const txHash = await wallet.deployContract({\n abi: masterAbi,\n bytecode: masterBytecode,\n args: [client.addresses.identityRegistry, agentId, [account.address]],\n chain,\n account,\n });\n\n const receipt = await client.publicClient.waitForTransactionReceipt({ hash: txHash });\n if (!receipt.contractAddress) throw new Error('Master deployment failed');\n const masterAddress = receipt.contractAddress;\n\n await wallet.writeContract({\n address: masterAddress,\n abi: masterAbi,\n functionName: 'publish',\n args: [pageAddress, 0, BigInt(contentSize), siteType ?? 2],\n chain,\n account,\n });\n\n return { masterAddress, txHash };\n}\n\n/** Read content from a deployed SSTORE2 Page contract. */\nexport async function readWarrenPage(\n client: PulseClient,\n pageAddress: Address,\n): Promise<string> {\n const data = await client.publicClient.readContract({\n address: pageAddress,\n abi: pageAbi,\n functionName: 'read',\n });\n return data as string;\n}\n\n/** Read content from a Master contract (resolves rootChunk then reads Page). */\nexport async function readWarrenMaster(\n client: PulseClient,\n masterAddress: Address,\n): Promise<string> {\n const siteInfo = await client.publicClient.readContract({\n address: masterAddress,\n abi: masterAbi,\n functionName: 'getCurrentSiteInfo',\n }) as { rootChunk: Address; depth: number; totalSize: bigint; siteType: number };\n\n return readWarrenPage(client, siteInfo.rootChunk);\n}\n\n/** Deploy AgentCard to WARREN (Page + Master) and link to PulseExtension. */\nexport async function deployAgentCard(\n client: PulseClient,\n agentId: bigint,\n params: AgentCardParams,\n): Promise<{ masterAddress: Address; pageAddress: Address; hash: Hex; txHash: Hash }> {\n const { json, hash } = createAgentCard(params);\n const contentBytes = new TextEncoder().encode(json);\n\n const { pageAddress, txHash: deployTx } = await deployWarrenPage(client, json);\n const { masterAddress } = await deployWarrenMaster(client, agentId, pageAddress, contentBytes.length, 2);\n\n await write(client, {\n address: client.addresses.pulseExtension,\n abi: pulseExtensionAbi,\n functionName: 'setWarrenContract',\n args: [agentId, masterAddress],\n });\n\n return { masterAddress, pageAddress, hash, txHash: deployTx };\n}\n\n/** Deploy Job Terms to WARREN (Page + Master). Returns hash for use in createJob(). */\nexport async function deployJobTerms(\n client: PulseClient,\n agentId: bigint,\n params: JobTermsParams,\n): Promise<{ masterAddress: Address; pageAddress: Address; hash: Hex; txHash: Hash }> {\n const { json, hash } = createJobTerms(params);\n const contentBytes = new TextEncoder().encode(json);\n\n const { pageAddress, txHash } = await deployWarrenPage(client, json);\n const { masterAddress } = await deployWarrenMaster(client, agentId, pageAddress, contentBytes.length, 0);\n\n return { masterAddress, pageAddress, hash, txHash };\n}\n\n/** Deploy deliverable to WARREN + submit on-chain + register with indexer. */\nexport async function deployDeliverable(\n client: PulseClient,\n agentId: bigint,\n jobId: bigint,\n params: DeliverableParams,\n indexerUrl?: string,\n): Promise<{ masterAddress: Address; pageAddress: Address; hash: Hex; txHash: Hash }> {\n const { json, hash } = createDeliverable(params);\n const contentBytes = new TextEncoder().encode(json);\n\n // 1. Deploy to WARREN (siteType=1 for deliverable)\n const { pageAddress, txHash } = await deployWarrenPage(client, json);\n const { masterAddress } = await deployWarrenMaster(client, agentId, pageAddress, contentBytes.length, 1);\n\n // 2. Submit hash on-chain\n await write(client, {\n address: client.addresses.jobEngine,\n abi: jobEngineAbi,\n functionName: 'submitDeliverable',\n args: [jobId, hash],\n });\n\n // 3. Register WARREN link with indexer (non-fatal)\n if (indexerUrl) {\n try {\n await fetch(`${indexerUrl}/warren-links`, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({\n jobId: Number(jobId),\n linkType: 'deliverable',\n masterAddress,\n contentHash: hash,\n }),\n });\n } catch {\n // Indexer registration failure shouldn't block delivery\n }\n }\n\n return { masterAddress, pageAddress, hash, txHash };\n}\n\n/** Read deliverable from WARREN via indexer lookup. */\nexport async function readDeliverable(\n client: PulseClient,\n jobId: bigint,\n indexerUrl: string,\n): Promise<DeliverableData> {\n // 1. Get WARREN master address from indexer\n const res = await fetch(`${indexerUrl}/warren-links/${Number(jobId)}`);\n if (!res.ok) throw new Error(`Failed to fetch warren link for job ${jobId}`);\n const { data } = await res.json() as { data: { deliverable?: { master_address: string; content_hash: string } } };\n if (!data.deliverable) throw new Error(`No deliverable WARREN link for job ${jobId}`);\n\n // 2. Read content from WARREN\n const content = await readWarrenMaster(client, data.deliverable.master_address as Address);\n\n // 3. Verify hash\n if (!verifyContentHash(content, data.deliverable.content_hash as Hex)) {\n throw new Error('Deliverable content hash mismatch');\n }\n\n return JSON.parse(content) as DeliverableData;\n}\n\n/** Deploy requirements to WARREN + register with indexer (link_type='requirements'). */\nexport async function deployRequirements(\n client: PulseClient,\n agentId: bigint,\n jobId: bigint,\n params: RequirementsParams,\n indexerUrl?: string,\n): Promise<{ masterAddress: Address; pageAddress: Address; hash: Hex; txHash: Hash }> {\n const { json, hash } = createRequirements(params);\n const contentBytes = new TextEncoder().encode(json);\n\n // Deploy to WARREN (siteType=3 for requirements)\n const { pageAddress, txHash } = await deployWarrenPage(client, json);\n const { masterAddress } = await deployWarrenMaster(client, agentId, pageAddress, contentBytes.length, 3);\n\n // Register with indexer\n if (indexerUrl) {\n try {\n await fetch(`${indexerUrl}/warren-links`, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({\n jobId: Number(jobId),\n linkType: 'requirements',\n masterAddress,\n contentHash: hash,\n }),\n });\n } catch {\n // Non-fatal\n }\n }\n\n return { masterAddress, pageAddress, hash, txHash };\n}\n\n/** Read requirements from WARREN via indexer lookup. */\nexport async function readRequirements(\n client: PulseClient,\n jobId: bigint,\n indexerUrl: string,\n): Promise<RequirementsData | null> {\n try {\n const res = await fetch(`${indexerUrl}/warren-links/${Number(jobId)}`);\n if (!res.ok) return null;\n const { data } = await res.json() as { data: { requirements?: { master_address: string; content_hash: string } } };\n if (!data.requirements) return null;\n\n const content = await readWarrenMaster(client, data.requirements.master_address as Address);\n\n if (!verifyContentHash(content, data.requirements.content_hash as Hex)) {\n throw new Error('Requirements content hash mismatch');\n }\n\n return JSON.parse(content) as RequirementsData;\n } catch {\n return null;\n }\n}\n","export const pageAbi = [\n {\n type: 'constructor',\n inputs: [{ name: '_content', type: 'bytes', internalType: 'bytes' }],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'DATA_POINTER',\n inputs: [],\n outputs: [{ name: '', type: 'address', internalType: 'address' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'read',\n inputs: [],\n outputs: [{ name: '', type: 'string', internalType: 'string' }],\n stateMutability: 'view',\n },\n] as const;\n\nexport const pageBytecode = '0x60a0604052346100e45761025c80380380610019816100fc565b9283398101906020818303126100e4578051906001600160401b0382116100e4570181601f820112156100e4578051906001600160401b0382116100e85761006a601f8301601f19166020016100fc565b92828452602083830101116100e457815f9260208093018386015e8301015280518060401b6bfe61000180600a3d393df3000161fffe8211830152600b8101601583015ff09182156100d7575260805260405161013a908161012282396080518181816044015260d50152f35b63301164255f526004601cfd5b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b6040519190601f01601f191682016001600160401b038111838210176100e85760405256fe6080806040526004361015610012575f80fd5b5f3560e01c9081634822da1c146100c357506357de26a414610032575f80fd5b346100bf575f3660031901126100bf577f00000000000000000000000000000000000000000000000000000000000000006020608060405180935f19813b0164ffffffffff16905f6021830191601f8501903c808252016040810193846040528385528051938491826060850152018383015e5f828483010152603f1992601f8019910116810103010190f35b5f80fd5b346100bf575f3660031901126100bf577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f3fea2646970667358221220ef127603f0186dbb6931afd2c82c51ffac70e74b017d0969deb60d346c35a49c64736f6c634300081a0033' as `0x${string}`;\n","export const masterAbi = [\n {\n type: 'constructor',\n inputs: [\n { name: '_nftContract', type: 'address', internalType: 'address' },\n { name: '_adminTokenId', type: 'uint256', internalType: 'uint256' },\n { name: '_relayers', type: 'address[]', internalType: 'address[]' },\n ],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'publish',\n inputs: [\n { name: '_rootChunk', type: 'address', internalType: 'address' },\n { name: '_depth', type: 'uint8', internalType: 'uint8' },\n { name: '_totalSize', type: 'uint256', internalType: 'uint256' },\n { name: '_siteType', type: 'uint8', internalType: 'uint8' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'getCurrentSiteInfo',\n inputs: [],\n outputs: [\n {\n name: '',\n type: 'tuple',\n internalType: 'struct Master.SiteInfo',\n components: [\n { name: 'rootChunk', type: 'address', internalType: 'address' },\n { name: 'depth', type: 'uint8', internalType: 'uint8' },\n { name: 'totalSize', type: 'uint256', internalType: 'uint256' },\n { name: 'siteType', type: 'uint8', internalType: 'uint8' },\n ],\n },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'currentVersion',\n inputs: [],\n outputs: [{ name: '', type: 'uint256', internalType: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'nftContract',\n inputs: [],\n outputs: [{ name: '', type: 'address', internalType: 'address' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'adminTokenId',\n inputs: [],\n outputs: [{ name: '', type: 'uint256', internalType: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'addRelayer',\n inputs: [{ name: '_relayer', type: 'address', internalType: 'address' }],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'removeRelayer',\n inputs: [{ name: '_relayer', type: 'address', internalType: 'address' }],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'isAuthorizedRelayer',\n inputs: [{ name: '_relayer', type: 'address', internalType: 'address' }],\n outputs: [{ name: '', type: 'bool', internalType: 'bool' }],\n stateMutability: 'view',\n },\n {\n type: 'event',\n name: 'SiteUpdated',\n inputs: [\n { name: 'version', type: 'uint256', indexed: true, internalType: 'uint256' },\n { name: 'rootChunk', type: 'address', indexed: false, internalType: 'address' },\n { name: 'depth', type: 'uint8', indexed: false, internalType: 'uint8' },\n { name: 'totalSize', type: 'uint256', indexed: false, internalType: 'uint256' },\n { name: 'siteType', type: 'uint8', indexed: false, internalType: 'uint8' },\n ],\n anonymous: false,\n },\n] as const;\n\nexport const masterBytecode = '0x60806040523461015357610861803803806100198161016b565b9283398101906060818303126101535761003281610190565b6020820151604083015190926001600160401b03821161015357019280601f85011215610153578351936001600160401b038511610157578460051b9060208061007d81850161016b565b80988152019282010192831161015357602001905b82821061013b5750505060018060a01b031660018060a01b03195f5416175f556001555f6003555f5b815181101561012c576001906001600160a01b036100d982856101a4565b51165f52600260205260405f208260ff19825416179055818060a01b0361010082856101a4565b51167f03580ee9f53a62b7cb409a2cb56f9be87747dd15017afc5cef6eef321e4fb2c55f80a2016100bb565b60405161069490816101cd8239f35b6020809161014884610190565b815201910190610092565b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b6040519190601f01601f191682016001600160401b0381118382101761015757604052565b51906001600160a01b038216820361015357565b80518210156101b85760209160051b010190565b634e487b7160e01b5f52603260045260245ffdfe6080806040526004361015610012575f80fd5b5f3560e01c908163183fb9d8146104fc575080631a2321ef146103b457806329e295c51461008a57806360f0a5ac146103045780637f2b8c03146102635780639d888e8614610246578063d56d229d1461021f578063dd39f00d1461012d578063dff11fab146100cb5763e0f324d91461008a575f80fd5b346100c75760203660031901126100c7576001600160a01b036100ab610516565b165f526002602052602060ff60405f2054166040519015158152f35b5f80fd5b346100c75760203660031901126100c757600480355f90815260209182526040908190208054600182015460029092015483516001600160a01b038316815260ff60a09390931c83169581019590955292840191909152166060820152608090f35b346100c75760203660031901126100c757610146610516565b61014e61055c565b6001600160a01b031680156101e857805f52600260205260ff60405f2054166101ae57805f52600260205260405f20600160ff198254161790557f03580ee9f53a62b7cb409a2cb56f9be87747dd15017afc5cef6eef321e4fb2c55f80a2005b60405162461bcd60e51b8152602060048201526012602482015271105b1c9958591e48185d5d1a1bdc9a5e995960721b6044820152606490fd5b60405162461bcd60e51b815260206004820152600f60248201526e496e76616c6964206164647265737360881b6044820152606490fd5b346100c7575f3660031901126100c7575f546040516001600160a01b039091168152602090f35b346100c7575f3660031901126100c7576020600354604051908152f35b346100c7575f3660031901126100c7575f60606040516102828161052c565b82815282602082015282604082015201526003545f526004602052608060405f2060ff6040516102b18161052c565b8254928260018060a01b0385169485845281602085019160a01c16815260608260026001860154956040880196875201541694019384526040519586525116602085015251604084015251166060820152f35b346100c75760203660031901126100c75761031d610516565b61032561055c565b6001600160a01b03165f8181526002602052604090205460ff161561037e57805f52600260205260405f2060ff1981541690557f10e1f7ce9fd7d1b90a66d13a2ab3cb8dd7f29f3f8d520b143b063ccfbab6906b5f80a2005b60405162461bcd60e51b815260206004820152600e60248201526d139bdd08185d5d1a1bdc9a5e995960921b6044820152606490fd5b346100c75760803660031901126100c7576103cd610516565b60243560ff8116908181036100c7576044359260643560ff8116908181036100c7576103f761055c565b600354915f1983146104e85760ff60027f663edd0a8a23886fef2b8806157fdadc2d45fb10e1f93e01d812f595127f79ac9760016104e3960180600355604051916104418361052c565b60018060a01b03891683526020830190815260408301918c8352606084019687525f52600460205260405f209260018060a01b039051168354918660a01b905160a01b16916affffffffffffffffffffff60a81b16171782555160018201550191511660ff198254161790556003549560405194859485929360ff91959482606094608087019860018060a01b03168752166020860152604085015216910152565b0390a2005b634e487b7160e01b5f52601160045260245ffd5b346100c7575f3660031901126100c7576020906001548152f35b600435906001600160a01b03821682036100c757565b6080810190811067ffffffffffffffff82111761054857604052565b634e487b7160e01b5f52604160045260245ffd5b335f52600260205260ff60405f2054165f60018060a01b035f541660206001546024604051809481936331a9108f60e11b835260048301525afa5f9181610604575b506105f1575b5081156105e9575b50156105b457565b60405162461bcd60e51b815260206004820152600d60248201526c1058d8d95cdcc811195b9a5959609a1b6044820152606490fd5b90505f6105ac565b6001600160a01b0316331490505f6105a4565b90915060203d602011610657575b601f8101601f1916820167ffffffffffffffff811183821017610548576020918391604052810103126100c757516001600160a01b03811681036100c757905f61059e565b503d61061256fea26469706673582212206225772043545238e3ab16ab29d2b12e11e5a5dc26aa7bc6042d4847bc0059c764736f6c634300081a0033' as `0x${string}`;\n","const USDM_DECIMALS = 18;\nconst USDM_SCALE = 10n ** BigInt(USDM_DECIMALS);\n\n/**\n * Parse a human USDm amount into 18-decimal base units.\n * Example: parseUsdm('10.00') => 10000000000000000000n\n */\nexport function parseUsdm(value: string): bigint {\n const normalized = value.trim();\n if (normalized.length === 0) {\n throw new Error('USDm amount cannot be empty');\n }\n\n const match = normalized.match(/^([+]?)(\\d+)(?:\\.(\\d*))?$/);\n if (!match) {\n throw new Error(`Invalid USDm amount: \"${value}\"`);\n }\n\n const wholePart = BigInt(match[2]);\n const decimalPart = match[3] ?? '';\n if (decimalPart.length > USDM_DECIMALS) {\n throw new Error(`USDm amount supports up to ${USDM_DECIMALS} decimal places`);\n }\n\n const fraction = decimalPart.length > 0\n ? BigInt(decimalPart.padEnd(USDM_DECIMALS, '0'))\n : 0n;\n\n return wholePart * USDM_SCALE + fraction;\n}\n\n/**\n * Format 18-decimal base units into a human USDm string.\n * Always includes at least 2 decimal digits.\n * Example: formatUsdm(10000000000000000000n) => '10.00'\n */\nexport function formatUsdm(amount: bigint): string {\n if (amount < 0n) {\n throw new Error('USDm amount cannot be negative');\n }\n\n const whole = amount / USDM_SCALE;\n const fraction = amount % USDM_SCALE;\n\n if (fraction === 0n) {\n return `${whole}.00`;\n }\n\n const trimmedFraction = fraction\n .toString()\n .padStart(USDM_DECIMALS, '0')\n .replace(/0+$/, '');\n\n if (trimmedFraction.length >= 2) {\n return `${whole}.${trimmedFraction}`;\n }\n\n return `${whole}.${trimmedFraction.padEnd(2, '0')}`;\n}\n","import type { Address, Hex } from 'viem';\n\nexport enum JobStatus {\n Created = 0,\n Accepted = 1,\n InProgress = 2,\n Delivered = 3,\n Evaluated = 4,\n Completed = 5,\n Disputed = 6,\n Cancelled = 7,\n}\n\nexport enum ServiceType {\n TextGeneration = 0,\n ImageGeneration = 1,\n DataAnalysis = 2,\n CodeGeneration = 3,\n Translation = 4,\n Custom = 5,\n}\n\nexport type PulseAgentData = {\n operator: Address;\n warrenMasterContract: Address;\n registeredAt: bigint;\n active: boolean;\n};\n\nexport type JobOffering = {\n agentId: bigint;\n serviceType: ServiceType;\n priceUSDm: bigint;\n slaMinutes: number;\n description: string;\n requirementsSchemaURI: string;\n active: boolean;\n};\n\nexport type Job = {\n offeringId: bigint;\n buyerAgentId: bigint;\n providerAgentId: bigint;\n priceUSDm: bigint;\n status: JobStatus;\n warrenTermsHash: Hex;\n deliverableHash: Hex;\n createdAt: bigint;\n acceptedAt: bigint;\n deliveredAt: bigint;\n evaluatedAt: bigint;\n settledAt: bigint;\n slaMinutes: number;\n};\n","export type IndexerClientOptions = {\n baseUrl: string;\n timeoutMs?: number;\n fetchFn?: typeof fetch;\n};\n\nexport type IndexerOfferingsFilter = {\n serviceType?: number;\n active?: boolean;\n agentId?: number;\n};\n\nexport type IndexerJobsFilter = {\n status?: number;\n agentId?: number;\n};\n\nexport type IndexerWarrenLink = {\n masterAddress: string;\n contentHash: string;\n};\n\nexport type IndexerWarrenLinks = Record<string, IndexerWarrenLink>;\n\nexport interface IndexerAgent {\n agentId: number;\n owner: string;\n agentUri: string | null;\n operator: string | null;\n warrenContract: string | null;\n active: boolean;\n registeredAt: number | null;\n blockNumber: number | null;\n txHash: string | null;\n}\n\nexport interface IndexerOffering {\n offeringId: number;\n agentId: number;\n serviceType: number;\n priceUsdm: string;\n slaMinutes: number | null;\n description: string | null;\n active: boolean;\n blockNumber: number | null;\n txHash: string | null;\n}\n\nexport interface IndexerJob {\n jobId: number;\n offeringId: number;\n buyerAgentId: number;\n providerAgentId: number;\n priceUsdm: string;\n status: number;\n warrenTermsHash: string | null;\n deliverableHash: string | null;\n createdAt: number | null;\n acceptedAt: number | null;\n deliveredAt: number | null;\n evaluatedAt: number | null;\n settledAt: number | null;\n slaMinutes: number | null;\n blockNumber: number | null;\n txHash: string | null;\n warrenLinks?: IndexerWarrenLinks;\n}\n\nexport class IndexerClientError extends Error {\n readonly status?: number;\n readonly url: string;\n readonly body?: unknown;\n\n constructor(\n message: string,\n options: { url: string; status?: number; body?: unknown; cause?: unknown },\n ) {\n super(message, { cause: options.cause });\n this.name = 'IndexerClientError';\n this.status = options.status;\n this.url = options.url;\n this.body = options.body;\n }\n}\n\ntype ApiResponse<T> = { data: T };\n\ntype ApiIndexerAgent = {\n agent_id: number;\n owner: string;\n agent_uri: string | null;\n operator: string | null;\n warren_contract: string | null;\n active: number;\n registered_at: number | null;\n block_number: number | null;\n tx_hash: string | null;\n};\n\ntype ApiIndexerOffering = {\n offering_id: number;\n agent_id: number;\n service_type: number;\n price_usdm: string;\n sla_minutes: number | null;\n description: string | null;\n active: number;\n block_number: number | null;\n tx_hash: string | null;\n};\n\ntype ApiIndexerJob = {\n job_id: number;\n offering_id: number;\n buyer_agent_id: number;\n provider_agent_id: number;\n price_usdm: string;\n status: number;\n warren_terms_hash: string | null;\n deliverable_hash: string | null;\n created_at: number | null;\n accepted_at: number | null;\n delivered_at: number | null;\n evaluated_at: number | null;\n settled_at: number | null;\n sla_minutes: number | null;\n block_number: number | null;\n tx_hash: string | null;\n};\n\ntype ApiIndexerWarrenLink = {\n master_address: string;\n content_hash: string;\n};\n\ntype ApiIndexerWarrenLinks = Record<string, ApiIndexerWarrenLink>;\n\ntype ApiErrorPayload = {\n error?: string;\n message?: string;\n};\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null;\n}\n\nfunction toIndexerAgent(raw: ApiIndexerAgent): IndexerAgent {\n return {\n agentId: raw.agent_id,\n owner: raw.owner,\n agentUri: raw.agent_uri,\n operator: raw.operator,\n warrenContract: raw.warren_contract,\n active: raw.active === 1,\n registeredAt: raw.registered_at,\n blockNumber: raw.block_number,\n txHash: raw.tx_hash,\n };\n}\n\nfunction toIndexerOffering(raw: ApiIndexerOffering): IndexerOffering {\n return {\n offeringId: raw.offering_id,\n agentId: raw.agent_id,\n serviceType: raw.service_type,\n priceUsdm: raw.price_usdm,\n slaMinutes: raw.sla_minutes,\n description: raw.description,\n active: raw.active === 1,\n blockNumber: raw.block_number,\n txHash: raw.tx_hash,\n };\n}\n\nfunction toIndexerWarrenLinks(raw: ApiIndexerWarrenLinks): IndexerWarrenLinks {\n const links: IndexerWarrenLinks = {};\n for (const [linkType, link] of Object.entries(raw)) {\n links[linkType] = {\n masterAddress: link.master_address,\n contentHash: link.content_hash,\n };\n }\n return links;\n}\n\nfunction toIndexerJob(\n raw: ApiIndexerJob & { warrenLinks?: ApiIndexerWarrenLinks },\n): IndexerJob {\n return {\n jobId: raw.job_id,\n offeringId: raw.offering_id,\n buyerAgentId: raw.buyer_agent_id,\n providerAgentId: raw.provider_agent_id,\n priceUsdm: raw.price_usdm,\n status: raw.status,\n warrenTermsHash: raw.warren_terms_hash,\n deliverableHash: raw.deliverable_hash,\n createdAt: raw.created_at,\n acceptedAt: raw.accepted_at,\n deliveredAt: raw.delivered_at,\n evaluatedAt: raw.evaluated_at,\n settledAt: raw.settled_at,\n slaMinutes: raw.sla_minutes,\n blockNumber: raw.block_number,\n txHash: raw.tx_hash,\n warrenLinks: raw.warrenLinks\n ? toIndexerWarrenLinks(raw.warrenLinks)\n : undefined,\n };\n}\n\nexport class IndexerClient {\n private baseUrl: string;\n private timeoutMs: number;\n private fetchFn: typeof fetch;\n\n constructor(options: IndexerClientOptions) {\n this.baseUrl = options.baseUrl.replace(/\\/$/, '');\n this.timeoutMs = options.timeoutMs ?? 10_000;\n this.fetchFn = options.fetchFn ?? fetch;\n }\n\n async getOfferings(filter?: IndexerOfferingsFilter): Promise<IndexerOffering[]> {\n const params = new URLSearchParams();\n if (filter?.serviceType !== undefined) {\n params.set('service_type', String(filter.serviceType));\n }\n if (filter?.active !== undefined) {\n params.set('active', String(filter.active));\n }\n if (filter?.agentId !== undefined) {\n params.set('agent_id', String(filter.agentId));\n }\n\n const query = params.toString();\n const path = query.length > 0 ? `/offerings?${query}` : '/offerings';\n const payload = await this.requestJson<ApiResponse<ApiIndexerOffering[]>>(path);\n return payload.data.map((offering) => toIndexerOffering(offering));\n }\n\n async getJobs(filter?: IndexerJobsFilter): Promise<IndexerJob[]> {\n const params = new URLSearchParams();\n if (filter?.status !== undefined) {\n params.set('status', String(filter.status));\n }\n if (filter?.agentId !== undefined) {\n params.set('agent_id', String(filter.agentId));\n }\n\n const query = params.toString();\n const path = query.length > 0 ? `/jobs?${query}` : '/jobs';\n const payload = await this.requestJson<ApiResponse<ApiIndexerJob[]>>(path);\n return payload.data.map((job) => toIndexerJob(job));\n }\n\n async getJob(jobId: number): Promise<IndexerJob> {\n const payload = await this.requestJson<\n ApiResponse<ApiIndexerJob & { warrenLinks?: ApiIndexerWarrenLinks }>\n >(`/jobs/${jobId}`, undefined, `Job ${jobId} not found`);\n return toIndexerJob(payload.data);\n }\n\n async getAgent(agentId: number): Promise<IndexerAgent> {\n const payload = await this.requestJson<ApiResponse<ApiIndexerAgent>>(\n `/agents/${agentId}`,\n undefined,\n `Agent ${agentId} not found`,\n );\n return toIndexerAgent(payload.data);\n }\n\n async registerWarrenLink(\n jobId: number,\n linkType: string,\n masterAddress: string,\n contentHash: string,\n ): Promise<void> {\n await this.requestJson<{ success: boolean }>('/warren-links', {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({ jobId, linkType, masterAddress, contentHash }),\n });\n }\n\n async getWarrenLinks(jobId: number): Promise<IndexerWarrenLinks> {\n const response = await this.request(`/warren-links/${jobId}`);\n if (response.status === 404) {\n return {};\n }\n\n const payload = await this.parseResponse<ApiResponse<ApiIndexerWarrenLinks>>(\n response,\n `/warren-links/${jobId}`,\n );\n return toIndexerWarrenLinks(payload.data);\n }\n\n private async request(path: string, init?: RequestInit): Promise<Response> {\n const url = `${this.baseUrl}${path}`;\n const controller = new AbortController();\n const timeout = setTimeout(() => controller.abort(), this.timeoutMs);\n\n try {\n return await this.fetchFn(url, { ...init, signal: controller.signal });\n } catch (error) {\n if (error instanceof Error && error.name === 'AbortError') {\n throw new IndexerClientError(\n `Indexer request timed out after ${this.timeoutMs}ms`,\n { url, cause: error },\n );\n }\n throw new IndexerClientError('Indexer request failed', { url, cause: error });\n } finally {\n clearTimeout(timeout);\n }\n }\n\n private async requestJson<T>(\n path: string,\n init?: RequestInit,\n notFoundMessage?: string,\n ): Promise<T> {\n const response = await this.request(path, init);\n return this.parseResponse<T>(response, path, notFoundMessage);\n }\n\n private async parseResponse<T>(\n response: Response,\n path: string,\n notFoundMessage?: string,\n ): Promise<T> {\n const url = `${this.baseUrl}${path}`;\n let payload: unknown;\n try {\n payload = await response.json();\n } catch (error) {\n throw new IndexerClientError('Indexer returned an invalid JSON payload', {\n url,\n status: response.status,\n cause: error,\n });\n }\n\n if (!response.ok) {\n const apiError = isRecord(payload) ? (payload as ApiErrorPayload) : undefined;\n const message =\n response.status === 404 && notFoundMessage\n ? notFoundMessage\n : apiError?.error ?? apiError?.message ?? `Indexer request failed (${response.status})`;\n throw new IndexerClientError(message, {\n url,\n status: response.status,\n body: payload,\n });\n }\n\n return payload as T;\n }\n}\n","import type { Hex } from 'viem';\nimport type { PulseClient } from '../client.js';\nimport type { DeliverableParams } from '../warren/index.js';\nimport { acceptJob } from '../jobs/index.js';\nimport { deployDeliverable } from '../warren/deploy.js';\nimport { IndexerClient } from '../indexer/client.js';\nimport type { IndexerJob, IndexerOffering } from '../indexer/client.js';\n\nexport type ProviderCallbacks = {\n onJobReceived?: (job: IndexerJob) => Promise<boolean>;\n onDeliverableRequested?: (job: IndexerJob) => Promise<DeliverableParams>;\n onJobCompleted?: (job: IndexerJob) => void;\n onError?: (error: Error) => void;\n};\n\nexport type ProviderRuntimeOptions = {\n pollInterval?: number;\n indexerUrl: string;\n};\n\nexport class ProviderRuntime {\n private client: PulseClient;\n private agentId: bigint;\n private callbacks: ProviderCallbacks;\n private indexer: IndexerClient;\n private pollInterval: number;\n private running = false;\n private processedJobs = new Set<number>();\n\n constructor(\n client: PulseClient,\n agentId: bigint,\n callbacks: ProviderCallbacks,\n options: ProviderRuntimeOptions,\n ) {\n this.client = client;\n this.agentId = agentId;\n this.callbacks = callbacks;\n this.indexer = new IndexerClient({ baseUrl: options.indexerUrl });\n this.pollInterval = options.pollInterval ?? 5000;\n }\n\n start(): void {\n this.running = true;\n this.poll();\n }\n\n stop(): void {\n this.running = false;\n }\n\n private async poll(): Promise<void> {\n while (this.running) {\n try {\n await this.checkNewJobs();\n await this.checkInProgressJobs();\n await this.checkCompletedJobs();\n } catch (e) {\n this.callbacks.onError?.(e instanceof Error ? e : new Error(String(e)));\n }\n\n await new Promise((r) => setTimeout(r, this.pollInterval));\n }\n }\n\n private async checkNewJobs(): Promise<void> {\n const offerings: IndexerOffering[] = await this.indexer.getOfferings({\n agentId: Number(this.agentId),\n active: true,\n });\n const jobs = await this.indexer.getJobs({ status: 0 });\n\n for (const job of jobs) {\n if (this.processedJobs.has(job.jobId)) continue;\n\n const matchesOffering = offerings.some((o) => o.offeringId === job.offeringId);\n if (!matchesOffering) continue;\n\n this.processedJobs.add(job.jobId);\n\n if (this.callbacks.onJobReceived) {\n try {\n const accept = await this.callbacks.onJobReceived(job);\n if (accept) {\n await acceptJob(\n this.client,\n BigInt(job.jobId),\n job.warrenTermsHash as Hex,\n );\n }\n } catch (e) {\n this.callbacks.onError?.(\n e instanceof Error ? e : new Error(String(e)),\n );\n }\n }\n }\n }\n\n private async checkInProgressJobs(): Promise<void> {\n const inProgressJobs = await this.indexer.getJobs({\n status: 2,\n agentId: Number(this.agentId),\n });\n\n for (const job of inProgressJobs) {\n const deliverKey = job.jobId * 1000;\n if (this.processedJobs.has(deliverKey)) continue;\n\n if (this.callbacks.onDeliverableRequested) {\n try {\n const params = await this.callbacks.onDeliverableRequested(job);\n this.processedJobs.add(deliverKey);\n await deployDeliverable(\n this.client,\n this.agentId,\n BigInt(job.jobId),\n { ...params, jobId: BigInt(job.jobId) },\n this.indexer['baseUrl'],\n );\n } catch (e) {\n this.callbacks.onError?.(\n e instanceof Error ? e : new Error(String(e)),\n );\n }\n }\n }\n }\n\n private async checkCompletedJobs(): Promise<void> {\n const completedJobs = await this.indexer.getJobs({\n status: 5,\n agentId: Number(this.agentId),\n });\n\n for (const job of completedJobs) {\n const completeKey = job.jobId * 10000;\n if (this.processedJobs.has(completeKey)) continue;\n this.processedJobs.add(completeKey);\n this.callbacks.onJobCompleted?.(job);\n }\n }\n}\n","import type { Address } from 'viem';\nimport { requireWallet, type PulseClient } from '../client.js';\nimport type { DeliverableData } from '../warren/index.js';\nimport { createJob } from '../jobs/index.js';\nimport { evaluate, settle } from '../jobs/index.js';\nimport { deployJobTerms, deployRequirements, readDeliverable } from '../warren/deploy.js';\nimport {\n IndexerClient,\n type IndexerJob,\n type IndexerOffering,\n} from '../indexer/client.js';\n\nexport type BuyerCallbacks = {\n onOfferingFound?: (offering: IndexerOffering) => Promise<boolean>;\n onBuildRequirements?: (\n offering: IndexerOffering,\n ) => Promise<Record<string, unknown> | null>;\n onJobDelivered?: (job: IndexerJob, deliverable: DeliverableData) => Promise<boolean>;\n onJobCompleted?: (job: IndexerJob) => void;\n onError?: (error: Error) => void;\n};\n\nexport type BuyerRuntimeOptions = {\n pollInterval?: number;\n indexerUrl: string;\n searchFilter?: { serviceType?: number; maxPrice?: string };\n};\n\nexport class BuyerRuntime {\n private client: PulseClient;\n private agentId: bigint;\n private callbacks: BuyerCallbacks;\n private indexer: IndexerClient;\n private pollInterval: number;\n private searchFilter?: { serviceType?: number; maxPrice?: string };\n private running = false;\n private processedOfferings = new Set<number>();\n private processedJobs = new Set<number>();\n\n constructor(\n client: PulseClient,\n agentId: bigint,\n callbacks: BuyerCallbacks,\n options: BuyerRuntimeOptions,\n ) {\n this.client = client;\n this.agentId = agentId;\n this.callbacks = callbacks;\n this.indexer = new IndexerClient({ baseUrl: options.indexerUrl });\n this.pollInterval = options.pollInterval ?? 5000;\n this.searchFilter = options.searchFilter;\n }\n\n start(): void {\n this.running = true;\n this.poll();\n }\n\n stop(): void {\n this.running = false;\n }\n\n private async poll(): Promise<void> {\n while (this.running) {\n try {\n await this.checkOfferings();\n await this.checkDeliveredJobs();\n await this.checkCompletedJobs();\n } catch (e) {\n this.callbacks.onError?.(e instanceof Error ? e : new Error(String(e)));\n }\n\n await new Promise((r) => setTimeout(r, this.pollInterval));\n }\n }\n\n private async checkOfferings(): Promise<void> {\n if (!this.callbacks.onOfferingFound) return;\n\n const offerings = await this.indexer.getOfferings({\n active: true,\n serviceType: this.searchFilter?.serviceType,\n });\n\n for (const offering of offerings) {\n if (this.processedOfferings.has(offering.offeringId)) continue;\n if (\n this.searchFilter?.maxPrice &&\n BigInt(offering.priceUsdm) > BigInt(this.searchFilter.maxPrice)\n ) {\n continue;\n }\n\n try {\n const create = await this.callbacks.onOfferingFound(offering);\n if (create) {\n const buyerAddress = requireWallet(this.client).account.address;\n const providerAgent = await this.indexer.getAgent(offering.agentId);\n const offeringId = BigInt(offering.offeringId);\n const agreedPrice = BigInt(offering.priceUsdm);\n const slaMinutes = offering.slaMinutes ?? 60;\n\n const { hash } = await deployJobTerms(this.client, this.agentId, {\n jobId: 0n,\n offeringId,\n agreedPrice,\n slaMinutes,\n qualityCriteria: 'Standard quality',\n buyerAgent: buyerAddress as Address,\n providerAgent: providerAgent.owner as Address,\n });\n\n const { jobId } = await createJob(this.client, {\n offeringId,\n buyerAgentId: this.agentId,\n warrenTermsHash: hash,\n });\n this.processedOfferings.add(offering.offeringId);\n\n // Deploy requirements if callback provides them\n if (this.callbacks.onBuildRequirements) {\n const reqs = await this.callbacks.onBuildRequirements(offering);\n if (reqs) {\n await deployRequirements(\n this.client,\n this.agentId,\n jobId,\n {\n jobId,\n offeringId,\n requirements: reqs,\n },\n this.indexer['baseUrl'],\n );\n }\n }\n }\n } catch (e) {\n this.callbacks.onError?.(\n e instanceof Error ? e : new Error(String(e)),\n );\n }\n }\n }\n\n private async checkDeliveredJobs(): Promise<void> {\n if (!this.callbacks.onJobDelivered) return;\n\n const deliveredJobs = await this.indexer.getJobs({\n status: 3,\n agentId: Number(this.agentId),\n });\n\n for (const job of deliveredJobs) {\n if (this.processedJobs.has(job.jobId)) continue;\n this.processedJobs.add(job.jobId);\n\n try {\n const deliverable = await readDeliverable(\n this.client,\n BigInt(job.jobId),\n this.indexer['baseUrl'],\n );\n const approve = await this.callbacks.onJobDelivered(job, deliverable);\n if (approve) {\n await evaluate(this.client, BigInt(job.jobId), true, 'Auto-approved');\n await settle(this.client, BigInt(job.jobId));\n }\n } catch (e) {\n this.callbacks.onError?.(\n e instanceof Error ? e : new Error(String(e)),\n );\n }\n }\n }\n\n private async checkCompletedJobs(): Promise<void> {\n const completedJobs = await this.indexer.getJobs({\n status: 5,\n agentId: Number(this.agentId),\n });\n\n for (const job of completedJobs) {\n const completeKey = job.jobId * 1000;\n if (this.processedJobs.has(completeKey)) continue;\n this.processedJobs.add(completeKey);\n this.callbacks.onJobCompleted?.(job);\n }\n }\n}\n","import type { Hex } from 'viem';\nimport type { PulseClient } from '../client.js';\nimport type { OfferingHandler, JobContext } from '../handler/types.js';\nimport type { DeliverableParams } from '../warren/index.js';\nimport { acceptJob } from '../jobs/index.js';\nimport { deployDeliverable } from '../warren/deploy.js';\nimport { readRequirements } from '../warren/deploy.js';\nimport { IndexerClient } from '../indexer/client.js';\nimport type { IndexerOffering } from '../indexer/client.js';\n\nexport type HandlerProviderRuntimeOptions = {\n pollInterval?: number;\n indexerUrl: string;\n};\n\nexport class HandlerProviderRuntime {\n private client: PulseClient;\n private agentId: bigint;\n private handlers = new Map<number, OfferingHandler>();\n private indexer: IndexerClient;\n private indexerUrl: string;\n private pollInterval: number;\n private running = false;\n private processedJobs = new Set<number>();\n private onError?: (error: Error) => void;\n\n constructor(\n client: PulseClient,\n agentId: bigint,\n options: HandlerProviderRuntimeOptions,\n ) {\n this.client = client;\n this.agentId = agentId;\n this.indexer = new IndexerClient({ baseUrl: options.indexerUrl });\n this.indexerUrl = options.indexerUrl.replace(/\\/$/, '');\n this.pollInterval = options.pollInterval ?? 5000;\n }\n\n registerHandler(handler: OfferingHandler): void {\n this.handlers.set(handler.offeringId, handler);\n }\n\n setErrorHandler(fn: (error: Error) => void): void {\n this.onError = fn;\n }\n\n start(): void {\n this.running = true;\n this.poll();\n }\n\n stop(): void {\n this.running = false;\n }\n\n private async poll(): Promise<void> {\n while (this.running) {\n try {\n await this.checkNewJobs();\n await this.checkInProgressJobs();\n } catch (e) {\n this.onError?.(e instanceof Error ? e : new Error(String(e)));\n }\n\n await new Promise((r) => setTimeout(r, this.pollInterval));\n }\n }\n\n private async checkNewJobs(): Promise<void> {\n const offerings: IndexerOffering[] = await this.indexer.getOfferings({\n agentId: Number(this.agentId),\n active: true,\n });\n const jobs = await this.indexer.getJobs({ status: 0 });\n\n for (const job of jobs) {\n if (this.processedJobs.has(job.jobId)) continue;\n\n const matchesOffering = offerings.some((o) => o.offeringId === job.offeringId);\n if (!matchesOffering) continue;\n\n const handler = this.handlers.get(job.offeringId);\n if (!handler) continue;\n\n this.processedJobs.add(job.jobId);\n\n try {\n if (handler.autoAccept !== false) {\n await acceptJob(\n this.client,\n BigInt(job.jobId),\n job.warrenTermsHash as Hex,\n );\n }\n } catch (e) {\n this.onError?.(e instanceof Error ? e : new Error(String(e)));\n }\n }\n }\n\n private async checkInProgressJobs(): Promise<void> {\n const inProgressJobs = await this.indexer.getJobs({\n status: 2,\n agentId: Number(this.agentId),\n });\n\n for (const job of inProgressJobs) {\n const deliverKey = job.jobId * 1000;\n if (this.processedJobs.has(deliverKey)) continue;\n\n const handler = this.handlers.get(job.offeringId);\n if (!handler) continue;\n\n this.processedJobs.add(deliverKey);\n\n try {\n if (job.slaMinutes === null) {\n this.onError?.(new Error(`Job ${job.jobId} is missing slaMinutes`));\n continue;\n }\n\n // Build JobContext\n const context: JobContext = {\n jobId: BigInt(job.jobId),\n offeringId: BigInt(job.offeringId),\n buyerAgentId: BigInt(job.buyerAgentId),\n providerAgentId: BigInt(job.providerAgentId),\n priceUsdm: job.priceUsdm,\n slaMinutes: job.slaMinutes,\n };\n\n // Read requirements from WARREN if available\n const reqData = await readRequirements(\n this.client,\n BigInt(job.jobId),\n this.indexerUrl,\n );\n if (reqData) {\n context.requirements = reqData.requirements;\n }\n\n // Validate requirements if handler supports it\n if (handler.validateRequirements) {\n const validation = await handler.validateRequirements(context);\n if (!validation.valid) {\n this.onError?.(\n new Error(`Validation failed for job ${job.jobId}: ${validation.reason}`),\n );\n continue;\n }\n }\n\n // Execute the handler\n const result = await handler.executeJob(context);\n\n // Deploy deliverable\n const deliverableParams: DeliverableParams = {\n type: result.type,\n content: result.content,\n url: result.url,\n mimeType: result.mimeType,\n jobId: BigInt(job.jobId),\n };\n\n await deployDeliverable(\n this.client,\n this.agentId,\n BigInt(job.jobId),\n deliverableParams,\n this.indexerUrl,\n );\n } catch (e) {\n this.onError?.(e instanceof Error ? e : new Error(String(e)));\n }\n }\n }\n}\n","// Auto-generated by scripts/sync-abi.mjs — do not edit manually.\nexport const feeDistributorAbi = [\n {\n \"type\": \"constructor\",\n \"inputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"RISK_POOL_BPS\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"TREASURY_BPS\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"UPGRADE_INTERFACE_VERSION\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"distribute\",\n \"inputs\": [\n {\n \"name\": \"token\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"initialize\",\n \"inputs\": [\n {\n \"name\": \"owner_\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"treasury_\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"riskPool_\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"owner\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"proxiableUUID\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"renounceOwnership\",\n \"inputs\": [],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"riskPool\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"setRiskPool\",\n \"inputs\": [\n {\n \"name\": \"newRiskPool\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"setTreasury\",\n \"inputs\": [\n {\n \"name\": \"newTreasury\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"transferOwnership\",\n \"inputs\": [\n {\n \"name\": \"newOwner\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"treasury\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"upgradeToAndCall\",\n \"inputs\": [\n {\n \"name\": \"newImplementation\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"data\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"payable\"\n },\n {\n \"type\": \"event\",\n \"name\": \"FeeDistributed\",\n \"inputs\": [\n {\n \"name\": \"token\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"treasuryAmount\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"riskPoolAmount\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"Initialized\",\n \"inputs\": [\n {\n \"name\": \"version\",\n \"type\": \"uint64\",\n \"indexed\": false,\n \"internalType\": \"uint64\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"OwnershipTransferred\",\n \"inputs\": [\n {\n \"name\": \"previousOwner\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"newOwner\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"RiskPoolUpdated\",\n \"inputs\": [\n {\n \"name\": \"newRiskPool\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"TreasuryUpdated\",\n \"inputs\": [\n {\n \"name\": \"newTreasury\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"Upgraded\",\n \"inputs\": [\n {\n \"name\": \"implementation\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"error\",\n \"name\": \"AddressEmptyCode\",\n \"inputs\": [\n {\n \"name\": \"target\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"ERC1967InvalidImplementation\",\n \"inputs\": [\n {\n \"name\": \"implementation\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"ERC1967NonPayable\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"FailedCall\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidInitialization\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"NotInitializing\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"OwnableInvalidOwner\",\n \"inputs\": [\n {\n \"name\": \"owner\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"OwnableUnauthorizedAccount\",\n \"inputs\": [\n {\n \"name\": \"account\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"UUPSUnauthorizedCallContext\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"UUPSUnsupportedProxiableUUID\",\n \"inputs\": [\n {\n \"name\": \"slot\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"ZeroAddress\",\n \"inputs\": []\n }\n] as const;\n","// Auto-generated by scripts/sync-abi.mjs — do not edit manually.\nexport const erc8004ReputationAbi = [\n {\n \"type\": \"function\",\n \"name\": \"appendResponse\",\n \"inputs\": [\n {\n \"name\": \"agentId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"clientAddress\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"feedbackIndex\",\n \"type\": \"uint64\",\n \"internalType\": \"uint64\"\n },\n {\n \"name\": \"responseURI\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n },\n {\n \"name\": \"responseHash\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getClients\",\n \"inputs\": [\n {\n \"name\": \"agentId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"clients\",\n \"type\": \"address[]\",\n \"internalType\": \"address[]\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getIdentityRegistry\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"identityRegistry\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getLastIndex\",\n \"inputs\": [\n {\n \"name\": \"agentId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"clientAddress\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"lastIndex\",\n \"type\": \"uint64\",\n \"internalType\": \"uint64\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getSummary\",\n \"inputs\": [\n {\n \"name\": \"agentId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"clientAddresses\",\n \"type\": \"address[]\",\n \"internalType\": \"address[]\"\n },\n {\n \"name\": \"tag1\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n },\n {\n \"name\": \"tag2\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"count\",\n \"type\": \"uint64\",\n \"internalType\": \"uint64\"\n },\n {\n \"name\": \"summaryValue\",\n \"type\": \"int128\",\n \"internalType\": \"int128\"\n },\n {\n \"name\": \"summaryValueDecimals\",\n \"type\": \"uint8\",\n \"internalType\": \"uint8\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"giveFeedback\",\n \"inputs\": [\n {\n \"name\": \"agentId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"value\",\n \"type\": \"int128\",\n \"internalType\": \"int128\"\n },\n {\n \"name\": \"valueDecimals\",\n \"type\": \"uint8\",\n \"internalType\": \"uint8\"\n },\n {\n \"name\": \"tag1\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n },\n {\n \"name\": \"tag2\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n },\n {\n \"name\": \"endpoint\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n },\n {\n \"name\": \"feedbackURI\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n },\n {\n \"name\": \"feedbackHash\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"readAllFeedback\",\n \"inputs\": [\n {\n \"name\": \"agentId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"clientAddresses\",\n \"type\": \"address[]\",\n \"internalType\": \"address[]\"\n },\n {\n \"name\": \"tag1\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n },\n {\n \"name\": \"tag2\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n },\n {\n \"name\": \"includeRevoked\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"clients\",\n \"type\": \"address[]\",\n \"internalType\": \"address[]\"\n },\n {\n \"name\": \"feedbackIndexes\",\n \"type\": \"uint64[]\",\n \"internalType\": \"uint64[]\"\n },\n {\n \"name\": \"values\",\n \"type\": \"int128[]\",\n \"internalType\": \"int128[]\"\n },\n {\n \"name\": \"valueDecimals\",\n \"type\": \"uint8[]\",\n \"internalType\": \"uint8[]\"\n },\n {\n \"name\": \"tag1s\",\n \"type\": \"string[]\",\n \"internalType\": \"string[]\"\n },\n {\n \"name\": \"tag2s\",\n \"type\": \"string[]\",\n \"internalType\": \"string[]\"\n },\n {\n \"name\": \"revokedStatuses\",\n \"type\": \"bool[]\",\n \"internalType\": \"bool[]\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"readFeedback\",\n \"inputs\": [\n {\n \"name\": \"agentId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"clientAddress\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"feedbackIndex\",\n \"type\": \"uint64\",\n \"internalType\": \"uint64\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"value\",\n \"type\": \"int128\",\n \"internalType\": \"int128\"\n },\n {\n \"name\": \"valueDecimals\",\n \"type\": \"uint8\",\n \"internalType\": \"uint8\"\n },\n {\n \"name\": \"tag1\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n },\n {\n \"name\": \"tag2\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n },\n {\n \"name\": \"isRevoked\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"revokeFeedback\",\n \"inputs\": [\n {\n \"name\": \"agentId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"feedbackIndex\",\n \"type\": \"uint64\",\n \"internalType\": \"uint64\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"event\",\n \"name\": \"FeedbackRevoked\",\n \"inputs\": [\n {\n \"name\": \"agentId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"clientAddress\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"feedbackIndex\",\n \"type\": \"uint64\",\n \"indexed\": true,\n \"internalType\": \"uint64\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"NewFeedback\",\n \"inputs\": [\n {\n \"name\": \"agentId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"clientAddress\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"feedbackIndex\",\n \"type\": \"uint64\",\n \"indexed\": false,\n \"internalType\": \"uint64\"\n },\n {\n \"name\": \"value\",\n \"type\": \"int128\",\n \"indexed\": false,\n \"internalType\": \"int128\"\n },\n {\n \"name\": \"valueDecimals\",\n \"type\": \"uint8\",\n \"indexed\": false,\n \"internalType\": \"uint8\"\n },\n {\n \"name\": \"indexedTag1\",\n \"type\": \"string\",\n \"indexed\": true,\n \"internalType\": \"string\"\n },\n {\n \"name\": \"tag1\",\n \"type\": \"string\",\n \"indexed\": false,\n \"internalType\": \"string\"\n },\n {\n \"name\": \"tag2\",\n \"type\": \"string\",\n \"indexed\": false,\n \"internalType\": \"string\"\n },\n {\n \"name\": \"endpoint\",\n \"type\": \"string\",\n \"indexed\": false,\n \"internalType\": \"string\"\n },\n {\n \"name\": \"feedbackURI\",\n \"type\": \"string\",\n \"indexed\": false,\n \"internalType\": \"string\"\n },\n {\n \"name\": \"feedbackHash\",\n \"type\": \"bytes32\",\n \"indexed\": false,\n \"internalType\": \"bytes32\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"ResponseAppended\",\n \"inputs\": [\n {\n \"name\": \"agentId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"clientAddress\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"feedbackIndex\",\n \"type\": \"uint64\",\n \"indexed\": false,\n \"internalType\": \"uint64\"\n },\n {\n \"name\": \"responder\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"responseURI\",\n \"type\": \"string\",\n \"indexed\": false,\n \"internalType\": \"string\"\n },\n {\n \"name\": \"responseHash\",\n \"type\": \"bytes32\",\n \"indexed\": false,\n \"internalType\": \"bytes32\"\n }\n ],\n \"anonymous\": false\n }\n] as const;\n"],"mappings":"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","names":["toHex","toHex","JobStatus","ServiceType"]}