import * as viem from 'viem'; import { PublicClient, WalletClient, Address, Chain, Account, Hash } from 'viem'; export { Address, Hash, Log, PublicClient, TransactionReceipt, WalletClient } from 'viem'; import { ContractAddresses, AgentData, TaskData } from '@covenant/shared-types'; export { AgentData, BASE_SEPOLIA_ADDRESSES, BidData, CollectiveData, ContractAddresses, PRIORITY_LEVEL, RECEIPT_TYPE, ReceiptData, TASK_STATUS, TaskData, TaskStatus } from '@covenant/shared-types'; /** * ERC-8004 Receipt type enum (mirrors on-chain ReceiptVerifier.ReceiptType) */ declare enum ReceiptType { TaskCompleted = 0, AgentVerified = 1, DisputeResolved = 2, InsuranceClaimed = 3, MilestoneReached = 4, ReputationUpdated = 5 } /** * V2 Receipt data from ReceiptVerifier v2 */ interface ReceiptDataV2 { receiptId: `0x${string}`; issuer: Address; counterparty: Address; receiptType: number; dataHash: `0x${string}`; timestamp: bigint; isValid: boolean; } /** * Insurance claim data */ interface InsuranceClaimData { claimant: Address; taskId: bigint; amount: bigint; paid: boolean; timestamp: bigint; } /** * Insurance pool member info */ interface MemberInfo { active: boolean; contributed: bigint; } /** * Dispute data from DisputeResolution */ interface DisputeData { taskId: bigint; filedBy: Address; bondAmount: bigint; votingEndsAt: bigint; resolved: boolean; workerWins: boolean; workerShare: bigint; } /** * V2 contract addresses */ interface V2ContractAddresses { AgentRegistry: Address; TaskEscrow: Address; ReceiptVerifier: Address; InsurancePool: Address; DisputeResolution: Address; } /** * SDK configuration */ interface CovenantConfig { /** Chain ID (84532 for Base Sepolia, 8453 for Base Mainnet) */ chainId: number; /** Viem public client for reading */ publicClient: PublicClient; /** Optional wallet client for writing */ walletClient?: WalletClient; /** Custom contract addresses (optional - uses defaults if not provided) */ contractAddresses?: PartialContractAddresses; } /** * V2 SDK configuration — extends base config with version selection */ interface CovenantConfigV2 extends CovenantConfig { /** SDK version — "v2" enables v2 contract methods */ version: "v2"; /** Custom v2 contract addresses (optional - uses defaults if not provided) */ v2ContractAddresses?: Partial; } /** * Partial contract addresses - only specify what you want to override */ interface PartialContractAddresses { AgentRegistry?: Address; TaskEscrow?: Address; ReceiptVerifier?: Address; OpenTaskMarket?: Address; ParallelTaskBatch?: Address; AgentCollective?: Address; AgentInsurance?: Address; DisputeArbitration?: Address; Groth16VerifierCapability?: Address; CapabilityVerifier?: Address; Groth16VerifierReputation?: Address; ReputationVerifier?: Address; COVENANTRouter?: Address; LitProtocolIntegration?: Address; AgentWallet?: Address; } /** * Default contract addresses by chain ID */ declare const DEFAULT_ADDRESSES: Record; /** * Default V2 contract addresses by chain ID */ declare const V2_ADDRESSES: Record; /** * Chain configurations */ declare const CHAIN_CONFIGS: { readonly 84532: { readonly chain: { readonly id: 84532; readonly name: "Base Sepolia"; readonly nativeCurrency: { readonly name: "Ether"; readonly symbol: "ETH"; readonly decimals: 18; }; readonly rpcUrls: { readonly default: { readonly http: readonly ["https://sepolia.base.org"]; }; }; }; }; readonly 8453: { readonly chain: { readonly id: 8453; readonly name: "Base"; readonly nativeCurrency: { readonly name: "Ether"; readonly symbol: "ETH"; readonly decimals: 18; }; readonly rpcUrls: { readonly default: { readonly http: readonly ["https://mainnet.base.org"]; }; }; }; }; readonly 31337: { readonly chain: { readonly id: 31337; readonly name: "Hardhat Local"; readonly nativeCurrency: { readonly name: "Ether"; readonly symbol: "ETH"; readonly decimals: 18; }; readonly rpcUrls: { readonly default: { readonly http: readonly ["http://localhost:8545"]; }; }; }; }; }; /** * Chain configurations (legacy export) */ declare const CHAINS: { readonly baseSepolia: { readonly id: 84532; readonly name: "Base Sepolia"; readonly nativeCurrency: { readonly name: "Ether"; readonly symbol: "ETH"; readonly decimals: 18; }; readonly rpcUrls: { readonly default: { readonly http: readonly ["https://sepolia.base.org"]; }; }; readonly blockExplorers: { readonly default: { readonly name: "Basescan"; readonly url: "https://sepolia.basescan.org"; }; }; readonly testnet: true; }; readonly base: { readonly id: 8453; readonly name: "Base"; readonly nativeCurrency: { readonly name: "Ether"; readonly symbol: "ETH"; readonly decimals: 18; }; readonly rpcUrls: { readonly default: { readonly http: readonly ["https://mainnet.base.org"]; }; }; readonly blockExplorers: { readonly default: { readonly name: "Basescan"; readonly url: "https://basescan.org"; }; }; }; }; /** * Get contract addresses for a chain ID with optional overrides */ declare function getContractAddresses(chainId: number, overrides?: Partial): ContractAddresses; /** * Check if contracts are deployed on a chain */ declare function isDeployed(chainId: number): boolean; /** * Get V2 contract addresses for a chain ID with optional overrides */ declare function getV2ContractAddresses(chainId: number, overrides?: Partial): V2ContractAddresses; interface V5Config { chainId: number; publicClient: PublicClient; walletClient?: WalletClient; contractAddresses?: Partial; } declare class CovenantSDKV5 { protected publicClient: PublicClient; protected walletClient?: WalletClient; protected chain: Chain; protected account?: Account; private addresses; constructor(config: V5Config); private requireWallet; getAddresses(): ContractAddresses; waitForTransaction(hash: Hash): Promise; createStream(payee: Address, ratePerSecond: bigint, duration: number): Promise; withdrawStream(streamId: bigint): Promise; cancelStream(streamId: bigint): Promise; getStream(streamId: bigint): Promise; streamCount(): Promise; claimableAmount(streamId: bigint): Promise; settleReceipt(payer: Address, payee: Address, amount: bigint, nonce: bigint, payerSignature: `0x${string}`): Promise; batchSettleReceipts(payers: Address[], payees: Address[], amounts: bigint[], nonces: bigint[], payerSignatures: `0x${string}`[]): Promise; receiptCount(): Promise; batchCount(): Promise; createDispute(taskId: bigint, evidenceHash: `0x${string}`): Promise; stakeForDispute(disputeId: bigint, amount: bigint): Promise; settleDispute(disputeId: bigint): Promise; submitRuling(disputeId: bigint, ruling: number, splitBps: number, arbiterSignature: `0x${string}`): Promise; getDispute(disputeId: bigint): Promise; disputeCount(): Promise; arbiter(): Promise
; attest(subject: Address, schemaHash: `0x${string}`, dataHash: `0x${string}`, expiresAt: number): Promise; attestBatch(subjects: Address[], schemaHash: `0x${string}`, dataHashes: `0x${string}`[], expiresAt: number): Promise; verifyAttestation(attestationId: `0x${string}`): Promise<{ valid: boolean; attestation: any; }>; attestationCount(): Promise; getAgentAttestations(agent: Address): Promise<`0x${string}`[]>; registerIssuer(issuer: Address, name: string): Promise; registerSchema(schemaHash: `0x${string}`, name: string): Promise; revokeAttestation(attestationId: `0x${string}`): Promise; isIssuer(address: Address): Promise; schemaExists(schemaHash: `0x${string}`): Promise; propose(target: Address, callData: `0x${string}`, descriptionHash: `0x${string}`, votingPeriod: number): Promise; submitVotes(proposalId: bigint, forVotes: bigint, againstVotes: bigint, guardianSignature: `0x${string}`): Promise; executeProposal(proposalId: bigint): Promise; vetoProposal(proposalId: bigint): Promise; emergencyPause(target: Address, paused: boolean): Promise; getProposal(proposalId: bigint): Promise; proposalCount(): Promise; quorum(): Promise; guardian(): Promise
; vetoer(): Promise
; isPaused(target: Address): Promise; setGuardian(newGuardian: Address): Promise; setVetoer(newVetoer: Address): Promise; setQuorum(newQuorum: bigint): Promise; joinPool(amount: bigint): Promise; fileClaim(taskId: bigint, amount: bigint): Promise; voteOnClaim(claimId: bigint, inFavor: boolean): Promise; approveClaim(claimId: bigint): Promise; payClaim(claimId: bigint): Promise; withdrawPool(): Promise; getPoolBalance(): Promise; getMemberInfo(address: Address): Promise; getClaim(claimId: bigint): Promise; claimCount(): Promise; memberCount(): Promise; createTraining(title: string, price: bigint): Promise; enroll(trainingId: bigint, price: bigint): Promise; getTraining(trainingId: bigint): Promise; trainingCount(): Promise; platformFeeBps(): Promise; feeRecipient(): Promise
; depositToGrants(amount: bigint): Promise; applyGrant(amount: bigint): Promise; voteGrant(grantId: bigint, inFavor: boolean): Promise; disburseGrant(grantId: bigint): Promise; getGrant(grantId: bigint): Promise; grantCount(): Promise; treasury(): Promise; votingPeriod(): Promise; requestRevision(taskId: bigint, feedbackHash: string): Promise; submitRevision(taskId: bigint, newHash: `0x${string}`): Promise; getRevisionCount(taskId: bigint): Promise; getLatestRevision(taskId: bigint): Promise; getRevision(taskId: bigint, revisionNumber: bigint): Promise; revisionAllowed(taskId: bigint): Promise; taskClient(taskId: bigint): Promise
; setTaskClient(taskId: bigint, client: Address): Promise; setMaxRevisions(taskId: bigint, max: bigint): Promise; setRevisionAllowed(taskId: bigint, allowed: boolean): Promise; defaultMaxRevisions(): Promise; createBatch(workers: Address[], payments: bigint[], deadlines: bigint[], descriptionHashes: `0x${string}`[], aggregationSpec: `0x${string}`): Promise; aggregateResults(batchId: bigint): Promise; getBatch(batchId: bigint): Promise; batchCounter(): Promise; createCollective(minContribution: bigint, maxMembers: bigint): Promise; joinCollective(collectiveId: bigint, amount: bigint): Promise; launchCollectiveTask(collectiveId: bigint, worker: Address, payment: bigint, deadline: bigint, descriptionHash: `0x${string}`): Promise; getCollective(collectiveId: bigint): Promise<{ memberCount: bigint; totalFund: bigint; launched: boolean; }>; collectiveCounter(): Promise; createTaskERC20(worker: Address, token: Address, amount: bigint, deadline: bigint): Promise; verifyTask(taskId: bigint, success: boolean): Promise; multiTokenTaskCount(): Promise; isAcceptedToken(token: Address): Promise; tokenFee(token: Address): Promise; setAcceptedToken(token: Address, accepted: boolean): Promise; multicall(calls: Array<{ target: Address; data: `0x${string}`; value: bigint; }>): Promise; registerAndCreateTask(agentRegistry: Address, taskEscrow: Address, name: string, capabilities: string[], worker: Address, payment: bigint, deadline: bigint, descriptionHash: string): Promise; } declare class CovenantSDK { protected publicClient: PublicClient; protected walletClient?: WalletClient; private addresses; protected chain: Chain; protected account?: Account; constructor(config: CovenantConfig); getAgent(address: Address): Promise; getAgentCount(): Promise; isRegistered(address: Address): Promise; findAgents(capability: string, minReputation?: number, limit?: number): Promise; getAllAgents(offset?: number, limit?: number): Promise; registerAgent(stake: bigint, metadataRoot: `0x${string}`): Promise; getTask(taskId: bigint): Promise; getTaskCount(): Promise; createTask(worker: Address, amount: bigint, deadline: number, metaHash: `0x${string}`): Promise; submitWork(taskId: bigint, deliverableHash: `0x${string}`): Promise; completeTask(taskId: bigint, clientSignature: `0x${string}`): Promise; disputeTask(taskId: bigint): Promise; cancelTask(taskId: bigint): Promise; fundTask(taskId: bigint, amount: bigint): Promise; failTask(taskId: bigint, reason: `0x${string}`): Promise; waitForTransaction(hash: Hash): Promise; getAddresses(): ContractAddresses; protected requireWallet(): void; private parseAgentData; private parseTaskData; private mapV5Status; } export { CHAINS, CHAIN_CONFIGS, type CovenantConfig, type CovenantConfigV2, CovenantSDK, CovenantSDKV5, DEFAULT_ADDRESSES, type DisputeData, type InsuranceClaimData, type MemberInfo, type PartialContractAddresses, type ReceiptDataV2, ReceiptType, type V2ContractAddresses, V2_ADDRESSES, getContractAddresses, getV2ContractAddresses, isDeployed };