@abbababa/sdk 0.2.0 → 0.4.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.
- package/README.md +46 -8
- package/dist/buyer.d.ts +1 -1
- package/dist/buyer.js +1 -1
- package/dist/client.d.ts +4 -0
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +10 -1
- package/dist/client.js.map +1 -1
- package/dist/errors.d.ts +4 -0
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +8 -0
- package/dist/errors.js.map +1 -1
- package/dist/index.d.ts +6 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/memory.d.ts +59 -0
- package/dist/memory.d.ts.map +1 -0
- package/dist/memory.js +43 -0
- package/dist/memory.js.map +1 -0
- package/dist/messages.d.ts +65 -0
- package/dist/messages.d.ts.map +1 -0
- package/dist/messages.js +36 -0
- package/dist/messages.js.map +1 -0
- package/dist/types.d.ts +26 -5
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/dist/wallet/abi.d.ts +191 -40
- package/dist/wallet/abi.d.ts.map +1 -1
- package/dist/wallet/abi.js +148 -39
- package/dist/wallet/abi.js.map +1 -1
- package/dist/wallet/constants.d.ts +14 -2
- package/dist/wallet/constants.d.ts.map +1 -1
- package/dist/wallet/constants.js +31 -14
- package/dist/wallet/constants.js.map +1 -1
- package/dist/wallet/escrow.d.ts +74 -18
- package/dist/wallet/escrow.d.ts.map +1 -1
- package/dist/wallet/escrow.js +126 -39
- package/dist/wallet/escrow.js.map +1 -1
- package/dist/wallet/index.d.ts +2 -2
- package/dist/wallet/index.d.ts.map +1 -1
- package/dist/wallet/index.js +5 -3
- package/dist/wallet/index.js.map +1 -1
- package/package.json +2 -1
package/dist/wallet/abi.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"abi.js","sourceRoot":"","sources":["../../src/wallet/abi.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"abi.js","sourceRoot":"","sources":["../../src/wallet/abi.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,9 +2,21 @@ export declare const POLYGON_AMOY_CHAIN_ID = 80002;
|
|
|
2
2
|
export declare const POLYGON_MAINNET_CHAIN_ID = 137;
|
|
3
3
|
export declare const BASE_SEPOLIA_CHAIN_ID = 84532;
|
|
4
4
|
export declare const BASE_MAINNET_CHAIN_ID = 8453;
|
|
5
|
-
/**
|
|
5
|
+
/** AbbababaEscrowV2 — UUPS upgradeable escrow with simplified AI-only dispute resolution. */
|
|
6
|
+
export declare const ESCROW_V2_ADDRESSES: Record<number, string>;
|
|
7
|
+
/** AbbababaScoreV2 — on-chain agent reputation with simplified +1/-3/-5 scoring (UUPS upgradeable). */
|
|
8
|
+
export declare const SCORE_V2_ADDRESSES: Record<number, string>;
|
|
9
|
+
/** AbbababaResolverV2 — AI-only instant dispute resolution (UUPS upgradeable). */
|
|
10
|
+
export declare const RESOLVER_V2_ADDRESSES: Record<number, string>;
|
|
11
|
+
/** Mock USDC for testnet. */
|
|
12
|
+
export declare const MOCK_USDC_ADDRESSES: Record<number, string>;
|
|
13
|
+
/** @deprecated V1 contracts deprecated Feb 14, 2026. Use ESCROW_V2_ADDRESSES instead. */
|
|
14
|
+
export declare const ESCROW_V1_ADDRESSES: Record<number, string>;
|
|
15
|
+
/** @deprecated V1 contracts deprecated Feb 14, 2026. Use SCORE_V2_ADDRESSES instead. */
|
|
16
|
+
export declare const SCORE_V1_ADDRESSES: Record<number, string>;
|
|
17
|
+
/** @deprecated Use ESCROW_V2_ADDRESSES instead */
|
|
6
18
|
export declare const ESCROW_V4_ADDRESSES: Record<number, string>;
|
|
7
|
-
/**
|
|
19
|
+
/** @deprecated Use SCORE_V2_ADDRESSES instead */
|
|
8
20
|
export declare const SCORE_ADDRESSES: Record<number, string>;
|
|
9
21
|
export interface TokenInfo {
|
|
10
22
|
symbol: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/wallet/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,qBAAqB,QAAQ,CAAA;AAC1C,eAAO,MAAM,wBAAwB,MAAM,CAAA;AAC3C,eAAO,MAAM,qBAAqB,QAAQ,CAAA;AAC1C,eAAO,MAAM,qBAAqB,OAAO,CAAA;AAMzC,yFAAyF;AACzF,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAEtD,CAAA;
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/wallet/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,qBAAqB,QAAQ,CAAA;AAC1C,eAAO,MAAM,wBAAwB,MAAM,CAAA;AAC3C,eAAO,MAAM,qBAAqB,QAAQ,CAAA;AAC1C,eAAO,MAAM,qBAAqB,OAAO,CAAA;AAMzC,6FAA6F;AAC7F,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAEtD,CAAA;AAED,uGAAuG;AACvG,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAErD,CAAA;AAED,kFAAkF;AAClF,eAAO,MAAM,qBAAqB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAExD,CAAA;AAED,6BAA6B;AAC7B,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAEtD,CAAA;AAGD,yFAAyF;AACzF,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAEtD,CAAA;AACD,wFAAwF;AACxF,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAErD,CAAA;AACD,kDAAkD;AAClD,eAAO,MAAM,mBAAmB,wBAAsB,CAAA;AACtD,iDAAiD;AACjD,eAAO,MAAM,eAAe,wBAAqB,CAAA;AAMjD,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,MAAM,CAAA;IAChB,IAAI,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;CAChB;AAED,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAuBpE,CAAA;AAED,2CAA2C;AAC3C,wBAAgB,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,CAE/E;AAED,mDAAmD;AACnD,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,SAAS,EAAE,CAI7E;AAED,6DAA6D;AAC7D,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAEzE;AASD,eAAO,MAAM,eAAe,qBAA0B,CAAA;AAEtD,eAAO,MAAM,mBAAmB,2CAA2C,CAAA;AAC3E,eAAO,MAAM,qBAAqB,6CAA6C,CAAA"}
|
package/dist/wallet/constants.js
CHANGED
|
@@ -3,22 +3,39 @@ export const POLYGON_MAINNET_CHAIN_ID = 137;
|
|
|
3
3
|
export const BASE_SEPOLIA_CHAIN_ID = 84532;
|
|
4
4
|
export const BASE_MAINNET_CHAIN_ID = 8453;
|
|
5
5
|
// ============================================================================
|
|
6
|
-
//
|
|
6
|
+
// V2 Contract Addresses (UUPS Upgradeable - Deployed 2026-02-14)
|
|
7
7
|
// ============================================================================
|
|
8
|
-
/**
|
|
9
|
-
export const
|
|
10
|
-
[BASE_SEPOLIA_CHAIN_ID]: '
|
|
8
|
+
/** AbbababaEscrowV2 — UUPS upgradeable escrow with simplified AI-only dispute resolution. */
|
|
9
|
+
export const ESCROW_V2_ADDRESSES = {
|
|
10
|
+
[BASE_SEPOLIA_CHAIN_ID]: '0x1Aed68edafC24cc936cFabEcF88012CdF5DA0601',
|
|
11
11
|
};
|
|
12
|
-
/**
|
|
13
|
-
export const
|
|
14
|
-
[BASE_SEPOLIA_CHAIN_ID]: '
|
|
12
|
+
/** AbbababaScoreV2 — on-chain agent reputation with simplified +1/-3/-5 scoring (UUPS upgradeable). */
|
|
13
|
+
export const SCORE_V2_ADDRESSES = {
|
|
14
|
+
[BASE_SEPOLIA_CHAIN_ID]: '0x15a43BdE0F17A2163c587905e8E439ae2F1a2536',
|
|
15
15
|
};
|
|
16
|
+
/** AbbababaResolverV2 — AI-only instant dispute resolution (UUPS upgradeable). */
|
|
17
|
+
export const RESOLVER_V2_ADDRESSES = {
|
|
18
|
+
[BASE_SEPOLIA_CHAIN_ID]: '0x41Be690C525457e93e13D876289C8De1Cc9d8B7A',
|
|
19
|
+
};
|
|
20
|
+
/** Mock USDC for testnet. */
|
|
21
|
+
export const MOCK_USDC_ADDRESSES = {
|
|
22
|
+
[BASE_SEPOLIA_CHAIN_ID]: '0x9BCd298614fa3b9303418D3F614B63dE128AA6E5',
|
|
23
|
+
};
|
|
24
|
+
// Legacy V1 addresses (deprecated - use V2)
|
|
25
|
+
/** @deprecated V1 contracts deprecated Feb 14, 2026. Use ESCROW_V2_ADDRESSES instead. */
|
|
26
|
+
export const ESCROW_V1_ADDRESSES = {
|
|
27
|
+
[BASE_SEPOLIA_CHAIN_ID]: '0x71b1544C4E0F8a07eeAEbBe72E2368d32bAaA11d',
|
|
28
|
+
};
|
|
29
|
+
/** @deprecated V1 contracts deprecated Feb 14, 2026. Use SCORE_V2_ADDRESSES instead. */
|
|
30
|
+
export const SCORE_V1_ADDRESSES = {
|
|
31
|
+
[BASE_SEPOLIA_CHAIN_ID]: '0xF586a7A69a893C7eF760eA537DAa4864FEA97168',
|
|
32
|
+
};
|
|
33
|
+
/** @deprecated Use ESCROW_V2_ADDRESSES instead */
|
|
34
|
+
export const ESCROW_V4_ADDRESSES = ESCROW_V1_ADDRESSES;
|
|
35
|
+
/** @deprecated Use SCORE_V2_ADDRESSES instead */
|
|
36
|
+
export const SCORE_ADDRESSES = SCORE_V1_ADDRESSES;
|
|
16
37
|
export const TOKEN_REGISTRY = {
|
|
17
|
-
|
|
18
|
-
// Tier 1 — Phase 1 (must-have)
|
|
19
|
-
USDC: { symbol: 'USDC', address: '0x9DCE328784A6B24fbe84eC05e9Ea3C6Cce782529', decimals: 6, tier: 1 },
|
|
20
|
-
// WPOL, USDT, DAI addresses on Amoy TBD (deploy MockERC20 instances or use testnet faucets)
|
|
21
|
-
},
|
|
38
|
+
// V2: Removed Polygon Amoy (deprecated)
|
|
22
39
|
[POLYGON_MAINNET_CHAIN_ID]: {
|
|
23
40
|
// Tier 1 — Phase 1
|
|
24
41
|
USDC: { symbol: 'USDC', address: '0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359', decimals: 6, tier: 1 },
|
|
@@ -59,9 +76,9 @@ export function isTokenSupported(chainId, symbol) {
|
|
|
59
76
|
// ============================================================================
|
|
60
77
|
// Gas & Infrastructure
|
|
61
78
|
// ============================================================================
|
|
62
|
-
// Minimum native token (
|
|
79
|
+
// Minimum native token (ETH) balance for self-funded gas.
|
|
63
80
|
// If balance is below this, 'auto' strategy falls back to ERC-20 paymaster.
|
|
64
|
-
// 0.01
|
|
81
|
+
// 0.01 ETH in wei — enough for ~1-10 UserOperations on Base.
|
|
65
82
|
export const MIN_GAS_BALANCE = 10000000000000000n;
|
|
66
83
|
export const ZERODEV_BUNDLER_URL = 'https://rpc.zerodev.app/api/v3/bundler';
|
|
67
84
|
export const ZERODEV_PAYMASTER_URL = 'https://rpc.zerodev.app/api/v3/paymaster';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/wallet/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,qBAAqB,GAAG,KAAK,CAAA;AAC1C,MAAM,CAAC,MAAM,wBAAwB,GAAG,GAAG,CAAA;AAC3C,MAAM,CAAC,MAAM,qBAAqB,GAAG,KAAK,CAAA;AAC1C,MAAM,CAAC,MAAM,qBAAqB,GAAG,IAAI,CAAA;AAEzC,+EAA+E;AAC/E,
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/wallet/constants.ts"],"names":[],"mappings":"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"}
|
package/dist/wallet/escrow.d.ts
CHANGED
|
@@ -1,9 +1,29 @@
|
|
|
1
|
+
import { type Address } from 'viem';
|
|
1
2
|
import { type TokenInfo } from './constants.js';
|
|
2
3
|
import type { EscrowDetails, AgentStats } from '../types.js';
|
|
4
|
+
/** Dispute resolution outcome */
|
|
5
|
+
export declare enum DisputeOutcome {
|
|
6
|
+
None = 0,
|
|
7
|
+
BuyerRefund = 1,
|
|
8
|
+
SellerPaid = 2,
|
|
9
|
+
Split = 3
|
|
10
|
+
}
|
|
11
|
+
/** Escrow status codes */
|
|
12
|
+
export declare enum EscrowStatus {
|
|
13
|
+
None = 0,
|
|
14
|
+
Funded = 1,
|
|
15
|
+
Delivered = 2,
|
|
16
|
+
Released = 3,
|
|
17
|
+
Refunded = 4,
|
|
18
|
+
Disputed = 5,
|
|
19
|
+
Resolved = 6,
|
|
20
|
+
Abandoned = 7
|
|
21
|
+
}
|
|
3
22
|
/**
|
|
4
|
-
* Client for interacting with the
|
|
5
|
-
* Supports
|
|
6
|
-
*
|
|
23
|
+
* Client for interacting with the AbbababaEscrowV2 smart contract.
|
|
24
|
+
* Supports UUPS upgradeable escrow with 2% platform fee,
|
|
25
|
+
* criteriaHash for AI dispute resolution, configurable dispute windows,
|
|
26
|
+
* and abandonment detection.
|
|
7
27
|
* Uses a ZeroDev Kernel account client for sending UserOperations.
|
|
8
28
|
*/
|
|
9
29
|
export declare class EscrowClient {
|
|
@@ -20,14 +40,27 @@ export declare class EscrowClient {
|
|
|
20
40
|
static toEscrowId(transactionId: string): `0x${string}`;
|
|
21
41
|
/**
|
|
22
42
|
* Approve the escrow contract to spend the settlement token on behalf of the smart account.
|
|
23
|
-
* Must be called before fundEscrow.
|
|
43
|
+
* Must be called before fundEscrow. Approves amount + 2% fee (calculatePlatformFee).
|
|
24
44
|
*/
|
|
25
45
|
approveToken(amount: bigint): Promise<string>;
|
|
26
46
|
/**
|
|
27
|
-
*
|
|
28
|
-
* The
|
|
47
|
+
* Generate a criteriaHash from success criteria JSON.
|
|
48
|
+
* The criteriaHash is stored on-chain to enable Tier 1 algorithmic resolution.
|
|
29
49
|
*/
|
|
30
|
-
|
|
50
|
+
static toCriteriaHash(criteria: object | string): `0x${string}`;
|
|
51
|
+
/**
|
|
52
|
+
* Fund an escrow. Calls V2 createEscrow with agent-negotiable parameters.
|
|
53
|
+
* The contract will safeTransferFrom the token (amount + 2% platform fee) from the caller.
|
|
54
|
+
*
|
|
55
|
+
* @param transactionId - Platform transaction ID (CUID)
|
|
56
|
+
* @param sellerAddress - Seller's wallet address
|
|
57
|
+
* @param amount - Amount in smallest token units (e.g., USDC with 6 decimals)
|
|
58
|
+
* @param deadline - Unix timestamp for delivery deadline
|
|
59
|
+
* @param disputeWindow - Dispute window in seconds (0 = default 1 hour, min 5min, max 24hr)
|
|
60
|
+
* @param abandonmentGrace - Abandonment grace in seconds (0 = default 2 days, min 1hr, max 30 days)
|
|
61
|
+
* @param criteriaHash - keccak256 hash of success criteria JSON (enables AI dispute resolution)
|
|
62
|
+
*/
|
|
63
|
+
fundEscrow(transactionId: string, sellerAddress: string, amount: bigint, deadline: bigint, disputeWindow?: bigint, abandonmentGrace?: bigint, criteriaHash?: `0x${string}`): Promise<string>;
|
|
31
64
|
/**
|
|
32
65
|
* Submit delivery proof on-chain. Called by the seller after completing work.
|
|
33
66
|
*/
|
|
@@ -37,25 +70,25 @@ export declare class EscrowClient {
|
|
|
37
70
|
*/
|
|
38
71
|
acceptDelivery(transactionId: string): Promise<string>;
|
|
39
72
|
/**
|
|
40
|
-
* Finalize release after the
|
|
73
|
+
* Finalize release after the dispute window has passed without a dispute.
|
|
41
74
|
* Can be called by anyone.
|
|
42
75
|
*/
|
|
43
76
|
finalizeRelease(transactionId: string): Promise<string>;
|
|
44
77
|
/**
|
|
45
|
-
* Dispute a delivery within the
|
|
78
|
+
* Dispute a delivery within the dispute window. Called by the buyer.
|
|
46
79
|
*/
|
|
47
80
|
disputeEscrow(transactionId: string): Promise<string>;
|
|
48
81
|
/**
|
|
49
|
-
* Claim funds for an abandoned escrow (deadline +
|
|
82
|
+
* Claim funds for an abandoned escrow (deadline + abandonmentGrace passed with no delivery).
|
|
50
83
|
* Called by the buyer to reclaim funds.
|
|
51
84
|
*/
|
|
52
85
|
claimAbandoned(transactionId: string): Promise<string>;
|
|
53
86
|
/**
|
|
54
|
-
* Read escrow details from the
|
|
87
|
+
* Read escrow details from the V2 contract (view function, no gas needed).
|
|
55
88
|
*/
|
|
56
89
|
getEscrow(transactionId: string): Promise<EscrowDetails | null>;
|
|
57
90
|
/**
|
|
58
|
-
* Check if the
|
|
91
|
+
* Check if the dispute window is currently active for an escrow.
|
|
59
92
|
*/
|
|
60
93
|
isDisputeWindowActive(transactionId: string): Promise<boolean>;
|
|
61
94
|
/**
|
|
@@ -63,12 +96,12 @@ export declare class EscrowClient {
|
|
|
63
96
|
*/
|
|
64
97
|
canFinalize(transactionId: string): Promise<boolean>;
|
|
65
98
|
/**
|
|
66
|
-
* Check if an escrow can be claimed as abandoned (deadline +
|
|
99
|
+
* Check if an escrow can be claimed as abandoned (deadline + abandonmentGrace passed).
|
|
67
100
|
*/
|
|
68
101
|
canClaimAbandoned(transactionId: string): Promise<boolean>;
|
|
69
102
|
}
|
|
70
103
|
/**
|
|
71
|
-
* Read-only client for the
|
|
104
|
+
* Read-only client for the AbbababaScoreV2 on-chain reputation system.
|
|
72
105
|
* No wallet needed — all methods are view functions.
|
|
73
106
|
*/
|
|
74
107
|
export declare class ScoreClient {
|
|
@@ -80,13 +113,36 @@ export declare class ScoreClient {
|
|
|
80
113
|
* Get an agent's trust score (int256 — can be negative).
|
|
81
114
|
*/
|
|
82
115
|
getScore(agentAddress: string): Promise<bigint>;
|
|
83
|
-
/**
|
|
84
|
-
* Check if an agent requires a bond (low trust score).
|
|
85
|
-
*/
|
|
86
|
-
requiresBond(agentAddress: string): Promise<boolean>;
|
|
87
116
|
/**
|
|
88
117
|
* Get full agent stats from the reputation contract.
|
|
118
|
+
* V2: Returns score, jobs, disputes lost, abandoned, and max job value.
|
|
89
119
|
*/
|
|
90
120
|
getAgentStats(agentAddress: string): Promise<AgentStats>;
|
|
121
|
+
/**
|
|
122
|
+
* Get maximum job value an agent can accept based on their score.
|
|
123
|
+
* V2: Score-based limits from $10 (score <10) to unlimited (score 100+).
|
|
124
|
+
* @returns Maximum job value in USDC (6 decimals)
|
|
125
|
+
*/
|
|
126
|
+
getMaxJobValue(agentAddress: string): Promise<bigint>;
|
|
127
|
+
/**
|
|
128
|
+
* Get the Score contract address.
|
|
129
|
+
*/
|
|
130
|
+
getScoreAddress(): Address;
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Client for interacting with the AbbababaResolverV2 contract.
|
|
134
|
+
* Used for submitting AI dispute resolutions (requires RESOLVER_ROLE).
|
|
135
|
+
* V2 simplification: Single submitResolution function (no tier-specific functions).
|
|
136
|
+
*/
|
|
137
|
+
export declare class ResolverClient {
|
|
138
|
+
private kernelClient;
|
|
139
|
+
private chainId;
|
|
140
|
+
private resolverAddress;
|
|
141
|
+
constructor(kernelClient: unknown, chainId?: number);
|
|
142
|
+
/**
|
|
143
|
+
* Submit AI dispute resolution.
|
|
144
|
+
* Requires RESOLVER_ROLE on the resolver contract.
|
|
145
|
+
*/
|
|
146
|
+
submitResolution(transactionId: string, outcome: DisputeOutcome, buyerPercent: number, sellerPercent: number, reasoning: string): Promise<string>;
|
|
91
147
|
}
|
|
92
148
|
//# sourceMappingURL=escrow.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"escrow.d.ts","sourceRoot":"","sources":["../../src/wallet/escrow.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"escrow.d.ts","sourceRoot":"","sources":["../../src/wallet/escrow.ts"],"names":[],"mappings":"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"}
|
package/dist/wallet/escrow.js
CHANGED
|
@@ -1,7 +1,27 @@
|
|
|
1
1
|
import { encodeFunctionData, keccak256, toBytes, createPublicClient, http, } from 'viem';
|
|
2
2
|
import { baseSepolia, base } from 'viem/chains';
|
|
3
|
-
import { ABBABABA_ESCROW_ABI, ABBABABA_SCORE_ABI, ERC20_ABI } from './abi.js';
|
|
4
|
-
import {
|
|
3
|
+
import { ABBABABA_ESCROW_ABI, ABBABABA_SCORE_ABI, ABBABABA_RESOLVER_ABI, ERC20_ABI } from './abi.js';
|
|
4
|
+
import { ESCROW_V2_ADDRESSES, SCORE_V2_ADDRESSES, RESOLVER_V2_ADDRESSES, BASE_SEPOLIA_CHAIN_ID, BASE_MAINNET_CHAIN_ID, getToken, } from './constants.js';
|
|
5
|
+
/** Dispute resolution outcome */
|
|
6
|
+
export var DisputeOutcome;
|
|
7
|
+
(function (DisputeOutcome) {
|
|
8
|
+
DisputeOutcome[DisputeOutcome["None"] = 0] = "None";
|
|
9
|
+
DisputeOutcome[DisputeOutcome["BuyerRefund"] = 1] = "BuyerRefund";
|
|
10
|
+
DisputeOutcome[DisputeOutcome["SellerPaid"] = 2] = "SellerPaid";
|
|
11
|
+
DisputeOutcome[DisputeOutcome["Split"] = 3] = "Split";
|
|
12
|
+
})(DisputeOutcome || (DisputeOutcome = {}));
|
|
13
|
+
/** Escrow status codes */
|
|
14
|
+
export var EscrowStatus;
|
|
15
|
+
(function (EscrowStatus) {
|
|
16
|
+
EscrowStatus[EscrowStatus["None"] = 0] = "None";
|
|
17
|
+
EscrowStatus[EscrowStatus["Funded"] = 1] = "Funded";
|
|
18
|
+
EscrowStatus[EscrowStatus["Delivered"] = 2] = "Delivered";
|
|
19
|
+
EscrowStatus[EscrowStatus["Released"] = 3] = "Released";
|
|
20
|
+
EscrowStatus[EscrowStatus["Refunded"] = 4] = "Refunded";
|
|
21
|
+
EscrowStatus[EscrowStatus["Disputed"] = 5] = "Disputed";
|
|
22
|
+
EscrowStatus[EscrowStatus["Resolved"] = 6] = "Resolved";
|
|
23
|
+
EscrowStatus[EscrowStatus["Abandoned"] = 7] = "Abandoned";
|
|
24
|
+
})(EscrowStatus || (EscrowStatus = {}));
|
|
5
25
|
const CHAINS = {
|
|
6
26
|
[BASE_SEPOLIA_CHAIN_ID]: baseSepolia,
|
|
7
27
|
[BASE_MAINNET_CHAIN_ID]: base,
|
|
@@ -9,9 +29,10 @@ const CHAINS = {
|
|
|
9
29
|
const ZERO_ADDRESS = '0x0000000000000000000000000000000000000000';
|
|
10
30
|
const ZERO_BYTES32 = '0x0000000000000000000000000000000000000000000000000000000000000000';
|
|
11
31
|
/**
|
|
12
|
-
* Client for interacting with the
|
|
13
|
-
* Supports
|
|
14
|
-
*
|
|
32
|
+
* Client for interacting with the AbbababaEscrowV2 smart contract.
|
|
33
|
+
* Supports UUPS upgradeable escrow with 2% platform fee,
|
|
34
|
+
* criteriaHash for AI dispute resolution, configurable dispute windows,
|
|
35
|
+
* and abandonment detection.
|
|
15
36
|
* Uses a ZeroDev Kernel account client for sending UserOperations.
|
|
16
37
|
*/
|
|
17
38
|
export class EscrowClient {
|
|
@@ -35,10 +56,10 @@ export class EscrowClient {
|
|
|
35
56
|
this.tokenAddress = usdc.address;
|
|
36
57
|
this.tokenDecimals = usdc.decimals;
|
|
37
58
|
}
|
|
38
|
-
const
|
|
39
|
-
if (!
|
|
40
|
-
throw new Error(`No
|
|
41
|
-
this.escrowAddress =
|
|
59
|
+
const v2 = ESCROW_V2_ADDRESSES[chainId];
|
|
60
|
+
if (!v2)
|
|
61
|
+
throw new Error(`No V2 escrow contract for chain ${chainId}`);
|
|
62
|
+
this.escrowAddress = v2;
|
|
42
63
|
}
|
|
43
64
|
/**
|
|
44
65
|
* Convert a platform transaction ID (CUID string) to a bytes32 escrow ID.
|
|
@@ -49,16 +70,13 @@ export class EscrowClient {
|
|
|
49
70
|
}
|
|
50
71
|
/**
|
|
51
72
|
* Approve the escrow contract to spend the settlement token on behalf of the smart account.
|
|
52
|
-
* Must be called before fundEscrow.
|
|
73
|
+
* Must be called before fundEscrow. Approves amount + 2% fee (calculatePlatformFee).
|
|
53
74
|
*/
|
|
54
75
|
async approveToken(amount) {
|
|
55
|
-
// Buyer fee is 1% (100 bps). Approve the total: amount + 1% fee
|
|
56
|
-
const buyerFee = (amount * 100n) / 10000n;
|
|
57
|
-
const totalApproval = amount + buyerFee;
|
|
58
76
|
const data = encodeFunctionData({
|
|
59
77
|
abi: ERC20_ABI,
|
|
60
78
|
functionName: 'approve',
|
|
61
|
-
args: [this.escrowAddress,
|
|
79
|
+
args: [this.escrowAddress, amount],
|
|
62
80
|
});
|
|
63
81
|
const txHash = await this.kernelClient.sendTransaction({
|
|
64
82
|
to: this.tokenAddress,
|
|
@@ -67,15 +85,31 @@ export class EscrowClient {
|
|
|
67
85
|
return txHash;
|
|
68
86
|
}
|
|
69
87
|
/**
|
|
70
|
-
*
|
|
71
|
-
* The
|
|
88
|
+
* Generate a criteriaHash from success criteria JSON.
|
|
89
|
+
* The criteriaHash is stored on-chain to enable Tier 1 algorithmic resolution.
|
|
72
90
|
*/
|
|
73
|
-
|
|
91
|
+
static toCriteriaHash(criteria) {
|
|
92
|
+
const json = typeof criteria === 'string' ? criteria : JSON.stringify(criteria);
|
|
93
|
+
return keccak256(toBytes(json));
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Fund an escrow. Calls V2 createEscrow with agent-negotiable parameters.
|
|
97
|
+
* The contract will safeTransferFrom the token (amount + 2% platform fee) from the caller.
|
|
98
|
+
*
|
|
99
|
+
* @param transactionId - Platform transaction ID (CUID)
|
|
100
|
+
* @param sellerAddress - Seller's wallet address
|
|
101
|
+
* @param amount - Amount in smallest token units (e.g., USDC with 6 decimals)
|
|
102
|
+
* @param deadline - Unix timestamp for delivery deadline
|
|
103
|
+
* @param disputeWindow - Dispute window in seconds (0 = default 1 hour, min 5min, max 24hr)
|
|
104
|
+
* @param abandonmentGrace - Abandonment grace in seconds (0 = default 2 days, min 1hr, max 30 days)
|
|
105
|
+
* @param criteriaHash - keccak256 hash of success criteria JSON (enables AI dispute resolution)
|
|
106
|
+
*/
|
|
107
|
+
async fundEscrow(transactionId, sellerAddress, amount, deadline, disputeWindow = 0n, abandonmentGrace = 0n, criteriaHash = '0x0000000000000000000000000000000000000000000000000000000000000000') {
|
|
74
108
|
const escrowId = EscrowClient.toEscrowId(transactionId);
|
|
75
109
|
const data = encodeFunctionData({
|
|
76
110
|
abi: ABBABABA_ESCROW_ABI,
|
|
77
111
|
functionName: 'createEscrow',
|
|
78
|
-
args: [escrowId, sellerAddress, amount, this.tokenAddress, deadline],
|
|
112
|
+
args: [escrowId, sellerAddress, amount, this.tokenAddress, deadline, disputeWindow, abandonmentGrace, criteriaHash],
|
|
79
113
|
});
|
|
80
114
|
const txHash = await this.kernelClient.sendTransaction({
|
|
81
115
|
to: this.escrowAddress,
|
|
@@ -116,7 +150,7 @@ export class EscrowClient {
|
|
|
116
150
|
return txHash;
|
|
117
151
|
}
|
|
118
152
|
/**
|
|
119
|
-
* Finalize release after the
|
|
153
|
+
* Finalize release after the dispute window has passed without a dispute.
|
|
120
154
|
* Can be called by anyone.
|
|
121
155
|
*/
|
|
122
156
|
async finalizeRelease(transactionId) {
|
|
@@ -133,7 +167,7 @@ export class EscrowClient {
|
|
|
133
167
|
return txHash;
|
|
134
168
|
}
|
|
135
169
|
/**
|
|
136
|
-
* Dispute a delivery within the
|
|
170
|
+
* Dispute a delivery within the dispute window. Called by the buyer.
|
|
137
171
|
*/
|
|
138
172
|
async disputeEscrow(transactionId) {
|
|
139
173
|
const escrowId = EscrowClient.toEscrowId(transactionId);
|
|
@@ -149,7 +183,7 @@ export class EscrowClient {
|
|
|
149
183
|
return txHash;
|
|
150
184
|
}
|
|
151
185
|
/**
|
|
152
|
-
* Claim funds for an abandoned escrow (deadline +
|
|
186
|
+
* Claim funds for an abandoned escrow (deadline + abandonmentGrace passed with no delivery).
|
|
153
187
|
* Called by the buyer to reclaim funds.
|
|
154
188
|
*/
|
|
155
189
|
async claimAbandoned(transactionId) {
|
|
@@ -166,7 +200,7 @@ export class EscrowClient {
|
|
|
166
200
|
return txHash;
|
|
167
201
|
}
|
|
168
202
|
/**
|
|
169
|
-
* Read escrow details from the
|
|
203
|
+
* Read escrow details from the V2 contract (view function, no gas needed).
|
|
170
204
|
*/
|
|
171
205
|
async getEscrow(transactionId) {
|
|
172
206
|
const escrowId = EscrowClient.toEscrowId(transactionId);
|
|
@@ -181,7 +215,7 @@ export class EscrowClient {
|
|
|
181
215
|
functionName: 'getEscrow',
|
|
182
216
|
args: [escrowId],
|
|
183
217
|
});
|
|
184
|
-
const [token, buyer, seller,
|
|
218
|
+
const [token, buyer, seller, lockedAmount, platformFee, status, createdAt, deadline, disputeWindow, abandonmentGrace, deliveredAt, proofHash, criteriaHash] = result;
|
|
185
219
|
if (buyer === ZERO_ADDRESS) {
|
|
186
220
|
return null;
|
|
187
221
|
}
|
|
@@ -189,17 +223,20 @@ export class EscrowClient {
|
|
|
189
223
|
token,
|
|
190
224
|
buyer,
|
|
191
225
|
seller,
|
|
192
|
-
|
|
193
|
-
|
|
226
|
+
lockedAmount,
|
|
227
|
+
platformFee,
|
|
194
228
|
status,
|
|
195
229
|
createdAt: Number(createdAt),
|
|
196
230
|
deadline: Number(deadline),
|
|
231
|
+
disputeWindow: Number(disputeWindow),
|
|
232
|
+
abandonmentGrace: Number(abandonmentGrace),
|
|
197
233
|
deliveredAt: Number(deliveredAt),
|
|
198
234
|
proofHash: proofHash === ZERO_BYTES32 ? null : proofHash,
|
|
235
|
+
criteriaHash: criteriaHash === ZERO_BYTES32 ? null : criteriaHash,
|
|
199
236
|
};
|
|
200
237
|
}
|
|
201
238
|
/**
|
|
202
|
-
* Check if the
|
|
239
|
+
* Check if the dispute window is currently active for an escrow.
|
|
203
240
|
*/
|
|
204
241
|
async isDisputeWindowActive(transactionId) {
|
|
205
242
|
const escrowId = EscrowClient.toEscrowId(transactionId);
|
|
@@ -235,7 +272,7 @@ export class EscrowClient {
|
|
|
235
272
|
return result;
|
|
236
273
|
}
|
|
237
274
|
/**
|
|
238
|
-
* Check if an escrow can be claimed as abandoned (deadline +
|
|
275
|
+
* Check if an escrow can be claimed as abandoned (deadline + abandonmentGrace passed).
|
|
239
276
|
*/
|
|
240
277
|
async canClaimAbandoned(transactionId) {
|
|
241
278
|
const escrowId = EscrowClient.toEscrowId(transactionId);
|
|
@@ -254,7 +291,7 @@ export class EscrowClient {
|
|
|
254
291
|
}
|
|
255
292
|
}
|
|
256
293
|
/**
|
|
257
|
-
* Read-only client for the
|
|
294
|
+
* Read-only client for the AbbababaScoreV2 on-chain reputation system.
|
|
258
295
|
* No wallet needed — all methods are view functions.
|
|
259
296
|
*/
|
|
260
297
|
export class ScoreClient {
|
|
@@ -262,7 +299,7 @@ export class ScoreClient {
|
|
|
262
299
|
scoreAddress;
|
|
263
300
|
constructor(chainId = BASE_SEPOLIA_CHAIN_ID) {
|
|
264
301
|
this.chainId = chainId;
|
|
265
|
-
const addr =
|
|
302
|
+
const addr = SCORE_V2_ADDRESSES[chainId];
|
|
266
303
|
if (!addr)
|
|
267
304
|
throw new Error(`No Score contract for chain ${chainId}`);
|
|
268
305
|
this.scoreAddress = addr;
|
|
@@ -288,31 +325,81 @@ export class ScoreClient {
|
|
|
288
325
|
return result;
|
|
289
326
|
}
|
|
290
327
|
/**
|
|
291
|
-
*
|
|
328
|
+
* Get full agent stats from the reputation contract.
|
|
329
|
+
* V2: Returns score, jobs, disputes lost, abandoned, and max job value.
|
|
292
330
|
*/
|
|
293
|
-
async
|
|
331
|
+
async getAgentStats(agentAddress) {
|
|
294
332
|
const publicClient = this.getPublicClient();
|
|
295
|
-
const
|
|
333
|
+
const stats = await publicClient.readContract({
|
|
296
334
|
address: this.scoreAddress,
|
|
297
335
|
abi: ABBABABA_SCORE_ABI,
|
|
298
|
-
functionName: '
|
|
336
|
+
functionName: 'getAgentStats',
|
|
299
337
|
args: [agentAddress],
|
|
300
338
|
});
|
|
301
|
-
|
|
339
|
+
const [score, jobs, lostDisputes, abandoned, maxJobValue] = stats;
|
|
340
|
+
return {
|
|
341
|
+
score,
|
|
342
|
+
totalJobs: jobs,
|
|
343
|
+
disputesLost: lostDisputes,
|
|
344
|
+
jobsAbandoned: abandoned,
|
|
345
|
+
maxJobValue,
|
|
346
|
+
};
|
|
302
347
|
}
|
|
303
348
|
/**
|
|
304
|
-
* Get
|
|
349
|
+
* Get maximum job value an agent can accept based on their score.
|
|
350
|
+
* V2: Score-based limits from $10 (score <10) to unlimited (score 100+).
|
|
351
|
+
* @returns Maximum job value in USDC (6 decimals)
|
|
305
352
|
*/
|
|
306
|
-
async
|
|
353
|
+
async getMaxJobValue(agentAddress) {
|
|
307
354
|
const publicClient = this.getPublicClient();
|
|
308
355
|
const result = await publicClient.readContract({
|
|
309
356
|
address: this.scoreAddress,
|
|
310
357
|
abi: ABBABABA_SCORE_ABI,
|
|
311
|
-
functionName: '
|
|
358
|
+
functionName: 'getMaxJobValue',
|
|
312
359
|
args: [agentAddress],
|
|
313
360
|
});
|
|
314
|
-
|
|
315
|
-
|
|
361
|
+
return result;
|
|
362
|
+
}
|
|
363
|
+
/**
|
|
364
|
+
* Get the Score contract address.
|
|
365
|
+
*/
|
|
366
|
+
getScoreAddress() {
|
|
367
|
+
return this.scoreAddress;
|
|
368
|
+
}
|
|
369
|
+
}
|
|
370
|
+
/**
|
|
371
|
+
* Client for interacting with the AbbababaResolverV2 contract.
|
|
372
|
+
* Used for submitting AI dispute resolutions (requires RESOLVER_ROLE).
|
|
373
|
+
* V2 simplification: Single submitResolution function (no tier-specific functions).
|
|
374
|
+
*/
|
|
375
|
+
export class ResolverClient {
|
|
376
|
+
kernelClient;
|
|
377
|
+
chainId;
|
|
378
|
+
resolverAddress;
|
|
379
|
+
constructor(kernelClient, chainId = BASE_SEPOLIA_CHAIN_ID) {
|
|
380
|
+
this.kernelClient = kernelClient;
|
|
381
|
+
this.chainId = chainId;
|
|
382
|
+
const addr = RESOLVER_V2_ADDRESSES[chainId];
|
|
383
|
+
if (!addr)
|
|
384
|
+
throw new Error(`No Resolver contract for chain ${chainId}`);
|
|
385
|
+
this.resolverAddress = addr;
|
|
386
|
+
}
|
|
387
|
+
/**
|
|
388
|
+
* Submit AI dispute resolution.
|
|
389
|
+
* Requires RESOLVER_ROLE on the resolver contract.
|
|
390
|
+
*/
|
|
391
|
+
async submitResolution(transactionId, outcome, buyerPercent, sellerPercent, reasoning) {
|
|
392
|
+
const escrowId = EscrowClient.toEscrowId(transactionId);
|
|
393
|
+
const data = encodeFunctionData({
|
|
394
|
+
abi: ABBABABA_RESOLVER_ABI,
|
|
395
|
+
functionName: 'submitResolution',
|
|
396
|
+
args: [escrowId, outcome, BigInt(buyerPercent), BigInt(sellerPercent), reasoning],
|
|
397
|
+
});
|
|
398
|
+
const txHash = await this.kernelClient.sendTransaction({
|
|
399
|
+
to: this.resolverAddress,
|
|
400
|
+
data,
|
|
401
|
+
});
|
|
402
|
+
return txHash;
|
|
316
403
|
}
|
|
317
404
|
}
|
|
318
405
|
//# sourceMappingURL=escrow.js.map
|