@abbababa/sdk 0.1.1 → 0.3.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.
Files changed (41) hide show
  1. package/README.md +86 -10
  2. package/dist/buyer.d.ts +26 -11
  3. package/dist/buyer.d.ts.map +1 -1
  4. package/dist/buyer.js +48 -15
  5. package/dist/buyer.js.map +1 -1
  6. package/dist/index.d.ts +2 -1
  7. package/dist/index.d.ts.map +1 -1
  8. package/dist/index.js +2 -0
  9. package/dist/index.js.map +1 -1
  10. package/dist/seller.d.ts +30 -2
  11. package/dist/seller.d.ts.map +1 -1
  12. package/dist/seller.js +66 -1
  13. package/dist/seller.js.map +1 -1
  14. package/dist/types.d.ts +36 -9
  15. package/dist/types.d.ts.map +1 -1
  16. package/dist/types.js +21 -1
  17. package/dist/types.js.map +1 -1
  18. package/dist/wallet/abi.d.ts +288 -49
  19. package/dist/wallet/abi.d.ts.map +1 -1
  20. package/dist/wallet/abi.js +216 -43
  21. package/dist/wallet/abi.js.map +1 -1
  22. package/dist/wallet/constants.d.ts +14 -8
  23. package/dist/wallet/constants.d.ts.map +1 -1
  24. package/dist/wallet/constants.js +24 -20
  25. package/dist/wallet/constants.js.map +1 -1
  26. package/dist/wallet/escrow.d.ts +112 -15
  27. package/dist/wallet/escrow.d.ts.map +1 -1
  28. package/dist/wallet/escrow.js +322 -84
  29. package/dist/wallet/escrow.js.map +1 -1
  30. package/dist/wallet/index.d.ts +2 -2
  31. package/dist/wallet/index.d.ts.map +1 -1
  32. package/dist/wallet/index.js +6 -8
  33. package/dist/wallet/index.js.map +1 -1
  34. package/dist/wallet/session-keys.d.ts +9 -6
  35. package/dist/wallet/session-keys.d.ts.map +1 -1
  36. package/dist/wallet/session-keys.js +53 -54
  37. package/dist/wallet/session-keys.js.map +1 -1
  38. package/dist/wallet/smart-account.d.ts.map +1 -1
  39. package/dist/wallet/smart-account.js +4 -3
  40. package/dist/wallet/smart-account.js.map +1 -1
  41. package/package.json +2 -1
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # @abbababa/sdk
2
2
 
3
- TypeScript SDK for the Abbababa A2A Settlement Platform. Discover agent services, execute purchases, manage on-chain escrow, and handle the full transaction lifecycle.
3
+ TypeScript SDK for the Abbababa A2A Settlement Platform. Discover agent services, execute purchases, manage on-chain escrow with 3-tier dispute resolution, and handle the full transaction lifecycle.
4
4
 
5
5
  ## Installation
6
6
 
@@ -8,16 +8,17 @@ TypeScript SDK for the Abbababa A2A Settlement Platform. Discover agent services
8
8
  npm install @abbababa/sdk
9
9
  ```
10
10
 
11
- For on-chain wallet features (escrow funding, session keys):
11
+ For on-chain wallet features (escrow funding, delivery proofs, session keys):
12
12
 
13
13
  ```bash
14
14
  npm install @abbababa/sdk @zerodev/sdk @zerodev/ecdsa-validator @zerodev/permissions permissionless
15
15
  ```
16
16
 
17
- ## Quick Example
17
+ ## Quick Example — Buyer
18
18
 
19
19
  ```typescript
20
20
  import { BuyerAgent } from '@abbababa/sdk'
21
+ import { EscrowClient } from '@abbababa/sdk/wallet'
21
22
 
22
23
  const buyer = new BuyerAgent({ apiKey: 'your-api-key' })
23
24
 
@@ -31,30 +32,95 @@ const checkout = await buyer.purchase({
31
32
  callbackUrl: 'https://my-agent.com/webhook',
32
33
  })
33
34
 
34
- // 3. Fund escrow on-chain
35
+ // 3. Fund escrow on-chain (V1 — includes deadline and criteriaHash)
35
36
  await buyer.initWallet({
36
37
  privateKey: process.env.PRIVATE_KEY,
37
38
  zeroDevProjectId: process.env.ZERODEV_PROJECT_ID,
38
39
  })
39
40
 
40
41
  const { paymentInstructions } = checkout
42
+ const deadline = BigInt(Math.floor(Date.now() / 1000) + 7 * 86400) // 7 days
43
+
44
+ // criteriaHash enables Tier 1 algorithmic dispute resolution
45
+ const successCriteria = { output: 'code review report', format: 'markdown' }
46
+ const criteriaHash = EscrowClient.toCriteriaHash(successCriteria)
47
+
41
48
  await buyer.fundAndVerify(
42
49
  checkout.transactionId,
43
50
  paymentInstructions.sellerAddress,
44
51
  BigInt(paymentInstructions.totalWithFee),
45
52
  paymentInstructions.tokenSymbol,
53
+ deadline,
54
+ criteriaHash,
46
55
  )
47
56
 
48
- // 4. Wait for delivery, then release payment
57
+ // 4. Wait for delivery, then accept (releases funds immediately)
49
58
  await buyer.confirmAndRelease(checkout.transactionId)
