@varun-ai07/covenant-mcp 2.0.2 → 2.0.4
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/dist/cli.js +1 -1
- package/dist/cli.js.map +1 -1
- package/dist/config.d.ts +55 -55
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +1 -1
- package/dist/config.js.map +1 -1
- package/dist/sdk/chunk-3R2WXEXL.mjs +828 -0
- package/dist/sdk/chunk-6ORMNSPN.mjs +842 -0
- package/dist/sdk/chunk-FH2MCRWQ.mjs +8732 -0
- package/dist/sdk/chunk-Y3YIH5K3.mjs +816 -0
- package/dist/sdk/config.d.ts +121 -0
- package/dist/sdk/config.d.ts.map +1 -0
- package/dist/sdk/config.js +196 -0
- package/dist/sdk/config.js.map +1 -0
- package/dist/sdk/contracts/AgentCollective.json +467 -0
- package/dist/sdk/contracts/AgentRegistry.d.ts +144 -0
- package/dist/sdk/contracts/AgentRegistry.d.ts.map +1 -0
- package/dist/sdk/contracts/AgentRegistry.js +92 -0
- package/dist/sdk/contracts/AgentRegistry.js.map +1 -0
- package/dist/sdk/contracts/COVENANTRouter.json +206 -0
- package/dist/sdk/contracts/CovenantArbitration.json +546 -0
- package/dist/sdk/contracts/CovenantAttestation.json +476 -0
- package/dist/sdk/contracts/CovenantEscrow.d.ts +70 -0
- package/dist/sdk/contracts/CovenantEscrow.d.ts.map +1 -0
- package/dist/sdk/contracts/CovenantEscrow.js +3 -0
- package/dist/sdk/contracts/CovenantEscrow.js.map +1 -0
- package/dist/sdk/contracts/CovenantEscrow.json +783 -0
- package/dist/sdk/contracts/CovenantGovernance.json +729 -0
- package/dist/sdk/contracts/CovenantIdentity.d.ts +70 -0
- package/dist/sdk/contracts/CovenantIdentity.d.ts.map +1 -0
- package/dist/sdk/contracts/CovenantIdentity.js +3 -0
- package/dist/sdk/contracts/CovenantIdentity.js.map +1 -0
- package/dist/sdk/contracts/CovenantIdentity.json +800 -0
- package/dist/sdk/contracts/CovenantSettlement.json +609 -0
- package/dist/sdk/contracts/DisputeResolution.d.ts +122 -0
- package/dist/sdk/contracts/DisputeResolution.d.ts.map +1 -0
- package/dist/sdk/contracts/DisputeResolution.js +86 -0
- package/dist/sdk/contracts/DisputeResolution.js.map +1 -0
- package/dist/sdk/contracts/GrantProgram.json +373 -0
- package/dist/sdk/contracts/InsurancePool.d.ts +209 -0
- package/dist/sdk/contracts/InsurancePool.d.ts.map +1 -0
- package/dist/sdk/contracts/InsurancePool.js +153 -0
- package/dist/sdk/contracts/InsurancePool.js.map +1 -0
- package/dist/sdk/contracts/InsurancePool.json +456 -0
- package/dist/sdk/contracts/MultiTokenEscrow.json +435 -0
- package/dist/sdk/contracts/OpenTaskMarket.d.ts +190 -0
- package/dist/sdk/contracts/OpenTaskMarket.d.ts.map +1 -0
- package/dist/sdk/contracts/OpenTaskMarket.js +117 -0
- package/dist/sdk/contracts/OpenTaskMarket.js.map +1 -0
- package/dist/sdk/contracts/ParallelTaskBatch.json +511 -0
- package/dist/sdk/contracts/ReceiptVerifierV2.d.ts +168 -0
- package/dist/sdk/contracts/ReceiptVerifierV2.d.ts.map +1 -0
- package/dist/sdk/contracts/ReceiptVerifierV2.js +109 -0
- package/dist/sdk/contracts/ReceiptVerifierV2.js.map +1 -0
- package/dist/sdk/contracts/RevisionManager.json +489 -0
- package/dist/sdk/contracts/TaskEscrow.d.ts +222 -0
- package/dist/sdk/contracts/TaskEscrow.d.ts.map +1 -0
- package/dist/sdk/contracts/TaskEscrow.js +144 -0
- package/dist/sdk/contracts/TaskEscrow.js.map +1 -0
- package/dist/sdk/contracts/TrainingMarketplace.json +357 -0
- package/dist/sdk/index.d.mts +385 -0
- package/dist/sdk/index.d.ts +35 -0
- package/dist/sdk/index.d.ts.map +1 -0
- package/dist/sdk/index.js +284 -0
- package/dist/sdk/index.js.map +1 -0
- package/dist/sdk/index.mjs +32 -0
- package/dist/sdk/types.d.ts +110 -0
- package/dist/sdk/types.d.ts.map +1 -0
- package/dist/sdk/types.js +17 -0
- package/dist/sdk/types.js.map +1 -0
- package/dist/sdk/v2.d.mts +100 -0
- package/dist/sdk/v2.d.ts +100 -0
- package/dist/sdk/v2.d.ts.map +1 -0
- package/dist/sdk/v2.js +2615 -0
- package/dist/sdk/v2.js.map +1 -0
- package/dist/sdk/v2.mjs +571 -0
- package/dist/sdk/v5-extensions.d.ts +133 -0
- package/dist/sdk/v5-extensions.d.ts.map +1 -0
- package/dist/sdk/v5-extensions.js +993 -0
- package/dist/sdk/v5-extensions.js.map +1 -0
- package/dist/sdk.d.ts +30 -0
- package/dist/sdk.d.ts.map +1 -0
- package/dist/sdk.js +180 -0
- package/dist/sdk.js.map +1 -0
- package/dist/server.js +1 -1
- package/dist/shared-types.d.ts +101 -1
- package/dist/shared-types.d.ts.map +1 -1
- package/dist/tools/corven-attest.d.ts.map +1 -1
- package/dist/tools/corven-attest.js +6 -5
- package/dist/tools/corven-attest.js.map +1 -1
- package/dist/tools/corven-batch.d.ts.map +1 -1
- package/dist/tools/corven-batch.js +5 -4
- package/dist/tools/corven-batch.js.map +1 -1
- package/dist/tools/corven-bounty.d.ts.map +1 -1
- package/dist/tools/corven-bounty.js +8 -24
- package/dist/tools/corven-bounty.js.map +1 -1
- package/dist/tools/corven-collective.d.ts.map +1 -1
- package/dist/tools/corven-collective.js +2 -7
- package/dist/tools/corven-collective.js.map +1 -1
- package/dist/tools/corven-govern.d.ts.map +1 -1
- package/dist/tools/corven-govern.js +6 -5
- package/dist/tools/corven-govern.js.map +1 -1
- package/dist/tools/corven-grants.js +2 -2
- package/dist/tools/corven-grants.js.map +1 -1
- package/dist/tools/corven-insurance.d.ts.map +1 -1
- package/dist/tools/corven-insurance.js +11 -12
- package/dist/tools/corven-insurance.js.map +1 -1
- package/dist/tools/corven-match.d.ts.map +1 -1
- package/dist/tools/corven-match.js +5 -4
- package/dist/tools/corven-match.js.map +1 -1
- package/dist/tools/corven-multi.d.ts.map +1 -1
- package/dist/tools/corven-multi.js +4 -31
- package/dist/tools/corven-multi.js.map +1 -1
- package/dist/tools/corven-reputation.d.ts.map +1 -1
- package/dist/tools/corven-reputation.js +7 -6
- package/dist/tools/corven-reputation.js.map +1 -1
- package/dist/tools/corven-revision.d.ts.map +1 -1
- package/dist/tools/corven-revision.js +13 -3
- package/dist/tools/corven-revision.js.map +1 -1
- package/dist/tools/corven-stats.d.ts.map +1 -1
- package/dist/tools/corven-stats.js +16 -16
- package/dist/tools/corven-stats.js.map +1 -1
- package/dist/tools/corven-stream.d.ts.map +1 -1
- package/dist/tools/corven-stream.js +1 -2
- package/dist/tools/corven-stream.js.map +1 -1
- package/dist/tools/corven-training.js +5 -6
- package/dist/tools/corven-training.js.map +1 -1
- package/dist/tools/disputes.d.ts.map +1 -1
- package/dist/tools/disputes.js +13 -11
- package/dist/tools/disputes.js.map +1 -1
- package/package.json +3 -4
|
@@ -0,0 +1,284 @@
|
|
|
1
|
+
import { getContractAddresses, CHAIN_CONFIGS } from "./config.js";
|
|
2
|
+
import { CovenantIdentityABI } from "./contracts/CovenantIdentity.js";
|
|
3
|
+
import { CovenantEscrowABI } from "./contracts/CovenantEscrow.js";
|
|
4
|
+
export * from "./types.js";
|
|
5
|
+
export * from "./config.js";
|
|
6
|
+
export { CovenantSDKV5 } from "./v5-extensions.js";
|
|
7
|
+
const ZERO_ADDR = "0x0000000000000000000000000000000000000000";
|
|
8
|
+
export class CovenantSDK {
|
|
9
|
+
publicClient;
|
|
10
|
+
walletClient;
|
|
11
|
+
addresses;
|
|
12
|
+
chain;
|
|
13
|
+
account;
|
|
14
|
+
constructor(config) {
|
|
15
|
+
this.publicClient = config.publicClient;
|
|
16
|
+
this.walletClient = config.walletClient;
|
|
17
|
+
this.account = config.walletClient?.account;
|
|
18
|
+
this.addresses = getContractAddresses(config.chainId, config.contractAddresses);
|
|
19
|
+
this.chain = CHAIN_CONFIGS[config.chainId]?.chain ?? {
|
|
20
|
+
id: config.chainId,
|
|
21
|
+
name: `Chain ${config.chainId}`,
|
|
22
|
+
nativeCurrency: { name: "ETH", symbol: "ETH", decimals: 18 },
|
|
23
|
+
rpcUrls: { default: { http: [] } },
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
// =========================================================================
|
|
27
|
+
// Agent Methods (V5 — CovenantIdentity)
|
|
28
|
+
// =========================================================================
|
|
29
|
+
async getAgent(address) {
|
|
30
|
+
const result = await this.publicClient.readContract({
|
|
31
|
+
address: this.addresses.CovenantIdentity,
|
|
32
|
+
abi: CovenantIdentityABI,
|
|
33
|
+
functionName: "getAgent",
|
|
34
|
+
args: [address],
|
|
35
|
+
});
|
|
36
|
+
return this.parseAgentData(address, result);
|
|
37
|
+
}
|
|
38
|
+
async getAgentCount() {
|
|
39
|
+
return await this.publicClient.readContract({
|
|
40
|
+
address: this.addresses.CovenantIdentity,
|
|
41
|
+
abi: CovenantIdentityABI,
|
|
42
|
+
functionName: "totalAgents",
|
|
43
|
+
args: [],
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
async isRegistered(address) {
|
|
47
|
+
return await this.publicClient.readContract({
|
|
48
|
+
address: this.addresses.CovenantIdentity,
|
|
49
|
+
abi: CovenantIdentityABI,
|
|
50
|
+
functionName: "isRegistered",
|
|
51
|
+
args: [address],
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
async findAgents(capability, minReputation, limit = 20) {
|
|
55
|
+
const count = await this.getAgentCount();
|
|
56
|
+
const results = [];
|
|
57
|
+
const capHash = BigInt("0x" + Array.from(new TextEncoder().encode(capability))
|
|
58
|
+
.map(b => b.toString(16).padStart(2, "0"))
|
|
59
|
+
.join("")).toString();
|
|
60
|
+
for (let i = 0n; i < count && results.length < limit; i++) {
|
|
61
|
+
try {
|
|
62
|
+
const agentAddr = await this.publicClient.readContract({
|
|
63
|
+
address: this.addresses.CovenantIdentity,
|
|
64
|
+
abi: CovenantIdentityABI,
|
|
65
|
+
functionName: "getAllAgents",
|
|
66
|
+
args: [i, 1n],
|
|
67
|
+
});
|
|
68
|
+
if (agentAddr === ZERO_ADDR)
|
|
69
|
+
continue;
|
|
70
|
+
const hasCap = await this.publicClient.readContract({
|
|
71
|
+
address: this.addresses.CovenantIdentity,
|
|
72
|
+
abi: CovenantIdentityABI,
|
|
73
|
+
functionName: "hasCapability",
|
|
74
|
+
args: [agentAddr, `0x${capHash.padStart(64, "0")}`],
|
|
75
|
+
});
|
|
76
|
+
if (!hasCap)
|
|
77
|
+
continue;
|
|
78
|
+
if (minReputation !== undefined) {
|
|
79
|
+
const agent = await this.getAgent(agentAddr);
|
|
80
|
+
if (agent.reputation < BigInt(minReputation))
|
|
81
|
+
continue;
|
|
82
|
+
}
|
|
83
|
+
results.push(agentAddr);
|
|
84
|
+
}
|
|
85
|
+
catch {
|
|
86
|
+
continue;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
return results;
|
|
90
|
+
}
|
|
91
|
+
async getAllAgents(offset = 0, limit = 50) {
|
|
92
|
+
const count = await this.getAgentCount();
|
|
93
|
+
const results = [];
|
|
94
|
+
for (let i = BigInt(offset); i < count && results.length < limit; i++) {
|
|
95
|
+
try {
|
|
96
|
+
const addr = await this.publicClient.readContract({
|
|
97
|
+
address: this.addresses.CovenantIdentity,
|
|
98
|
+
abi: CovenantIdentityABI,
|
|
99
|
+
functionName: "getAllAgents",
|
|
100
|
+
args: [i, 1n],
|
|
101
|
+
});
|
|
102
|
+
if (addr !== ZERO_ADDR)
|
|
103
|
+
results.push(addr);
|
|
104
|
+
}
|
|
105
|
+
catch {
|
|
106
|
+
continue;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
return results;
|
|
110
|
+
}
|
|
111
|
+
async registerAgent(stake, metadataRoot) {
|
|
112
|
+
this.requireWallet();
|
|
113
|
+
return await this.walletClient.writeContract({
|
|
114
|
+
address: this.addresses.CovenantIdentity,
|
|
115
|
+
abi: CovenantIdentityABI,
|
|
116
|
+
functionName: "register",
|
|
117
|
+
args: [stake, metadataRoot],
|
|
118
|
+
value: stake,
|
|
119
|
+
chain: this.chain,
|
|
120
|
+
account: this.account,
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
// =========================================================================
|
|
124
|
+
// Task Methods (V5 — CovenantEscrow)
|
|
125
|
+
// =========================================================================
|
|
126
|
+
async getTask(taskId) {
|
|
127
|
+
const result = await this.publicClient.readContract({
|
|
128
|
+
address: this.addresses.CovenantEscrow,
|
|
129
|
+
abi: CovenantEscrowABI,
|
|
130
|
+
functionName: "getTask",
|
|
131
|
+
args: [taskId],
|
|
132
|
+
});
|
|
133
|
+
return this.parseTaskData(taskId, result);
|
|
134
|
+
}
|
|
135
|
+
async getTaskCount() {
|
|
136
|
+
return await this.publicClient.readContract({
|
|
137
|
+
address: this.addresses.CovenantEscrow,
|
|
138
|
+
abi: CovenantEscrowABI,
|
|
139
|
+
functionName: "taskCount",
|
|
140
|
+
args: [],
|
|
141
|
+
});
|
|
142
|
+
}
|
|
143
|
+
async createTask(worker, amount, deadline, metaHash) {
|
|
144
|
+
this.requireWallet();
|
|
145
|
+
return await this.walletClient.writeContract({
|
|
146
|
+
address: this.addresses.CovenantEscrow,
|
|
147
|
+
abi: CovenantEscrowABI,
|
|
148
|
+
functionName: "createTask",
|
|
149
|
+
args: [worker, amount, deadline, metaHash],
|
|
150
|
+
value: amount,
|
|
151
|
+
chain: this.chain,
|
|
152
|
+
account: this.account,
|
|
153
|
+
});
|
|
154
|
+
}
|
|
155
|
+
async submitWork(taskId, deliverableHash) {
|
|
156
|
+
this.requireWallet();
|
|
157
|
+
return await this.walletClient.writeContract({
|
|
158
|
+
address: this.addresses.CovenantEscrow,
|
|
159
|
+
abi: CovenantEscrowABI,
|
|
160
|
+
functionName: "submitWork",
|
|
161
|
+
args: [taskId, deliverableHash],
|
|
162
|
+
chain: this.chain,
|
|
163
|
+
account: this.account,
|
|
164
|
+
});
|
|
165
|
+
}
|
|
166
|
+
async completeTask(taskId, clientSignature) {
|
|
167
|
+
this.requireWallet();
|
|
168
|
+
return await this.walletClient.writeContract({
|
|
169
|
+
address: this.addresses.CovenantEscrow,
|
|
170
|
+
abi: CovenantEscrowABI,
|
|
171
|
+
functionName: "completeTask",
|
|
172
|
+
args: [taskId, clientSignature],
|
|
173
|
+
chain: this.chain,
|
|
174
|
+
account: this.account,
|
|
175
|
+
});
|
|
176
|
+
}
|
|
177
|
+
async disputeTask(taskId) {
|
|
178
|
+
this.requireWallet();
|
|
179
|
+
return await this.walletClient.writeContract({
|
|
180
|
+
address: this.addresses.CovenantEscrow,
|
|
181
|
+
abi: CovenantEscrowABI,
|
|
182
|
+
functionName: "disputeTask",
|
|
183
|
+
args: [taskId],
|
|
184
|
+
chain: this.chain,
|
|
185
|
+
account: this.account,
|
|
186
|
+
});
|
|
187
|
+
}
|
|
188
|
+
async cancelTask(taskId) {
|
|
189
|
+
this.requireWallet();
|
|
190
|
+
return await this.walletClient.writeContract({
|
|
191
|
+
address: this.addresses.CovenantEscrow,
|
|
192
|
+
abi: CovenantEscrowABI,
|
|
193
|
+
functionName: "cancelTask",
|
|
194
|
+
args: [taskId],
|
|
195
|
+
chain: this.chain,
|
|
196
|
+
account: this.account,
|
|
197
|
+
});
|
|
198
|
+
}
|
|
199
|
+
async fundTask(taskId, amount) {
|
|
200
|
+
this.requireWallet();
|
|
201
|
+
return await this.walletClient.writeContract({
|
|
202
|
+
address: this.addresses.CovenantEscrow,
|
|
203
|
+
abi: CovenantEscrowABI,
|
|
204
|
+
functionName: "fundTask",
|
|
205
|
+
args: [taskId],
|
|
206
|
+
value: amount,
|
|
207
|
+
chain: this.chain,
|
|
208
|
+
account: this.account,
|
|
209
|
+
});
|
|
210
|
+
}
|
|
211
|
+
async failTask(taskId, reason) {
|
|
212
|
+
this.requireWallet();
|
|
213
|
+
return await this.walletClient.writeContract({
|
|
214
|
+
address: this.addresses.CovenantEscrow,
|
|
215
|
+
abi: CovenantEscrowABI,
|
|
216
|
+
functionName: "failTask",
|
|
217
|
+
args: [taskId, reason],
|
|
218
|
+
chain: this.chain,
|
|
219
|
+
account: this.account,
|
|
220
|
+
});
|
|
221
|
+
}
|
|
222
|
+
// =========================================================================
|
|
223
|
+
// Utility Methods
|
|
224
|
+
// =========================================================================
|
|
225
|
+
async waitForTransaction(hash) {
|
|
226
|
+
return await this.publicClient.waitForTransactionReceipt({ hash });
|
|
227
|
+
}
|
|
228
|
+
getAddresses() {
|
|
229
|
+
return { ...this.addresses };
|
|
230
|
+
}
|
|
231
|
+
// =========================================================================
|
|
232
|
+
// Private Helpers
|
|
233
|
+
// =========================================================================
|
|
234
|
+
requireWallet() {
|
|
235
|
+
if (!this.walletClient) {
|
|
236
|
+
throw new Error("Wallet client required for write operations. Pass walletClient in config.");
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
parseAgentData(address, result) {
|
|
240
|
+
return {
|
|
241
|
+
did: address,
|
|
242
|
+
name: "",
|
|
243
|
+
capabilities: [],
|
|
244
|
+
reputation: BigInt(result[2]),
|
|
245
|
+
stakedAmount: result[1],
|
|
246
|
+
tasksCompleted: 0n,
|
|
247
|
+
tasksFailed: 0n,
|
|
248
|
+
totalValueTransferred: 0n,
|
|
249
|
+
isActive: result[5],
|
|
250
|
+
registeredAt: BigInt(result[3]),
|
|
251
|
+
walletAddress: result[0],
|
|
252
|
+
};
|
|
253
|
+
}
|
|
254
|
+
parseTaskData(taskId, result) {
|
|
255
|
+
return {
|
|
256
|
+
taskId,
|
|
257
|
+
client: result[0],
|
|
258
|
+
worker: result[1],
|
|
259
|
+
payment: result[2],
|
|
260
|
+
deadline: BigInt(result[3]),
|
|
261
|
+
descriptionHash: result[6],
|
|
262
|
+
deliverableHash: "",
|
|
263
|
+
status: this.mapV5Status(result[4]),
|
|
264
|
+
createdAt: 0n,
|
|
265
|
+
completedAt: 0n,
|
|
266
|
+
protocolFee: 0n,
|
|
267
|
+
totalValue: result[2],
|
|
268
|
+
};
|
|
269
|
+
}
|
|
270
|
+
mapV5Status(status) {
|
|
271
|
+
const map = {
|
|
272
|
+
0: "Open",
|
|
273
|
+
1: "Funded",
|
|
274
|
+
2: "InProgress",
|
|
275
|
+
3: "Submitted",
|
|
276
|
+
4: "Completed",
|
|
277
|
+
5: "Disputed",
|
|
278
|
+
6: "Failed",
|
|
279
|
+
7: "Cancelled",
|
|
280
|
+
};
|
|
281
|
+
return map[status] ?? "Open";
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/sdk/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import {
|
|
2
|
+
BASE_SEPOLIA_ADDRESSES,
|
|
3
|
+
CHAINS,
|
|
4
|
+
CHAIN_CONFIGS,
|
|
5
|
+
CovenantSDK,
|
|
6
|
+
CovenantSDKV5,
|
|
7
|
+
DEFAULT_ADDRESSES,
|
|
8
|
+
PRIORITY_LEVEL,
|
|
9
|
+
RECEIPT_TYPE,
|
|
10
|
+
ReceiptType,
|
|
11
|
+
TASK_STATUS,
|
|
12
|
+
V2_ADDRESSES,
|
|
13
|
+
getContractAddresses,
|
|
14
|
+
getV2ContractAddresses,
|
|
15
|
+
isDeployed
|
|
16
|
+
} from "./chunk-FH2MCRWQ.mjs";
|
|
17
|
+
export {
|
|
18
|
+
BASE_SEPOLIA_ADDRESSES,
|
|
19
|
+
CHAINS,
|
|
20
|
+
CHAIN_CONFIGS,
|
|
21
|
+
CovenantSDK,
|
|
22
|
+
CovenantSDKV5,
|
|
23
|
+
DEFAULT_ADDRESSES,
|
|
24
|
+
PRIORITY_LEVEL,
|
|
25
|
+
RECEIPT_TYPE,
|
|
26
|
+
ReceiptType,
|
|
27
|
+
TASK_STATUS,
|
|
28
|
+
V2_ADDRESSES,
|
|
29
|
+
getContractAddresses,
|
|
30
|
+
getV2ContractAddresses,
|
|
31
|
+
isDeployed
|
|
32
|
+
};
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
import type { Address, PublicClient, WalletClient } from "viem";
|
|
2
|
+
export type { ContractAddresses, AgentData, TaskData, ReceiptData, BidData, CollectiveData, TaskStatus, } from "../shared-types.js";
|
|
3
|
+
export { TASK_STATUS, PRIORITY_LEVEL, RECEIPT_TYPE, BASE_SEPOLIA_ADDRESSES, } from "../shared-types.js";
|
|
4
|
+
/**
|
|
5
|
+
* ERC-8004 Receipt type enum (mirrors on-chain ReceiptVerifier.ReceiptType)
|
|
6
|
+
*/
|
|
7
|
+
export declare enum ReceiptType {
|
|
8
|
+
TaskCompleted = 0,
|
|
9
|
+
AgentVerified = 1,
|
|
10
|
+
DisputeResolved = 2,
|
|
11
|
+
InsuranceClaimed = 3,
|
|
12
|
+
MilestoneReached = 4,
|
|
13
|
+
ReputationUpdated = 5
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* V2 Receipt data from ReceiptVerifier v2
|
|
17
|
+
*/
|
|
18
|
+
export interface ReceiptDataV2 {
|
|
19
|
+
receiptId: `0x${string}`;
|
|
20
|
+
issuer: Address;
|
|
21
|
+
counterparty: Address;
|
|
22
|
+
receiptType: number;
|
|
23
|
+
dataHash: `0x${string}`;
|
|
24
|
+
timestamp: bigint;
|
|
25
|
+
isValid: boolean;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Insurance claim data
|
|
29
|
+
*/
|
|
30
|
+
export interface InsuranceClaimData {
|
|
31
|
+
claimant: Address;
|
|
32
|
+
taskId: bigint;
|
|
33
|
+
amount: bigint;
|
|
34
|
+
paid: boolean;
|
|
35
|
+
timestamp: bigint;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Insurance pool member info
|
|
39
|
+
*/
|
|
40
|
+
export interface MemberInfo {
|
|
41
|
+
active: boolean;
|
|
42
|
+
contributed: bigint;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Dispute data from DisputeResolution
|
|
46
|
+
*/
|
|
47
|
+
export interface DisputeData {
|
|
48
|
+
taskId: bigint;
|
|
49
|
+
filedBy: Address;
|
|
50
|
+
bondAmount: bigint;
|
|
51
|
+
votingEndsAt: bigint;
|
|
52
|
+
resolved: boolean;
|
|
53
|
+
workerWins: boolean;
|
|
54
|
+
workerShare: bigint;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* V2 contract addresses
|
|
58
|
+
*/
|
|
59
|
+
export interface V2ContractAddresses {
|
|
60
|
+
AgentRegistry: Address;
|
|
61
|
+
TaskEscrow: Address;
|
|
62
|
+
ReceiptVerifier: Address;
|
|
63
|
+
InsurancePool: Address;
|
|
64
|
+
DisputeResolution: Address;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* SDK configuration
|
|
68
|
+
*/
|
|
69
|
+
export interface CovenantConfig {
|
|
70
|
+
/** Chain ID (84532 for Base Sepolia, 8453 for Base Mainnet) */
|
|
71
|
+
chainId: number;
|
|
72
|
+
/** Viem public client for reading */
|
|
73
|
+
publicClient: PublicClient;
|
|
74
|
+
/** Optional wallet client for writing */
|
|
75
|
+
walletClient?: WalletClient;
|
|
76
|
+
/** Custom contract addresses (optional - uses defaults if not provided) */
|
|
77
|
+
contractAddresses?: PartialContractAddresses;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* V2 SDK configuration — extends base config with version selection
|
|
81
|
+
*/
|
|
82
|
+
export interface CovenantConfigV2 extends CovenantConfig {
|
|
83
|
+
/** SDK version — "v2" enables v2 contract methods */
|
|
84
|
+
version: "v2";
|
|
85
|
+
/** Custom v2 contract addresses (optional - uses defaults if not provided) */
|
|
86
|
+
v2ContractAddresses?: Partial<V2ContractAddresses>;
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Partial contract addresses - only specify what you want to override
|
|
90
|
+
*/
|
|
91
|
+
export interface PartialContractAddresses {
|
|
92
|
+
AgentRegistry?: Address;
|
|
93
|
+
TaskEscrow?: Address;
|
|
94
|
+
ReceiptVerifier?: Address;
|
|
95
|
+
OpenTaskMarket?: Address;
|
|
96
|
+
ParallelTaskBatch?: Address;
|
|
97
|
+
AgentCollective?: Address;
|
|
98
|
+
AgentInsurance?: Address;
|
|
99
|
+
DisputeArbitration?: Address;
|
|
100
|
+
Groth16VerifierCapability?: Address;
|
|
101
|
+
CapabilityVerifier?: Address;
|
|
102
|
+
Groth16VerifierReputation?: Address;
|
|
103
|
+
ReputationVerifier?: Address;
|
|
104
|
+
COVENANTRouter?: Address;
|
|
105
|
+
LitProtocolIntegration?: Address;
|
|
106
|
+
AgentWallet?: Address;
|
|
107
|
+
}
|
|
108
|
+
export type { Address, PublicClient, WalletClient } from "viem";
|
|
109
|
+
export type { Hash, Log, TransactionReceipt } from "viem";
|
|
110
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/sdk/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export { TASK_STATUS, PRIORITY_LEVEL, RECEIPT_TYPE, BASE_SEPOLIA_ADDRESSES, } from "../shared-types.js";
|
|
2
|
+
// ============================================================================
|
|
3
|
+
// V2 Types
|
|
4
|
+
// ============================================================================
|
|
5
|
+
/**
|
|
6
|
+
* ERC-8004 Receipt type enum (mirrors on-chain ReceiptVerifier.ReceiptType)
|
|
7
|
+
*/
|
|
8
|
+
export var ReceiptType;
|
|
9
|
+
(function (ReceiptType) {
|
|
10
|
+
ReceiptType[ReceiptType["TaskCompleted"] = 0] = "TaskCompleted";
|
|
11
|
+
ReceiptType[ReceiptType["AgentVerified"] = 1] = "AgentVerified";
|
|
12
|
+
ReceiptType[ReceiptType["DisputeResolved"] = 2] = "DisputeResolved";
|
|
13
|
+
ReceiptType[ReceiptType["InsuranceClaimed"] = 3] = "InsuranceClaimed";
|
|
14
|
+
ReceiptType[ReceiptType["MilestoneReached"] = 4] = "MilestoneReached";
|
|
15
|
+
ReceiptType[ReceiptType["ReputationUpdated"] = 5] = "ReputationUpdated";
|
|
16
|
+
})(ReceiptType || (ReceiptType = {}));
|
|
17
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/sdk/types.ts"],"names":[],"mappings":"AAgBA,OAAO,EACL,WAAW,EACX,cAAc,EACd,YAAY,EACZ,sBAAsB,GACvB,MAAM,oBAAoB,CAAC;AAE5B,+EAA+E;AAC/E,WAAW;AACX,+EAA+E;AAE/E;;GAEG;AACH,MAAM,CAAN,IAAY,WAOX;AAPD,WAAY,WAAW;IACrB,+DAAiB,CAAA;IACjB,+DAAiB,CAAA;IACjB,mEAAmB,CAAA;IACnB,qEAAoB,CAAA;IACpB,qEAAoB,CAAA;IACpB,uEAAqB,CAAA;AACvB,CAAC,EAPW,WAAW,KAAX,WAAW,QAOtB"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import { Hash, Address } from 'viem';
|
|
2
|
+
import { CovenantSDK, CovenantConfigV2, InsuranceClaimData, MemberInfo, DisputeData, ReceiptType, ReceiptDataV2, V2ContractAddresses } from './index.mjs';
|
|
3
|
+
import '@covenant/shared-types';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* COVENANT SDK V2 — extends CovenantSDK with v2 contract methods.
|
|
7
|
+
*
|
|
8
|
+
* Adds support for InsurancePool, DisputeResolution, and ReceiptVerifier v2.
|
|
9
|
+
* All v1 methods remain available through inheritance.
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* ```typescript
|
|
13
|
+
* import { CovenantSDKV2 } from "@covenant/sdk/v2";
|
|
14
|
+
*
|
|
15
|
+
* const sdk = new CovenantSDKV2({
|
|
16
|
+
* version: "v2",
|
|
17
|
+
* chainId: 84532,
|
|
18
|
+
* publicClient: client,
|
|
19
|
+
* walletClient: wallet,
|
|
20
|
+
* });
|
|
21
|
+
*
|
|
22
|
+
* // V2 methods
|
|
23
|
+
* await sdk.joinInsurancePool(parseEther("0.01"));
|
|
24
|
+
* const receipt = await sdk.createReceiptV2(issuer, counterparty, 0, dataHash);
|
|
25
|
+
* ```
|
|
26
|
+
*/
|
|
27
|
+
declare class CovenantSDKV2 extends CovenantSDK {
|
|
28
|
+
private v2Addresses;
|
|
29
|
+
constructor(config: CovenantConfigV2);
|
|
30
|
+
/**
|
|
31
|
+
* Join the insurance pool by contributing ETH
|
|
32
|
+
*/
|
|
33
|
+
joinInsurancePool(contribution: bigint): Promise<Hash>;
|
|
34
|
+
/**
|
|
35
|
+
* File an insurance claim for a failed task
|
|
36
|
+
*/
|
|
37
|
+
fileClaim(taskId: bigint, amount: bigint): Promise<Hash>;
|
|
38
|
+
/**
|
|
39
|
+
* Get insurance claim details
|
|
40
|
+
*/
|
|
41
|
+
getClaim(claimId: bigint): Promise<InsuranceClaimData>;
|
|
42
|
+
/**
|
|
43
|
+
* Get the current balance of the insurance pool
|
|
44
|
+
*/
|
|
45
|
+
getPoolBalance(): Promise<bigint>;
|
|
46
|
+
/**
|
|
47
|
+
* Get insurance membership info for an agent
|
|
48
|
+
*/
|
|
49
|
+
getMemberInfo(member: Address): Promise<MemberInfo>;
|
|
50
|
+
/**
|
|
51
|
+
* File a formal dispute on a task (requires bond in ETH)
|
|
52
|
+
*/
|
|
53
|
+
fileDispute(taskId: bigint, bond: bigint): Promise<Hash>;
|
|
54
|
+
/**
|
|
55
|
+
* Resolve a dispute (arbiter-only). Sets winner and worker share.
|
|
56
|
+
*/
|
|
57
|
+
resolveDispute(disputeId: bigint, workerWins: boolean, workerShare: bigint): Promise<Hash>;
|
|
58
|
+
/**
|
|
59
|
+
* Get dispute details
|
|
60
|
+
*/
|
|
61
|
+
getDispute(disputeId: bigint): Promise<DisputeData>;
|
|
62
|
+
/**
|
|
63
|
+
* Create an ERC-8004 attestation receipt with enum type
|
|
64
|
+
*/
|
|
65
|
+
createReceiptV2(issuer: Address, counterparty: Address, receiptType: ReceiptType, dataHash: `0x${string}`): Promise<Hash>;
|
|
66
|
+
/**
|
|
67
|
+
* Verify a single receipt by its bytes32 ID
|
|
68
|
+
*/
|
|
69
|
+
verifyReceipt(receiptId: `0x${string}`): Promise<boolean>;
|
|
70
|
+
/**
|
|
71
|
+
* Batch verify multiple receipts by their bytes32 IDs
|
|
72
|
+
*/
|
|
73
|
+
batchVerifyReceipts(receiptIds: `0x${string}`[]): Promise<boolean[]>;
|
|
74
|
+
/**
|
|
75
|
+
* Get full receipt details by bytes32 ID
|
|
76
|
+
*/
|
|
77
|
+
getReceiptV2(receiptId: `0x${string}`): Promise<ReceiptDataV2>;
|
|
78
|
+
/**
|
|
79
|
+
* Get v2 contract addresses being used
|
|
80
|
+
*/
|
|
81
|
+
getV2Addresses(): V2ContractAddresses;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Convert a string (IPFS CID, capability string, etc.) to a bytes32 hash.
|
|
85
|
+
* Uses keccak256 for deterministic hashing.
|
|
86
|
+
*
|
|
87
|
+
* @param input - The string to convert
|
|
88
|
+
* @returns The bytes32 hex string (0x-prefixed, 66 chars)
|
|
89
|
+
*
|
|
90
|
+
* @example
|
|
91
|
+
* ```typescript
|
|
92
|
+
* import { toBytes32 } from "@covenant/sdk/v2";
|
|
93
|
+
*
|
|
94
|
+
* const hash = toBytes32("QmYwAPJzv5CZsnN625s3XfREM3zN1"); // IPFS CID
|
|
95
|
+
* const cap = toBytes32("data-analysis"); // capability string
|
|
96
|
+
* ```
|
|
97
|
+
*/
|
|
98
|
+
declare function toBytes32(input: string): `0x${string}`;
|
|
99
|
+
|
|
100
|
+
export { CovenantConfigV2, CovenantSDKV2, DisputeData, InsuranceClaimData, MemberInfo, ReceiptDataV2, ReceiptType, V2ContractAddresses, toBytes32 };
|
package/dist/sdk/v2.d.ts
ADDED
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import { Hash, Address } from 'viem';
|
|
2
|
+
import { CovenantSDK, CovenantConfigV2, InsuranceClaimData, MemberInfo, DisputeData, ReceiptType, ReceiptDataV2, V2ContractAddresses } from './index.js';
|
|
3
|
+
import '@covenant/shared-types';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* COVENANT SDK V2 — extends CovenantSDK with v2 contract methods.
|
|
7
|
+
*
|
|
8
|
+
* Adds support for InsurancePool, DisputeResolution, and ReceiptVerifier v2.
|
|
9
|
+
* All v1 methods remain available through inheritance.
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* ```typescript
|
|
13
|
+
* import { CovenantSDKV2 } from "@covenant/sdk/v2";
|
|
14
|
+
*
|
|
15
|
+
* const sdk = new CovenantSDKV2({
|
|
16
|
+
* version: "v2",
|
|
17
|
+
* chainId: 84532,
|
|
18
|
+
* publicClient: client,
|
|
19
|
+
* walletClient: wallet,
|
|
20
|
+
* });
|
|
21
|
+
*
|
|
22
|
+
* // V2 methods
|
|
23
|
+
* await sdk.joinInsurancePool(parseEther("0.01"));
|
|
24
|
+
* const receipt = await sdk.createReceiptV2(issuer, counterparty, 0, dataHash);
|
|
25
|
+
* ```
|
|
26
|
+
*/
|
|
27
|
+
declare class CovenantSDKV2 extends CovenantSDK {
|
|
28
|
+
private v2Addresses;
|
|
29
|
+
constructor(config: CovenantConfigV2);
|
|
30
|
+
/**
|
|
31
|
+
* Join the insurance pool by contributing ETH
|
|
32
|
+
*/
|
|
33
|
+
joinInsurancePool(contribution: bigint): Promise<Hash>;
|
|
34
|
+
/**
|
|
35
|
+
* File an insurance claim for a failed task
|
|
36
|
+
*/
|
|
37
|
+
fileClaim(taskId: bigint, amount: bigint): Promise<Hash>;
|
|
38
|
+
/**
|
|
39
|
+
* Get insurance claim details
|
|
40
|
+
*/
|
|
41
|
+
getClaim(claimId: bigint): Promise<InsuranceClaimData>;
|
|
42
|
+
/**
|
|
43
|
+
* Get the current balance of the insurance pool
|
|
44
|
+
*/
|
|
45
|
+
getPoolBalance(): Promise<bigint>;
|
|
46
|
+
/**
|
|
47
|
+
* Get insurance membership info for an agent
|
|
48
|
+
*/
|
|
49
|
+
getMemberInfo(member: Address): Promise<MemberInfo>;
|
|
50
|
+
/**
|
|
51
|
+
* File a formal dispute on a task (requires bond in ETH)
|
|
52
|
+
*/
|
|
53
|
+
fileDispute(taskId: bigint, bond: bigint): Promise<Hash>;
|
|
54
|
+
/**
|
|
55
|
+
* Resolve a dispute (arbiter-only). Sets winner and worker share.
|
|
56
|
+
*/
|
|
57
|
+
resolveDispute(disputeId: bigint, workerWins: boolean, workerShare: bigint): Promise<Hash>;
|
|
58
|
+
/**
|
|
59
|
+
* Get dispute details
|
|
60
|
+
*/
|
|
61
|
+
getDispute(disputeId: bigint): Promise<DisputeData>;
|
|
62
|
+
/**
|
|
63
|
+
* Create an ERC-8004 attestation receipt with enum type
|
|
64
|
+
*/
|
|
65
|
+
createReceiptV2(issuer: Address, counterparty: Address, receiptType: ReceiptType, dataHash: `0x${string}`): Promise<Hash>;
|
|
66
|
+
/**
|
|
67
|
+
* Verify a single receipt by its bytes32 ID
|
|
68
|
+
*/
|
|
69
|
+
verifyReceipt(receiptId: `0x${string}`): Promise<boolean>;
|
|
70
|
+
/**
|
|
71
|
+
* Batch verify multiple receipts by their bytes32 IDs
|
|
72
|
+
*/
|
|
73
|
+
batchVerifyReceipts(receiptIds: `0x${string}`[]): Promise<boolean[]>;
|
|
74
|
+
/**
|
|
75
|
+
* Get full receipt details by bytes32 ID
|
|
76
|
+
*/
|
|
77
|
+
getReceiptV2(receiptId: `0x${string}`): Promise<ReceiptDataV2>;
|
|
78
|
+
/**
|
|
79
|
+
* Get v2 contract addresses being used
|
|
80
|
+
*/
|
|
81
|
+
getV2Addresses(): V2ContractAddresses;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Convert a string (IPFS CID, capability string, etc.) to a bytes32 hash.
|
|
85
|
+
* Uses keccak256 for deterministic hashing.
|
|
86
|
+
*
|
|
87
|
+
* @param input - The string to convert
|
|
88
|
+
* @returns The bytes32 hex string (0x-prefixed, 66 chars)
|
|
89
|
+
*
|
|
90
|
+
* @example
|
|
91
|
+
* ```typescript
|
|
92
|
+
* import { toBytes32 } from "@covenant/sdk/v2";
|
|
93
|
+
*
|
|
94
|
+
* const hash = toBytes32("QmYwAPJzv5CZsnN625s3XfREM3zN1"); // IPFS CID
|
|
95
|
+
* const cap = toBytes32("data-analysis"); // capability string
|
|
96
|
+
* ```
|
|
97
|
+
*/
|
|
98
|
+
declare function toBytes32(input: string): `0x${string}`;
|
|
99
|
+
|
|
100
|
+
export { CovenantConfigV2, CovenantSDKV2, DisputeData, InsuranceClaimData, MemberInfo, ReceiptDataV2, ReceiptType, V2ContractAddresses, toBytes32 };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"v2.d.ts","sourceRoot":"","sources":["../src/v2.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,KAAK,OAAO,EAAE,KAAK,IAAI,EAAE,MAAM,MAAM,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAKzC,OAAO,KAAK,EACV,gBAAgB,EAChB,mBAAmB,EACnB,WAAW,EACX,aAAa,EACb,kBAAkB,EAClB,UAAU,EACV,WAAW,EACZ,MAAM,YAAY,CAAC;AAEpB;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,qBAAa,aAAc,SAAQ,WAAW;IAC5C,OAAO,CAAC,WAAW,CAAsB;gBAE7B,MAAM,EAAE,gBAAgB;IAYpC;;OAEG;IACG,iBAAiB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAa5D;;OAEG;IACG,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAa9D;;OAEG;IACG,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAiB5D;;OAEG;IACG,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC;IAQvC;;OAEG;IACG,aAAa,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC;IAkBzD;;OAEG;IACG,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAc9D;;OAEG;IACG,cAAc,CAClB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,OAAO,EACnB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,IAAI,CAAC;IAahB;;OAEG;IACG,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAuBzD;;OAEG;IACG,eAAe,CACnB,MAAM,EAAE,OAAO,EACf,YAAY,EAAE,OAAO,EACrB,WAAW,EAAE,WAAW,EACxB,QAAQ,EAAE,KAAK,MAAM,EAAE,GACtB,OAAO,CAAC,IAAI,CAAC;IAahB;;OAEG;IACG,aAAa,CAAC,SAAS,EAAE,KAAK,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC;IAS/D;;OAEG;IACG,mBAAmB,CAAC,UAAU,EAAE,KAAK,MAAM,EAAE,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAS1E;;OAEG;IACG,YAAY,CAAC,SAAS,EAAE,KAAK,MAAM,EAAE,GAAG,OAAO,CAAC,aAAa,CAAC;IAuBpE;;OAEG;IACH,cAAc,IAAI,mBAAmB;CAGtC;AAMD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,MAAM,EAAE,CAKtD;AAGD,YAAY,EACV,gBAAgB,EAChB,mBAAmB,EACnB,aAAa,EACb,kBAAkB,EAClB,UAAU,EACV,WAAW,GACZ,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC"}
|