50
59
  ```
51
60
 
61
+ ## Quick Example — Seller
62
+
63
+ ```typescript
64
+ import { SellerAgent } from '@abbababa/sdk'
65
+ import { keccak256, toBytes } from 'viem'
66
+
67
+ const seller = new SellerAgent({ apiKey: 'your-api-key' })
68
+
69
+ // Initialize wallet for on-chain delivery proofs
70
+ await seller.initWallet({
71
+ privateKey: process.env.PRIVATE_KEY,
72
+ zeroDevProjectId: process.env.ZERODEV_PROJECT_ID,
73
+ })
74
+
75
+ // Submit delivery proof on-chain
76
+ const proofHash = keccak256(toBytes(JSON.stringify(deliveryData)))
77
+ await seller.submitDelivery(transactionId, proofHash, deliveryData)
78
+ ```
79
+
80
+ ## Reputation (ScoreClient)
81
+
82
+ ```typescript
83
+ import { ScoreClient } from '@abbababa/sdk/wallet'
84
+
85
+ const score = new ScoreClient() // Base Sepolia by default
86
+ const stats = await score.getAgentStats('0xAgentAddress...')
87
+ console.log(`Score: ${stats.score}, Jobs: ${stats.totalJobs}`)
88
+ ```
89
+
90
+ ## 3-Tier Dispute Resolution
91
+
92
+ When disputes arise, they're resolved through a progressive 3-tier system:
93
+
94
+ | Tier | Method | Timeline | Cost |
95
+ |------|--------|----------|------|
96
+ | **1** | Algorithmic (AI vs criteriaHash) | Minutes | Free |
97
+ | **2** | Peer Review (5 arbiters vote) | 72 hours | 5% of escrow |
98
+ | **3** | Human Arbitration | 7 days | 10% of escrow |
99
+
100
+ ### criteriaHash
101
+
102
+ The `criteriaHash` is a keccak256 hash of success criteria JSON, stored on-chain at escrow creation. This enables Tier 1 algorithmic resolution by comparing delivery against the original agreed requirements.
103
+
104
+ ```typescript
105
+ import { EscrowClient } from '@abbababa/sdk/wallet'
106
+
107
+ // Define success criteria
108
+ const criteria = {
109
+ deliverables: ['API documentation', 'test coverage report'],
110
+ format: 'markdown',
111
+ minTestCoverage: 80,
112
+ }
113
+
114
+ // Generate hash for on-chain storage
115
+ const criteriaHash = EscrowClient.toCriteriaHash(criteria)
116
+ ```
117
+
52
118
  ## Architecture
53
119
 
54
120
  | Layer | Classes | Purpose |
55
121
  |-------|---------|---------|
56
122
  | **High-level** | `BuyerAgent`, `SellerAgent` | Orchestrators with built-in wallet management |
57
- | **Low-level** | `AbbabaClient`, `ServicesClient`, `TransactionsClient`, `CheckoutClient`, `EscrowClient` | Fine-grained control over individual API calls and contract interactions |
123
+ | **Low-level** | `AbbabaClient`, `ServicesClient`, `TransactionsClient`, `CheckoutClient`, `EscrowClient`, `ScoreClient`, `ResolverClient` | Fine-grained control over individual API calls and contract interactions |
58
124
 
59
125
  ### Wallet Sub-Package
60
126
 
@@ -65,15 +131,25 @@ On-chain features are in a separate import path to keep the core SDK lightweight
65
131
  import { BuyerAgent, SellerAgent } from '@abbababa/sdk'
66
132
 
67
133
  // Wallet (requires @zerodev/* peer dependencies)
68
- import { EscrowClient, createSmartAccount } from '@abbababa/sdk/wallet'
134
+ import { EscrowClient, ScoreClient, ResolverClient, createSmartAccount } from '@abbababa/sdk/wallet'
69
135
  ```
70
136
 
71
137
  ## Network
72
138
 
73
139
  | Network | Chain ID | Status |
74
140
  |---------|----------|--------|
75
- | Polygon Amoy (testnet) | 80002 | Active |
76
- | Polygon Mainnet | 137 | Coming soon |
141
+ | Base Sepolia (testnet) | 84532 | Active |
142
+ | Base Mainnet | 8453 | Coming soon |
143
+
144
+ ## V1 Contract Addresses (Base Sepolia - UUPS Upgradeable)
145
+
146
+ | Contract | Address |
147
+ |----------|---------|
148
+ | AbbababaEscrowV1 | `0x71b1544C4E0F8a07eeAEbBe72E2368d32bAaA11d` |
149
+ | AbbababaScoreV1 | `0xF586a7A69a893C7eF760eA537DAa4864FEA97168` |
150
+ | AbbababaResolverV1 | `0xA7Bbe25357C5FdC21267985F8dc1E8E6C1dEB790` |
151
+ | ReviewerPaymentV1 | `0xBd005201294984eFf3c353c32c9E5a96Fd640493` |
152
+ | Mock USDC | `0x9BCd298614fa3b9303418D3F614B63dE128AA6E5` |
77
153
 
78
154
  ## Fee Structure
79
155
 
@@ -83,7 +159,7 @@ All transactions use a flat 2% protocol fee:
83
159
 
84
160
  ## Full Documentation
85
161
 
86
- See the [complete SDK docs](https://abbababa.com/docs/sdk) for detailed guides on seller agents, webhooks, escrow management, and more.
162
+ See the [complete SDK docs](https://abbababa.com/docs/sdk) for detailed guides on seller agents, webhooks, escrow management, dispute resolution, and more.
87
163
 
88
164
  ## License
89
165
 
package/dist/buyer.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import { AbbabaClient } from './client.js';
2
- import type { AbbabaConfig, Service, ServiceSearchParams, CheckoutInput, CheckoutResult, Transaction, ApiResponse, WebhookHandler, SmartAccountConfig, SessionKeyConfig, SessionKeyResult, UseSessionKeyConfig } from './types.js';
2
+ import type { AbbabaConfig, Service, ServiceSearchParams, CheckoutInput, CheckoutResult, Transaction, ApiResponse, WebhookHandler, SmartAccountConfig, SessionKeyConfig, SessionKeyResult, UseSessionKeyConfig, AgentStats } from './types.js';
3
3
  export declare class BuyerAgent {
4
4
  readonly client: AbbabaClient;
5
5
  private webhookServer;
@@ -13,7 +13,7 @@ export declare class BuyerAgent {
13
13
  purchase(input: CheckoutInput): Promise<CheckoutResult>;
14
14
  /** Confirm delivery and release escrow via the API. */
15
15
  confirm(transactionId: string): Promise<ApiResponse<Transaction>>;
16
- /** Open a dispute on a transaction. */
16
+ /** Open a dispute on a transaction via the API. */
17
17
  dispute(transactionId: string, reason: string): Promise<ApiResponse<Transaction>>;
18
18
  /**
19
19
  * Start a webhook server to receive delivery notifications.
@@ -28,29 +28,44 @@ export declare class BuyerAgent {
28
28
  */
29
29
  initWallet(config: SmartAccountConfig): Promise<string>;
30
30
  /**
31
- * Fund an on-chain escrow for a transaction.
31
+ * Fund an on-chain escrow for a transaction (V4 — includes deadline).
32
32
  * Requires initWallet() to have been called first.
33
- * @param tokenSymbol - Settlement token symbol (default: 'USDC'). Must match the service's currency.
33
+ * @param tokenSymbol - Settlement token symbol (default: 'USDC').
34
+ * @param deadline - Unix timestamp after which the seller must deliver.
34
35
  * Returns the on-chain transaction hash.
35
36
  */
36
- fundEscrow(transactionId: string, sellerAddress: string, amount: bigint, tokenSymbol?: string): Promise<string>;
37
+ fundEscrow(transactionId: string, sellerAddress: string, amount: bigint, tokenSymbol?: string, deadline?: bigint): Promise<string>;
37
38
  /**
38
39
  * Fund escrow on-chain and verify with the backend.
39
40
  * This is the complete funding flow:
40
41
  * 1. Approve token spending
41
- * 2. Call createEscrow on the escrow contract
42
+ * 2. Call createEscrow on the V4 escrow contract
42
43
  * 3. POST /api/v1/transactions/:id/fund to verify on-chain state
43
44
  *
44
45
  * Returns the fund verification result from the backend.
45
46
  * Requires initWallet() or initWithSessionKey() to have been called first.
46
47
  */
47
- fundAndVerify(transactionId: string, sellerAddress: string, amount: bigint, tokenSymbol?: string): Promise<ApiResponse<import('./types.js').FundResult>>;
48
+ fundAndVerify(transactionId: string, sellerAddress: string, amount: bigint, tokenSymbol?: string, deadline?: bigint): Promise<ApiResponse<import('./types.js').FundResult>>;
48
49
  /**
49
- * Confirm delivery via API and release escrow on-chain.
50
- * Combines both the API confirm call and the smart contract release.
51
- * Token doesn't matter for release — the contract reads it from the stored escrow.
50
+ * Accept delivery on-chain (V4: buyer calls accept() to release funds immediately).
51
+ * Also confirms delivery via the API.
52
52
  */
53
53
  confirmAndRelease(transactionId: string): Promise<void>;
54
+ /**
55
+ * Dispute a delivery on-chain within the 24h dispute window.
56
+ * Returns the on-chain transaction hash.
57
+ */
58
+ disputeOnChain(transactionId: string): Promise<string>;
59
+ /**
60
+ * Claim funds for an abandoned escrow (deadline + 7 days passed).
61
+ * Returns the on-chain transaction hash.
62
+ */
63
+ claimAbandoned(transactionId: string): Promise<string>;
64
+ /**
65
+ * Get an agent's on-chain reputation score.
66
+ * Does not require a wallet — read-only.
67
+ */
68
+ getAgentScore(agentAddress: string): Promise<AgentStats>;
54
69
  /**
55
70
  * Initialize wallet from a serialized session key (agent operation).
56
71
  * No owner private key needed — only the serialized session key string.
@@ -64,7 +79,7 @@ export declare class BuyerAgent {
64
79
  * Generate a scoped session key for an agent (owner/developer operation).
65
80
  * The owner calls this with their private key, then passes the serialized
66
81
  * session key string to the agent. The session key is restricted to
67
- * escrow operations (USDC.approve, createEscrow, release) by default.
82
+ * V4 escrow operations by default.
68
83
  *
69
84
  * This is a static method — it doesn't require an API key or AbbabaClient.
70
85
  *
@@ -1 +1 @@
1
- {"version":3,"file":"buyer.d.ts","sourceRoot":"","sources":["../src/buyer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAE1C,OAAO,KAAK,EACV,YAAY,EACZ,OAAO,EACP,mBAAmB,EACnB,aAAa,EACb,cAAc,EACd,WAAW,EACX,WAAW,EACX,cAAc,EACd,kBAAkB,EAClB,gBAAgB,EAChB,gBAAgB,EAChB,mBAAmB,EACpB,MAAM,YAAY,CAAA;AAEnB,qBAAa,UAAU;IACrB,SAAgB,MAAM,EAAE,YAAY,CAAA;IACpC,OAAO,CAAC,aAAa,CAA6B;IAClD,OAAO,CAAC,aAAa,CAAsB;IAC3C,OAAO,CAAC,YAAY,CAAgB;IACpC,OAAO,CAAC,mBAAmB,CAAuC;gBAEtD,MAAM,EAAE,YAAY;IAIhC,2CAA2C;IACrC,YAAY,CAChB,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE,IAAI,CAAC,mBAAmB,EAAE,GAAG,CAAC,GACvC,OAAO,CAAC,OAAO,EAAE,CAAC;IAQrB,6EAA6E;IACvE,QAAQ,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,cAAc,CAAC;IAQ7D,uDAAuD;IACjD,OAAO,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;IAIvE,uCAAuC;IACjC,OAAO,CAAC,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;IAIvF;;;OAGG;IACG,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC;IAMxE,+BAA+B;IACzB,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IAOlC;;;OAGG;IACG,UAAU,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,MAAM,CAAC;IAS7D;;;;;OAKG;IACG,UAAU,CACd,aAAa,EAAE,MAAM,EACrB,aAAa,EAAE,MAAM,EACrB,MAAM,EAAE,MAAM,EACd,WAAW,GAAE,MAAe,GAC3B,OAAO,CAAC,MAAM,CAAC;IAYlB;;;;;;;;;OASG;IACG,aAAa,CACjB,aAAa,EAAE,MAAM,EACrB,aAAa,EAAE,MAAM,EACrB,MAAM,EAAE,MAAM,EACd,WAAW,GAAE,MAAe,GAC3B,OAAO,CAAC,WAAW,CAAC,OAAO,YAAY,EAAE,UAAU,CAAC,CAAC;IAKxD;;;;OAIG;IACG,iBAAiB,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAU7D;;;;;;;OAOG;IACG,kBAAkB,CAAC,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,MAAM,CAAC;IAStE;;;;;;;;;OASG;WACU,gBAAgB,CAC3B,MAAM,EAAE,gBAAgB,GACvB,OAAO,CAAC,gBAAgB,CAAC;IAK5B,gBAAgB,IAAI,MAAM,GAAG,IAAI;IAIjC,oFAAoF;IACpF,cAAc,IAAI,aAAa,GAAG,OAAO,GAAG,IAAI;CAGjD"}
1
+ {"version":3,"file":"buyer.d.ts","sourceRoot":"","sources":["../src/buyer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAE1C,OAAO,KAAK,EACV,YAAY,EACZ,OAAO,EACP,mBAAmB,EACnB,aAAa,EACb,cAAc,EACd,WAAW,EACX,WAAW,EACX,cAAc,EACd,kBAAkB,EAClB,gBAAgB,EAChB,gBAAgB,EAChB,mBAAmB,EACnB,UAAU,EACX,MAAM,YAAY,CAAA;AAEnB,qBAAa,UAAU;IACrB,SAAgB,MAAM,EAAE,YAAY,CAAA;IACpC,OAAO,CAAC,aAAa,CAA6B;IAClD,OAAO,CAAC,aAAa,CAAsB;IAC3C,OAAO,CAAC,YAAY,CAAgB;IACpC,OAAO,CAAC,mBAAmB,CAAuC;gBAEtD,MAAM,EAAE,YAAY;IAIhC,2CAA2C;IACrC,YAAY,CAChB,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE,IAAI,CAAC,mBAAmB,EAAE,GAAG,CAAC,GACvC,OAAO,CAAC,OAAO,EAAE,CAAC;IAQrB,6EAA6E;IACvE,QAAQ,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,cAAc,CAAC;IAQ7D,uDAAuD;IACjD,OAAO,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;IAIvE,mDAAmD;IAC7C,OAAO,CAAC,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;IAIvF;;;OAGG;IACG,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC;IAMxE,+BAA+B;IACzB,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IAOlC;;;OAGG;IACG,UAAU,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,MAAM,CAAC;IAS7D;;;;;;OAMG;IACG,UAAU,CACd,aAAa,EAAE,MAAM,EACrB,aAAa,EAAE,MAAM,EACrB,MAAM,EAAE,MAAM,EACd,WAAW,GAAE,MAAe,EAC5B,QAAQ,GAAE,MAA0D,GACnE,OAAO,CAAC,MAAM,CAAC;IAYlB;;;;;;;;;OASG;IACG,aAAa,CACjB,aAAa,EAAE,MAAM,EACrB,aAAa,EAAE,MAAM,EACrB,MAAM,EAAE,MAAM,EACd,WAAW,GAAE,MAAe,EAC5B,QAAQ,GAAE,MAA0D,GACnE,OAAO,CAAC,WAAW,CAAC,OAAO,YAAY,EAAE,UAAU,CAAC,CAAC;IAKxD;;;OAGG;IACG,iBAAiB,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAU7D;;;OAGG;IACG,cAAc,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAS5D;;;OAGG;IACG,cAAc,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAS5D;;;OAGG;IACG,aAAa,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAM9D;;;;;;;OAOG;IACG,kBAAkB,CAAC,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,MAAM,CAAC;IAStE;;;;;;;;;OASG;WACU,gBAAgB,CAC3B,MAAM,EAAE,gBAAgB,GACvB,OAAO,CAAC,gBAAgB,CAAC;IAK5B,gBAAgB,IAAI,MAAM,GAAG,IAAI;IAIjC,oFAAoF;IACpF,cAAc,IAAI,aAAa,GAAG,OAAO,GAAG,IAAI;CAGjD"}
package/dist/buyer.js CHANGED
@@ -29,7 +29,7 @@ export class BuyerAgent {
29
29
  async confirm(transactionId) {
30
30
  return this.client.transactions.confirm(transactionId);
31
31
  }
32
- /** Open a dispute on a transaction. */
32
+ /** Open a dispute on a transaction via the API. */
33
33
  async dispute(transactionId, reason) {
34
34
  return this.client.transactions.dispute(transactionId, { reason });
35
35
  }
@@ -62,49 +62,82 @@ export class BuyerAgent {
62
62
  return result.address;
63
63
  }
64
64
  /**
65
- * Fund an on-chain escrow for a transaction.
65
+ * Fund an on-chain escrow for a transaction (V4 — includes deadline).
66
66
  * Requires initWallet() to have been called first.
67
- * @param tokenSymbol - Settlement token symbol (default: 'USDC'). Must match the service's currency.
67
+ * @param tokenSymbol - Settlement token symbol (default: 'USDC').
68
+ * @param deadline - Unix timestamp after which the seller must deliver.
68
69
  * Returns the on-chain transaction hash.
69
70
  */
70
- async fundEscrow(transactionId, sellerAddress, amount, tokenSymbol = 'USDC') {
71
+ async fundEscrow(transactionId, sellerAddress, amount, tokenSymbol = 'USDC', deadline = BigInt(Math.floor(Date.now() / 1000) + 7 * 86400)) {
71
72
  if (!this.kernelClient) {
72
73
  throw new Error('Wallet not initialized. Call initWallet() first.');
73
74
  }
74
75
  const { EscrowClient } = await import('./wallet/escrow.js');
75
- const { getToken, POLYGON_AMOY_CHAIN_ID } = await import('./wallet/constants.js');
76
- const token = getToken(POLYGON_AMOY_CHAIN_ID, tokenSymbol);
76
+ const { getToken, BASE_SEPOLIA_CHAIN_ID } = await import('./wallet/constants.js');
77
+ const token = getToken(BASE_SEPOLIA_CHAIN_ID, tokenSymbol);
77
78
  const escrow = new EscrowClient(this.kernelClient, token);
78
79
  await escrow.approveToken(amount);
79
- return escrow.fundEscrow(transactionId, sellerAddress, amount);
80
+ return escrow.fundEscrow(transactionId, sellerAddress, amount, deadline);
80
81
  }
81
82
  /**
82
83
  * Fund escrow on-chain and verify with the backend.
83
84
  * This is the complete funding flow:
84
85
  * 1. Approve token spending
85
- * 2. Call createEscrow on the escrow contract
86
+ * 2. Call createEscrow on the V4 escrow contract
86
87
  * 3. POST /api/v1/transactions/:id/fund to verify on-chain state
87
88
  *
88
89
  * Returns the fund verification result from the backend.
89
90
  * Requires initWallet() or initWithSessionKey() to have been called first.
90
91
  */
91
- async fundAndVerify(transactionId, sellerAddress, amount, tokenSymbol = 'USDC') {
92
- const txHash = await this.fundEscrow(transactionId, sellerAddress, amount, tokenSymbol);
92
+ async fundAndVerify(transactionId, sellerAddress, amount, tokenSymbol = 'USDC', deadline = BigInt(Math.floor(Date.now() / 1000) + 7 * 86400)) {
93
+ const txHash = await this.fundEscrow(transactionId, sellerAddress, amount, tokenSymbol, deadline);
93
94
  return this.client.transactions.fund(transactionId, { txHash });
94
95
  }
95
96
  /**
96
- * Confirm delivery via API and release escrow on-chain.
97
- * Combines both the API confirm call and the smart contract release.
98
- * Token doesn't matter for release — the contract reads it from the stored escrow.
97
+ * Accept delivery on-chain (V4: buyer calls accept() to release funds immediately).
98
+ * Also confirms delivery via the API.
99
99
  */
100
100
  async confirmAndRelease(transactionId) {
101
101
  await this.client.transactions.confirm(transactionId);
102
102
  if (this.kernelClient) {
103
103
  const { EscrowClient } = await import('./wallet/escrow.js');
104
104
  const escrow = new EscrowClient(this.kernelClient);
105
- await escrow.releaseEscrow(transactionId);
105
+ await escrow.acceptDelivery(transactionId);
106
106
  }
107
107
  }
108
+ /**
109
+ * Dispute a delivery on-chain within the 24h dispute window.
110
+ * Returns the on-chain transaction hash.
111
+ */
112
+ async disputeOnChain(transactionId) {
113
+ if (!this.kernelClient) {
114
+ throw new Error('Wallet not initialized. Call initWallet() first.');
115
+ }
116
+ const { EscrowClient } = await import('./wallet/escrow.js');
117
+ const escrow = new EscrowClient(this.kernelClient);
118
+ return escrow.disputeEscrow(transactionId);
119
+ }
120
+ /**
121
+ * Claim funds for an abandoned escrow (deadline + 7 days passed).
122
+ * Returns the on-chain transaction hash.
123
+ */
124
+ async claimAbandoned(transactionId) {
125
+ if (!this.kernelClient) {
126
+ throw new Error('Wallet not initialized. Call initWallet() first.');
127
+ }
128
+ const { EscrowClient } = await import('./wallet/escrow.js');
129
+ const escrow = new EscrowClient(this.kernelClient);
130
+ return escrow.claimAbandoned(transactionId);
131
+ }
132
+ /**
133
+ * Get an agent's on-chain reputation score.
134
+ * Does not require a wallet — read-only.
135
+ */
136
+ async getAgentScore(agentAddress) {
137
+ const { ScoreClient } = await import('./wallet/escrow.js');
138
+ const score = new ScoreClient();
139
+ return score.getAgentStats(agentAddress);
140
+ }
108
141
  /**
109
142
  * Initialize wallet from a serialized session key (agent operation).
110
143
  * No owner private key needed — only the serialized session key string.
@@ -125,7 +158,7 @@ export class BuyerAgent {
125
158
  * Generate a scoped session key for an agent (owner/developer operation).
126
159
  * The owner calls this with their private key, then passes the serialized
127
160
  * session key string to the agent. The session key is restricted to
128
- * escrow operations (USDC.approve, createEscrow, release) by default.
161
+ * V4 escrow operations by default.
129
162
  *
130
163
  * This is a static method — it doesn't require an API key or AbbabaClient.
131
164
  *
package/dist/buyer.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"buyer.js","sourceRoot":"","sources":["../src/buyer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"buyer.js","sourceRoot":"","sources":["../src/buyer.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -7,6 +7,7 @@ export { CheckoutClient } from './checkout.js';
7
7
  export { TransactionsClient } from './transactions.js';
8
8
  export { WebhookServer } from './webhook.js';
9
9
  export { AbbabaError, AuthenticationError, ForbiddenError, NotFoundError, ValidationError, RateLimitError, } from './errors.js';
10
- export type { AbbabaConfig, ApiResponse, ServiceCategory, PriceUnit, ServiceCurrency, DeliveryType, ServiceStatus, PaymentMethod, PaymentStatus, TransactionStatus, DisputeOutcome, WalletChain, CreateServiceInput, UpdateServiceInput, Service, ServiceSearchParams, ServiceListResult, AgentSummary, CheckoutInput, CheckoutResult, CryptoPaymentInstructions, PaymentInstructions, Transaction, TransactionListParams, TransactionListResult, DeliverInput, DisputeInput, FundInput, FundResult, WebhookEvent, WebhookHandler, GasStrategy, SmartAccountConfig, SmartAccountResult, EscrowDetails, SessionKeyConfig, SessionKeyResult, UseSessionKeyConfig, RevokeSessionKeyConfig, PollOptions, } from './types.js';
10
+ export type { AbbabaConfig, ApiResponse, ServiceCategory, PriceUnit, ServiceCurrency, DeliveryType, ServiceStatus, PaymentMethod, PaymentStatus, TransactionStatus, DisputeOutcome, WalletChain, CreateServiceInput, UpdateServiceInput, Service, ServiceSearchParams, ServiceListResult, AgentSummary, CheckoutInput, CheckoutResult, CryptoPaymentInstructions, PaymentInstructions, Transaction, TransactionListParams, TransactionListResult, DeliverInput, DisputeInput, FundInput, FundResult, WebhookEvent, WebhookHandler, GasStrategy, SmartAccountConfig, SmartAccountResult, EscrowDetails, AgentStats, SessionKeyConfig, SessionKeyResult, UseSessionKeyConfig, RevokeSessionKeyConfig, PollOptions, } from './types.js';
11
+ export { EscrowStatus, OnChainDisputeOutcome } from './types.js';
11
12
  export type { RegisterOptions, RegisterResult } from './register.js';
12
13
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAG1C,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAGxC,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAGvC,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAC9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AAGtD,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAG5C,OAAO,EACL,WAAW,EACX,mBAAmB,EACnB,cAAc,EACd,aAAa,EACb,eAAe,EACf,cAAc,GACf,MAAM,aAAa,CAAA;AAGpB,YAAY,EAEV,YAAY,EACZ,WAAW,EAGX,eAAe,EACf,SAAS,EACT,eAAe,EACf,YAAY,EACZ,aAAa,EACb,aAAa,EACb,aAAa,EACb,iBAAiB,EACjB,cAAc,EACd,WAAW,EAGX,kBAAkB,EAClB,kBAAkB,EAClB,OAAO,EACP,mBAAmB,EACnB,iBAAiB,EACjB,YAAY,EAGZ,aAAa,EACb,cAAc,EACd,yBAAyB,EACzB,mBAAmB,EAGnB,WAAW,EACX,qBAAqB,EACrB,qBAAqB,EACrB,YAAY,EACZ,YAAY,EACZ,SAAS,EACT,UAAU,EAGV,YAAY,EACZ,cAAc,EAGd,WAAW,EACX,kBAAkB,EAClB,kBAAkB,EAClB,aAAa,EAGb,gBAAgB,EAChB,gBAAgB,EAChB,mBAAmB,EACnB,sBAAsB,EAGtB,WAAW,GACZ,MAAM,YAAY,CAAA;AAGnB,YAAY,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAG1C,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAGxC,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAGvC,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAC9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AAGtD,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAG5C,OAAO,EACL,WAAW,EACX,mBAAmB,EACnB,cAAc,EACd,aAAa,EACb,eAAe,EACf,cAAc,GACf,MAAM,aAAa,CAAA;AAGpB,YAAY,EAEV,YAAY,EACZ,WAAW,EAGX,eAAe,EACf,SAAS,EACT,eAAe,EACf,YAAY,EACZ,aAAa,EACb,aAAa,EACb,aAAa,EACb,iBAAiB,EACjB,cAAc,EACd,WAAW,EAGX,kBAAkB,EAClB,kBAAkB,EAClB,OAAO,EACP,mBAAmB,EACnB,iBAAiB,EACjB,YAAY,EAGZ,aAAa,EACb,cAAc,EACd,yBAAyB,EACzB,mBAAmB,EAGnB,WAAW,EACX,qBAAqB,EACrB,qBAAqB,EACrB,YAAY,EACZ,YAAY,EACZ,SAAS,EACT,UAAU,EAGV,YAAY,EACZ,cAAc,EAGd,WAAW,EACX,kBAAkB,EAClB,kBAAkB,EAClB,aAAa,EACb,UAAU,EAGV,gBAAgB,EAChB,gBAAgB,EAChB,mBAAmB,EACnB,sBAAsB,EAGtB,WAAW,GACZ,MAAM,YAAY,CAAA;AAGnB,OAAO,EAAE,YAAY,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAA;AAGhE,YAAY,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA"}
package/dist/index.js CHANGED
@@ -13,4 +13,6 @@ export { TransactionsClient } from './transactions.js';
13
13
  export { WebhookServer } from './webhook.js';
14
14
  // Errors
15
15
  export { AbbabaError, AuthenticationError, ForbiddenError, NotFoundError, ValidationError, RateLimitError, } from './errors.js';
16
+ // V4 on-chain enums
17
+ export { EscrowStatus, OnChainDisputeOutcome } from './types.js';
16
18
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc;AACd,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAE1C,wBAAwB;AACxB,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAExC,sBAAsB;AACtB,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAEvC,cAAc;AACd,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAC9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AAEtD,iBAAiB;AACjB,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAE5C,SAAS;AACT,OAAO,EACL,WAAW,EACX,mBAAmB,EACnB,cAAc,EACd,aAAa,EACb,eAAe,EACf,cAAc,GACf,MAAM,aAAa,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc;AACd,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAE1C,wBAAwB;AACxB,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAExC,sBAAsB;AACtB,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAEvC,cAAc;AACd,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAC9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AAEtD,iBAAiB;AACjB,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAE5C,SAAS;AACT,OAAO,EACL,WAAW,EACX,mBAAmB,EACnB,cAAc,EACd,aAAa,EACb,eAAe,EACf,cAAc,GACf,MAAM,aAAa,CAAA;AAgEpB,oBAAoB;AACpB,OAAO,EAAE,YAAY,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAA"}
package/dist/seller.d.ts CHANGED
@@ -1,8 +1,11 @@
1
1
  import { AbbabaClient } from './client.js';
2
- import type { AbbabaConfig, CreateServiceInput, Service, Transaction, PollOptions, ApiResponse } from './types.js';
2
+ import type { AbbabaConfig, CreateServiceInput, Service, Transaction, PollOptions, ApiResponse, SmartAccountConfig, UseSessionKeyConfig, AgentStats } from './types.js';
3
3
  export declare class SellerAgent {
4
4
  readonly client: AbbabaClient;
5
5
  private running;
6
+ private walletAddress;
7
+ private kernelClient;
8
+ private resolvedGasStrategy;
6
9
  constructor(config: AbbabaConfig);
7
10
  /** Register a service on the marketplace. */
8
11
  listService(input: CreateServiceInput): Promise<Service>;
@@ -12,9 +15,34 @@ export declare class SellerAgent {
12
15
  * Tracks seen transaction IDs to avoid yielding duplicates.
13
16
  */
14
17
  pollForPurchases(options?: PollOptions): AsyncGenerator<Transaction>;
15
- /** Deliver results for a transaction. */
18
+ /** Deliver results for a transaction via the API. */
16
19
  deliver(transactionId: string, responsePayload: unknown): Promise<ApiResponse<Transaction>>;
20
+ /**
21
+ * Submit delivery proof on-chain (V4) and optionally deliver via the API.
22
+ * Requires initWallet() or initWithSessionKey() to have been called first.
23
+ * @param proofHash - keccak256 hash of the delivery proof data.
24
+ * @param responsePayload - Optional API delivery payload. If provided, also calls the deliver endpoint.
25
+ */
26
+ submitDelivery(transactionId: string, proofHash: `0x${string}`, responsePayload?: unknown): Promise<string>;
27
+ /**
28
+ * Initialize a ZeroDev smart account for on-chain operations.
29
+ * Requires @zerodev/sdk, @zerodev/ecdsa-validator, and permissionless as peer deps.
30
+ */
31
+ initWallet(config: SmartAccountConfig): Promise<string>;
32
+ /**
33
+ * Initialize wallet from a serialized session key (agent operation).
34
+ * No owner private key needed — only the serialized session key string.
35
+ */
36
+ initWithSessionKey(config: UseSessionKeyConfig): Promise<string>;
37
+ /**
38
+ * Get own on-chain reputation score.
39
+ * Does not require a wallet — read-only.
40
+ */
41
+ getAgentScore(agentAddress?: string): Promise<AgentStats>;
17
42
  /** Stop the polling loop. */
18
43
  stop(): void;
44
+ getWalletAddress(): string | null;
45
+ /** Returns the resolved gas strategy after initWallet() or initWithSessionKey(). */
46
+ getGasStrategy(): 'self-funded' | 'erc20' | null;
19
47
  }
20
48
  //# sourceMappingURL=seller.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"seller.d.ts","sourceRoot":"","sources":["../src/seller.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAC1C,OAAO,KAAK,EACV,YAAY,EACZ,kBAAkB,EAClB,OAAO,EACP,WAAW,EACX,WAAW,EACX,WAAW,EACZ,MAAM,YAAY,CAAA;AAEnB,qBAAa,WAAW;IACtB,SAAgB,MAAM,EAAE,YAAY,CAAA;IACpC,OAAO,CAAC,OAAO,CAAQ;gBAEX,MAAM,EAAE,YAAY;IAIhC,6CAA6C;IACvC,WAAW,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,OAAO,CAAC;IAQ9D;;;;OAIG;IACI,gBAAgB,CAAC,OAAO,CAAC,EAAE,WAAW,GAAG,cAAc,CAAC,WAAW,CAAC;IAgC3E,yCAAyC;IACnC,OAAO,CAAC,aAAa,EAAE,MAAM,EAAE,eAAe,EAAE,OAAO,GAAG,OAAO,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;IAIjG,6BAA6B;IAC7B,IAAI,IAAI,IAAI;CAGb"}
1
+ {"version":3,"file":"seller.d.ts","sourceRoot":"","sources":["../src/seller.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAC1C,OAAO,KAAK,EACV,YAAY,EACZ,kBAAkB,EAClB,OAAO,EACP,WAAW,EACX,WAAW,EACX,WAAW,EACX,kBAAkB,EAClB,mBAAmB,EACnB,UAAU,EACX,MAAM,YAAY,CAAA;AAEnB,qBAAa,WAAW;IACtB,SAAgB,MAAM,EAAE,YAAY,CAAA;IACpC,OAAO,CAAC,OAAO,CAAQ;IACvB,OAAO,CAAC,aAAa,CAAsB;IAC3C,OAAO,CAAC,YAAY,CAAgB;IACpC,OAAO,CAAC,mBAAmB,CAAuC;gBAEtD,MAAM,EAAE,YAAY;IAIhC,6CAA6C;IACvC,WAAW,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,OAAO,CAAC;IAQ9D;;;;OAIG;IACI,gBAAgB,CAAC,OAAO,CAAC,EAAE,WAAW,GAAG,cAAc,CAAC,WAAW,CAAC;IAgC3E,qDAAqD;IAC/C,OAAO,CAAC,aAAa,EAAE,MAAM,EAAE,eAAe,EAAE,OAAO,GAAG,OAAO,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;IAIjG;;;;;OAKG;IACG,cAAc,CAClB,aAAa,EAAE,MAAM,EACrB,SAAS,EAAE,KAAK,MAAM,EAAE,EACxB,eAAe,CAAC,EAAE,OAAO,GACxB,OAAO,CAAC,MAAM,CAAC;IAelB;;;OAGG;IACG,UAAU,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,MAAM,CAAC;IAS7D;;;OAGG;IACG,kBAAkB,CAAC,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,MAAM,CAAC;IAStE;;;OAGG;IACG,aAAa,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAU/D,6BAA6B;IAC7B,IAAI,IAAI,IAAI;IAIZ,gBAAgB,IAAI,MAAM,GAAG,IAAI;IAIjC,oFAAoF;IACpF,cAAc,IAAI,aAAa,GAAG,OAAO,GAAG,IAAI;CAGjD"}
package/dist/seller.js CHANGED
@@ -2,6 +2,9 @@ import { AbbabaClient } from './client.js';
2
2
  export class SellerAgent {
3
3
  client;
4
4
  running = false;
5
+ walletAddress = null;
6
+ kernelClient = null;
7
+ resolvedGasStrategy = null;
5
8
  constructor(config) {
6
9
  this.client = new AbbabaClient(config);
7
10
  }
@@ -47,14 +50,76 @@ export class SellerAgent {
47
50
  await sleep(interval);
48
51
  }
49
52
  }
50
- /** Deliver results for a transaction. */
53
+ /** Deliver results for a transaction via the API. */
51
54
  async deliver(transactionId, responsePayload) {
52
55
  return this.client.transactions.deliver(transactionId, { responsePayload });
53
56
  }
57
+ /**
58
+ * Submit delivery proof on-chain (V4) and optionally deliver via the API.
59
+ * Requires initWallet() or initWithSessionKey() to have been called first.
60
+ * @param proofHash - keccak256 hash of the delivery proof data.
61
+ * @param responsePayload - Optional API delivery payload. If provided, also calls the deliver endpoint.
62
+ */
63
+ async submitDelivery(transactionId, proofHash, responsePayload) {
64
+ if (!this.kernelClient) {
65
+ throw new Error('Wallet not initialized. Call initWallet() first.');
66
+ }
67
+ const { EscrowClient } = await import('./wallet/escrow.js');
68
+ const escrow = new EscrowClient(this.kernelClient);
69
+ const txHash = await escrow.submitDelivery(transactionId, proofHash);
70
+ if (responsePayload !== undefined) {
71
+ await this.client.transactions.deliver(transactionId, { responsePayload });
72
+ }
73
+ return txHash;
74
+ }
75
+ /**
76
+ * Initialize a ZeroDev smart account for on-chain operations.
77
+ * Requires @zerodev/sdk, @zerodev/ecdsa-validator, and permissionless as peer deps.
78
+ */
79
+ async initWallet(config) {
80
+ const { createSmartAccount } = await import('./wallet/smart-account.js');
81
+ const result = await createSmartAccount(config);
82
+ this.walletAddress = result.address;
83
+ this.kernelClient = result.kernelClient;
84
+ this.resolvedGasStrategy = result.gasStrategy;
85
+ return result.address;
86
+ }
87
+ /**
88
+ * Initialize wallet from a serialized session key (agent operation).
89
+ * No owner private key needed — only the serialized session key string.
90
+ */
91
+ async initWithSessionKey(config) {
92
+ const { useSessionKey } = await import('./wallet/session-keys.js');
93
+ const result = await useSessionKey(config);
94
+ this.walletAddress = result.address;
95
+ this.kernelClient = result.kernelClient;
96
+ this.resolvedGasStrategy = result.gasStrategy;
97
+ return result.address;
98
+ }
99
+ /**
100
+ * Get own on-chain reputation score.
101
+ * Does not require a wallet — read-only.
102
+ */
103
+ async getAgentScore(agentAddress) {
104
+ const address = agentAddress ?? this.walletAddress;
105
+ if (!address) {
106
+ throw new Error('No address. Provide agentAddress or call initWallet() first.');
107
+ }
108
+ const { ScoreClient } = await import('./wallet/escrow.js');
109
+ const score = new ScoreClient();
110
+ return score.getAgentStats(address);
111
+ }
54
112
  /** Stop the polling loop. */
55
113
  stop() {
56
114
  this.running = false;
57
115
  }
116
+ getWalletAddress() {
117
+ return this.walletAddress;
118
+ }
119
+ /** Returns the resolved gas strategy after initWallet() or initWithSessionKey(). */
120
+ getGasStrategy() {
121
+ return this.resolvedGasStrategy;
122
+ }
58
123
  }
59
124
  function sleep(ms) {
60
125
  return new Promise((resolve) => setTimeout(resolve, ms));
@@ -1 +1 @@
1
- {"version":3,"file":"seller.js","sourceRoot":"","sources":["../src/seller.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAU1C,MAAM,OAAO,WAAW;IACN,MAAM,CAAc;IAC5B,OAAO,GAAG,KAAK,CAAA;IAEvB,YAAY,MAAoB;QAC9B,IAAI,CAAC,MAAM,GAAG,IAAI,YAAY,CAAC,MAAM,CAAC,CAAA;IACxC,CAAC;IAED,6CAA6C;IAC7C,KAAK,CAAC,WAAW,CAAC,KAAyB;QACzC,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QACpD,IAAI,CAAC,GAAG,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;YAC9B,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,KAAK,IAAI,wBAAwB,CAAC,CAAA;QACxD,CAAC;QACD,OAAO,GAAG,CAAC,IAAI,CAAA;IACjB,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,CAAC,gBAAgB,CAAC,OAAqB;QAC3C,MAAM,QAAQ,GAAG,OAAO,EAAE,QAAQ,IAAI,KAAK,CAAA;QAC3C,MAAM,QAAQ,GAAG,OAAO,EAAE,QAAQ,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,CAAA;QAC7D,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAA;QAC9B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAA;QAEnB,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC;YACpB,KAAK,MAAM,MAAM,IAAI,QAAQ,EAAE,CAAC;gBAC9B,IAAI,CAAC;oBACH,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC;wBAC9C,IAAI,EAAE,QAAQ;wBACd,MAAM;wBACN,KAAK,EAAE,EAAE;qBACV,CAAC,CAAA;oBAEF,IAAI,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC;wBAC5B,KAAK,MAAM,EAAE,IAAI,GAAG,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;4BACvC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;gCACrB,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAA;gCACf,MAAM,EAAE,CAAA;4BACV,CAAC;wBACH,CAAC;oBACH,CAAC;gBACH,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,OAAO,CAAC,KAAK,CAAC,oCAAoC,MAAM,IAAI,EAAE,GAAG,CAAC,CAAA;gBACpE,CAAC;YACH,CAAC;YAED,MAAM,KAAK,CAAC,QAAQ,CAAC,CAAA;QACvB,CAAC;IACH,CAAC;IAED,yCAAyC;IACzC,KAAK,CAAC,OAAO,CAAC,aAAqB,EAAE,eAAwB;QAC3D,OAAO,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,eAAe,EAAE,CAAC,CAAA;IAC7E,CAAC;IAED,6BAA6B;IAC7B,IAAI;QACF,IAAI,CAAC,OAAO,GAAG,KAAK,CAAA;IACtB,CAAC;CACF;AAED,SAAS,KAAK,CAAC,EAAU;IACvB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAA;AAC1D,CAAC"}
1
+ {"version":3,"file":"seller.js","sourceRoot":"","sources":["../src/seller.ts"],"names":[],"mappings":"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"}