@paylobster/mcp-server 1.1.0 → 1.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.
@@ -0,0 +1,169 @@
1
+ import { z } from 'zod';
2
+ import { ContractClient } from '../utils/contracts';
3
+ export declare const treasuryCreateSchema: z.ZodObject<{
4
+ name: z.ZodString;
5
+ }, "strip", z.ZodTypeAny, {
6
+ name: string;
7
+ }, {
8
+ name: string;
9
+ }>;
10
+ export declare const treasuryInfoSchema: z.ZodObject<{
11
+ address: z.ZodString;
12
+ }, "strip", z.ZodTypeAny, {
13
+ address: string;
14
+ }, {
15
+ address: string;
16
+ }>;
17
+ export declare const treasuryBalancesSchema: z.ZodObject<{
18
+ treasuryAddress: z.ZodString;
19
+ }, "strip", z.ZodTypeAny, {
20
+ treasuryAddress: string;
21
+ }, {
22
+ treasuryAddress: string;
23
+ }>;
24
+ export declare const treasuryDepositSchema: z.ZodObject<{
25
+ treasuryAddress: z.ZodString;
26
+ token: z.ZodString;
27
+ amount: z.ZodString;
28
+ }, "strip", z.ZodTypeAny, {
29
+ token: string;
30
+ amount: string;
31
+ treasuryAddress: string;
32
+ }, {
33
+ token: string;
34
+ amount: string;
35
+ treasuryAddress: string;
36
+ }>;
37
+ export declare const treasuryWithdrawSchema: z.ZodObject<{
38
+ treasuryAddress: z.ZodString;
39
+ token: z.ZodString;
40
+ to: z.ZodString;
41
+ amount: z.ZodString;
42
+ reason: z.ZodString;
43
+ }, "strip", z.ZodTypeAny, {
44
+ reason: string;
45
+ to: string;
46
+ token: string;
47
+ amount: string;
48
+ treasuryAddress: string;
49
+ }, {
50
+ reason: string;
51
+ to: string;
52
+ token: string;
53
+ amount: string;
54
+ treasuryAddress: string;
55
+ }>;
56
+ export declare const treasuryMembersSchema: z.ZodObject<{
57
+ treasuryAddress: z.ZodString;
58
+ }, "strip", z.ZodTypeAny, {
59
+ treasuryAddress: string;
60
+ }, {
61
+ treasuryAddress: string;
62
+ }>;
63
+ export declare const treasuryGrantRoleSchema: z.ZodObject<{
64
+ treasuryAddress: z.ZodString;
65
+ account: z.ZodString;
66
+ role: z.ZodUnion<[z.ZodString, z.ZodNumber]>;
67
+ }, "strip", z.ZodTypeAny, {
68
+ account: string;
69
+ treasuryAddress: string;
70
+ role: string | number;
71
+ }, {
72
+ account: string;
73
+ treasuryAddress: string;
74
+ role: string | number;
75
+ }>;
76
+ export declare const treasurySetBudgetSchema: z.ZodObject<{
77
+ treasuryAddress: z.ZodString;
78
+ opsBps: z.ZodNumber;
79
+ growthBps: z.ZodNumber;
80
+ reservesBps: z.ZodNumber;
81
+ yieldBps: z.ZodNumber;
82
+ }, "strip", z.ZodTypeAny, {
83
+ treasuryAddress: string;
84
+ opsBps: number;
85
+ growthBps: number;
86
+ reservesBps: number;
87
+ yieldBps: number;
88
+ }, {
89
+ treasuryAddress: string;
90
+ opsBps: number;
91
+ growthBps: number;
92
+ reservesBps: number;
93
+ yieldBps: number;
94
+ }>;
95
+ export declare const treasurySetLimitSchema: z.ZodObject<{
96
+ treasuryAddress: z.ZodString;
97
+ operator: z.ZodString;
98
+ maxPerTx: z.ZodString;
99
+ maxPerDay: z.ZodString;
100
+ }, "strip", z.ZodTypeAny, {
101
+ treasuryAddress: string;
102
+ operator: string;
103
+ maxPerTx: string;
104
+ maxPerDay: string;
105
+ }, {
106
+ treasuryAddress: string;
107
+ operator: string;
108
+ maxPerTx: string;
109
+ maxPerDay: string;
110
+ }>;
111
+ export declare const treasuryLookupSchema: z.ZodObject<{
112
+ ownerAddress: z.ZodString;
113
+ }, "strip", z.ZodTypeAny, {
114
+ ownerAddress: string;
115
+ }, {
116
+ ownerAddress: string;
117
+ }>;
118
+ interface TokenBalance {
119
+ token: string;
120
+ balance: string;
121
+ }
122
+ interface TreasurySummary {
123
+ name: string;
124
+ owner: string;
125
+ ethBalance: string;
126
+ tokenCount: number;
127
+ memberCount: number;
128
+ totalDeposited: string;
129
+ totalWithdrawn: string;
130
+ reserveLockBps: number;
131
+ createdAt: number;
132
+ }
133
+ interface TreasuryMember {
134
+ address: string;
135
+ role: string;
136
+ }
137
+ export declare function treasuryCreate(params: z.infer<typeof treasuryCreateSchema>, client: ContractClient): Promise<{
138
+ treasuryAddress: string;
139
+ transaction: any;
140
+ }>;
141
+ export declare function treasuryInfo(params: z.infer<typeof treasuryInfoSchema>, client: ContractClient): Promise<TreasurySummary & {
142
+ balances: TokenBalance[];
143
+ }>;
144
+ export declare function treasuryBalances(params: z.infer<typeof treasuryBalancesSchema>, client: ContractClient): Promise<{
145
+ balances: TokenBalance[];
146
+ }>;
147
+ export declare function treasuryDeposit(params: z.infer<typeof treasuryDepositSchema>, client: ContractClient): Promise<{
148
+ transaction: any;
149
+ }>;
150
+ export declare function treasuryWithdraw(params: z.infer<typeof treasuryWithdrawSchema>, client: ContractClient): Promise<{
151
+ transaction: any;
152
+ }>;
153
+ export declare function treasuryMembers(params: z.infer<typeof treasuryMembersSchema>, client: ContractClient): Promise<{
154
+ members: TreasuryMember[];
155
+ }>;
156
+ export declare function treasuryGrantRole(params: z.infer<typeof treasuryGrantRoleSchema>, client: ContractClient): Promise<{
157
+ transaction: any;
158
+ }>;
159
+ export declare function treasurySetBudget(params: z.infer<typeof treasurySetBudgetSchema>, client: ContractClient): Promise<{
160
+ transaction: any;
161
+ }>;
162
+ export declare function treasurySetLimit(params: z.infer<typeof treasurySetLimitSchema>, client: ContractClient): Promise<{
163
+ transaction: any;
164
+ }>;
165
+ export declare function treasuryLookup(params: z.infer<typeof treasuryLookupSchema>, client: ContractClient): Promise<{
166
+ treasuryAddress: string | null;
167
+ }>;
168
+ export {};
169
+ //# sourceMappingURL=treasury.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"treasury.d.ts","sourceRoot":"","sources":["../../src/tools/treasury.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,475 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.treasuryLookupSchema = exports.treasurySetLimitSchema = exports.treasurySetBudgetSchema = exports.treasuryGrantRoleSchema = exports.treasuryMembersSchema = exports.treasuryWithdrawSchema = exports.treasuryDepositSchema = exports.treasuryBalancesSchema = exports.treasuryInfoSchema = exports.treasuryCreateSchema = void 0;
4
+ exports.treasuryCreate = treasuryCreate;
5
+ exports.treasuryInfo = treasuryInfo;
6
+ exports.treasuryBalances = treasuryBalances;
7
+ exports.treasuryDeposit = treasuryDeposit;
8
+ exports.treasuryWithdraw = treasuryWithdraw;
9
+ exports.treasuryMembers = treasuryMembers;
10
+ exports.treasuryGrantRole = treasuryGrantRole;
11
+ exports.treasurySetBudget = treasurySetBudget;
12
+ exports.treasurySetLimit = treasurySetLimit;
13
+ exports.treasuryLookup = treasuryLookup;
14
+ const zod_1 = require("zod");
15
+ // Treasury Factory address on Base
16
+ const TREASURY_FACTORY_ADDRESS = '0x171a685f28546a0ebb13059184db1f808b915066';
17
+ // Schema for treasury_create
18
+ exports.treasuryCreateSchema = zod_1.z.object({
19
+ name: zod_1.z.string().describe('Treasury name'),
20
+ });
21
+ // Schema for treasury_info
22
+ exports.treasuryInfoSchema = zod_1.z.object({
23
+ address: zod_1.z.string().describe('Treasury address'),
24
+ });
25
+ // Schema for treasury_balances
26
+ exports.treasuryBalancesSchema = zod_1.z.object({
27
+ treasuryAddress: zod_1.z.string().describe('Treasury address'),
28
+ });
29
+ // Schema for treasury_deposit
30
+ exports.treasuryDepositSchema = zod_1.z.object({
31
+ treasuryAddress: zod_1.z.string().describe('Treasury address'),
32
+ token: zod_1.z.string().describe('Token address'),
33
+ amount: zod_1.z.string().describe('Amount to deposit (in token units)'),
34
+ });
35
+ // Schema for treasury_withdraw
36
+ exports.treasuryWithdrawSchema = zod_1.z.object({
37
+ treasuryAddress: zod_1.z.string().describe('Treasury address'),
38
+ token: zod_1.z.string().describe('Token address'),
39
+ to: zod_1.z.string().describe('Recipient address'),
40
+ amount: zod_1.z.string().describe('Amount to withdraw (in token units)'),
41
+ reason: zod_1.z.string().describe('Withdrawal reason'),
42
+ });
43
+ // Schema for treasury_members
44
+ exports.treasuryMembersSchema = zod_1.z.object({
45
+ treasuryAddress: zod_1.z.string().describe('Treasury address'),
46
+ });
47
+ // Schema for treasury_grant_role
48
+ exports.treasuryGrantRoleSchema = zod_1.z.object({
49
+ treasuryAddress: zod_1.z.string().describe('Treasury address'),
50
+ account: zod_1.z.string().describe('Account address'),
51
+ role: zod_1.z.union([zod_1.z.string(), zod_1.z.number()]).describe('Role (MANAGER=1, OPERATOR=2, AUDITOR=3)'),
52
+ });
53
+ // Schema for treasury_set_budget
54
+ exports.treasurySetBudgetSchema = zod_1.z.object({
55
+ treasuryAddress: zod_1.z.string().describe('Treasury address'),
56
+ opsBps: zod_1.z.number().describe('Operations budget (basis points, 0-10000)'),
57
+ growthBps: zod_1.z.number().describe('Growth budget (basis points, 0-10000)'),
58
+ reservesBps: zod_1.z.number().describe('Reserves budget (basis points, 0-10000)'),
59
+ yieldBps: zod_1.z.number().describe('Yield budget (basis points, 0-10000)'),
60
+ });
61
+ // Schema for treasury_set_limit
62
+ exports.treasurySetLimitSchema = zod_1.z.object({
63
+ treasuryAddress: zod_1.z.string().describe('Treasury address'),
64
+ operator: zod_1.z.string().describe('Operator address'),
65
+ maxPerTx: zod_1.z.string().describe('Maximum amount per transaction'),
66
+ maxPerDay: zod_1.z.string().describe('Maximum amount per day'),
67
+ });
68
+ // Schema for treasury_lookup
69
+ exports.treasuryLookupSchema = zod_1.z.object({
70
+ ownerAddress: zod_1.z.string().describe('Owner address'),
71
+ });
72
+ // Treasury Factory ABI (minimal for createTreasury and lookup)
73
+ const TREASURY_FACTORY_ABI = [
74
+ {
75
+ inputs: [{ name: '_name', type: 'string', internalType: 'string' }],
76
+ name: 'createTreasury',
77
+ outputs: [{ name: '', type: 'address', internalType: 'address' }],
78
+ stateMutability: 'nonpayable',
79
+ type: 'function',
80
+ },
81
+ {
82
+ inputs: [{ name: '', type: 'address', internalType: 'address' }],
83
+ name: 'treasuries',
84
+ outputs: [{ name: '', type: 'address', internalType: 'address' }],
85
+ stateMutability: 'view',
86
+ type: 'function',
87
+ },
88
+ ];
89
+ // Agent Treasury ABI
90
+ const AGENT_TREASURY_ABI = [
91
+ {
92
+ inputs: [],
93
+ name: 'getSummary',
94
+ outputs: [
95
+ { name: '_name', type: 'string', internalType: 'string' },
96
+ { name: '_owner', type: 'address', internalType: 'address' },
97
+ { name: 'ethBalance', type: 'uint256', internalType: 'uint256' },
98
+ { name: 'tokenCount', type: 'uint256', internalType: 'uint256' },
99
+ { name: 'memberCount', type: 'uint256', internalType: 'uint256' },
100
+ { name: '_totalDeposited', type: 'uint256', internalType: 'uint256' },
101
+ { name: '_totalWithdrawn', type: 'uint256', internalType: 'uint256' },
102
+ { name: '_reserveLockBps', type: 'uint256', internalType: 'uint256' },
103
+ { name: '_createdAt', type: 'uint256', internalType: 'uint256' },
104
+ ],
105
+ stateMutability: 'view',
106
+ type: 'function',
107
+ },
108
+ {
109
+ inputs: [],
110
+ name: 'getBalances',
111
+ outputs: [
112
+ {
113
+ name: '',
114
+ type: 'tuple[]',
115
+ internalType: 'struct AgentTreasury.TokenBalance[]',
116
+ components: [
117
+ { name: 'token', type: 'address', internalType: 'address' },
118
+ { name: 'balance', type: 'uint256', internalType: 'uint256' },
119
+ ],
120
+ },
121
+ ],
122
+ stateMutability: 'view',
123
+ type: 'function',
124
+ },
125
+ {
126
+ inputs: [],
127
+ name: 'getMembers',
128
+ outputs: [
129
+ { name: '', type: 'address[]', internalType: 'address[]' },
130
+ { name: '', type: 'uint8[]', internalType: 'enum AgentTreasury.Role[]' },
131
+ ],
132
+ stateMutability: 'view',
133
+ type: 'function',
134
+ },
135
+ {
136
+ inputs: [
137
+ { name: 'token', type: 'address', internalType: 'address' },
138
+ { name: 'amount', type: 'uint256', internalType: 'uint256' },
139
+ ],
140
+ name: 'deposit',
141
+ outputs: [],
142
+ stateMutability: 'nonpayable',
143
+ type: 'function',
144
+ },
145
+ {
146
+ inputs: [
147
+ { name: 'token', type: 'address', internalType: 'address' },
148
+ { name: 'to', type: 'address', internalType: 'address' },
149
+ { name: 'amount', type: 'uint256', internalType: 'uint256' },
150
+ { name: 'reason', type: 'string', internalType: 'string' },
151
+ ],
152
+ name: 'withdraw',
153
+ outputs: [],
154
+ stateMutability: 'nonpayable',
155
+ type: 'function',
156
+ },
157
+ {
158
+ inputs: [
159
+ { name: 'account', type: 'address', internalType: 'address' },
160
+ { name: 'role', type: 'uint8', internalType: 'enum AgentTreasury.Role' },
161
+ ],
162
+ name: 'grantRole',
163
+ outputs: [],
164
+ stateMutability: 'nonpayable',
165
+ type: 'function',
166
+ },
167
+ {
168
+ inputs: [
169
+ { name: 'operationsBps', type: 'uint256', internalType: 'uint256' },
170
+ { name: 'growthBps', type: 'uint256', internalType: 'uint256' },
171
+ { name: 'reservesBps', type: 'uint256', internalType: 'uint256' },
172
+ { name: 'yieldBps', type: 'uint256', internalType: 'uint256' },
173
+ ],
174
+ name: 'setBudget',
175
+ outputs: [],
176
+ stateMutability: 'nonpayable',
177
+ type: 'function',
178
+ },
179
+ {
180
+ inputs: [
181
+ { name: 'operator', type: 'address', internalType: 'address' },
182
+ { name: 'maxPerTx', type: 'uint256', internalType: 'uint256' },
183
+ { name: 'maxPerDay', type: 'uint256', internalType: 'uint256' },
184
+ ],
185
+ name: 'setSpendLimit',
186
+ outputs: [],
187
+ stateMutability: 'nonpayable',
188
+ type: 'function',
189
+ },
190
+ ];
191
+ // Role enum mapping
192
+ const ROLE_MAP = {
193
+ NONE: 0,
194
+ MANAGER: 1,
195
+ OPERATOR: 2,
196
+ AUDITOR: 3,
197
+ };
198
+ const ROLE_NAMES = {
199
+ 0: 'NONE',
200
+ 1: 'MANAGER',
201
+ 2: 'OPERATOR',
202
+ 3: 'AUDITOR',
203
+ };
204
+ async function treasuryCreate(params, client) {
205
+ try {
206
+ const walletClient = client.getWalletClient();
207
+ const account = client.getAccount();
208
+ // Simulate to get the transaction hash and result
209
+ const { request } = await client.getPublicClient().simulateContract({
210
+ address: TREASURY_FACTORY_ADDRESS,
211
+ abi: TREASURY_FACTORY_ABI,
212
+ functionName: 'createTreasury',
213
+ args: [params.name],
214
+ account: account.address,
215
+ });
216
+ const hash = await walletClient.writeContract(request);
217
+ return {
218
+ treasuryAddress: 'pending', // Will be available in transaction receipt
219
+ transaction: {
220
+ hash,
221
+ status: 'pending',
222
+ },
223
+ };
224
+ }
225
+ catch (error) {
226
+ throw new Error(`Failed to create treasury: ${error.message}`);
227
+ }
228
+ }
229
+ async function treasuryInfo(params, client) {
230
+ try {
231
+ const publicClient = client.getPublicClient();
232
+ const treasuryAddress = params.address;
233
+ // Get summary
234
+ const summary = await publicClient.readContract({
235
+ address: treasuryAddress,
236
+ abi: AGENT_TREASURY_ABI,
237
+ functionName: 'getSummary',
238
+ });
239
+ // Get balances
240
+ const balances = await publicClient.readContract({
241
+ address: treasuryAddress,
242
+ abi: AGENT_TREASURY_ABI,
243
+ functionName: 'getBalances',
244
+ });
245
+ // Get members
246
+ const [addresses, roles] = await publicClient.readContract({
247
+ address: treasuryAddress,
248
+ abi: AGENT_TREASURY_ABI,
249
+ functionName: 'getMembers',
250
+ });
251
+ return {
252
+ name: summary[0],
253
+ owner: summary[1],
254
+ ethBalance: summary[2].toString(),
255
+ tokenCount: Number(summary[3]),
256
+ memberCount: Number(summary[4]),
257
+ totalDeposited: summary[5].toString(),
258
+ totalWithdrawn: summary[6].toString(),
259
+ reserveLockBps: Number(summary[7]),
260
+ createdAt: Number(summary[8]),
261
+ balances: balances.map((b) => ({
262
+ token: b.token,
263
+ balance: b.balance.toString(),
264
+ })),
265
+ };
266
+ }
267
+ catch (error) {
268
+ throw new Error(`Failed to get treasury info: ${error.message}`);
269
+ }
270
+ }
271
+ async function treasuryBalances(params, client) {
272
+ try {
273
+ const publicClient = client.getPublicClient();
274
+ const treasuryAddress = params.treasuryAddress;
275
+ const balances = await publicClient.readContract({
276
+ address: treasuryAddress,
277
+ abi: AGENT_TREASURY_ABI,
278
+ functionName: 'getBalances',
279
+ });
280
+ return {
281
+ balances: balances.map((b) => ({
282
+ token: b.token,
283
+ balance: b.balance.toString(),
284
+ })),
285
+ };
286
+ }
287
+ catch (error) {
288
+ throw new Error(`Failed to get treasury balances: ${error.message}`);
289
+ }
290
+ }
291
+ async function treasuryDeposit(params, client) {
292
+ try {
293
+ const walletClient = client.getWalletClient();
294
+ const account = client.getAccount();
295
+ const { request } = await client.getPublicClient().simulateContract({
296
+ address: params.treasuryAddress,
297
+ abi: AGENT_TREASURY_ABI,
298
+ functionName: 'deposit',
299
+ args: [params.token, BigInt(params.amount)],
300
+ account: account.address,
301
+ });
302
+ const hash = await walletClient.writeContract(request);
303
+ return {
304
+ transaction: {
305
+ hash,
306
+ status: 'pending',
307
+ },
308
+ };
309
+ }
310
+ catch (error) {
311
+ throw new Error(`Failed to deposit to treasury: ${error.message}`);
312
+ }
313
+ }
314
+ async function treasuryWithdraw(params, client) {
315
+ try {
316
+ const walletClient = client.getWalletClient();
317
+ const account = client.getAccount();
318
+ const { request } = await client.getPublicClient().simulateContract({
319
+ address: params.treasuryAddress,
320
+ abi: AGENT_TREASURY_ABI,
321
+ functionName: 'withdraw',
322
+ args: [
323
+ params.token,
324
+ params.to,
325
+ BigInt(params.amount),
326
+ params.reason,
327
+ ],
328
+ account: account.address,
329
+ });
330
+ const hash = await walletClient.writeContract(request);
331
+ return {
332
+ transaction: {
333
+ hash,
334
+ status: 'pending',
335
+ },
336
+ };
337
+ }
338
+ catch (error) {
339
+ throw new Error(`Failed to withdraw from treasury: ${error.message}`);
340
+ }
341
+ }
342
+ async function treasuryMembers(params, client) {
343
+ try {
344
+ const publicClient = client.getPublicClient();
345
+ const treasuryAddress = params.treasuryAddress;
346
+ const [addresses, roles] = await publicClient.readContract({
347
+ address: treasuryAddress,
348
+ abi: AGENT_TREASURY_ABI,
349
+ functionName: 'getMembers',
350
+ });
351
+ const members = addresses.map((addr, idx) => ({
352
+ address: addr,
353
+ role: ROLE_NAMES[roles[idx]] || 'UNKNOWN',
354
+ }));
355
+ return { members };
356
+ }
357
+ catch (error) {
358
+ throw new Error(`Failed to get treasury members: ${error.message}`);
359
+ }
360
+ }
361
+ async function treasuryGrantRole(params, client) {
362
+ try {
363
+ const walletClient = client.getWalletClient();
364
+ const account = client.getAccount();
365
+ // Convert role to number if it's a string
366
+ let roleNumber;
367
+ if (typeof params.role === 'string') {
368
+ const roleStr = params.role.toUpperCase();
369
+ roleNumber = ROLE_MAP[roleStr] ?? parseInt(params.role);
370
+ if (isNaN(roleNumber) || roleNumber < 0 || roleNumber > 3) {
371
+ throw new Error(`Invalid role: ${params.role}. Use MANAGER (1), OPERATOR (2), or AUDITOR (3)`);
372
+ }
373
+ }
374
+ else {
375
+ roleNumber = params.role;
376
+ }
377
+ const { request } = await client.getPublicClient().simulateContract({
378
+ address: params.treasuryAddress,
379
+ abi: AGENT_TREASURY_ABI,
380
+ functionName: 'grantRole',
381
+ args: [params.account, roleNumber],
382
+ account: account.address,
383
+ });
384
+ const hash = await walletClient.writeContract(request);
385
+ return {
386
+ transaction: {
387
+ hash,
388
+ status: 'pending',
389
+ },
390
+ };
391
+ }
392
+ catch (error) {
393
+ throw new Error(`Failed to grant role: ${error.message}`);
394
+ }
395
+ }
396
+ async function treasurySetBudget(params, client) {
397
+ try {
398
+ const walletClient = client.getWalletClient();
399
+ const account = client.getAccount();
400
+ // Validate that basis points sum to 10000 (100%)
401
+ const total = params.opsBps + params.growthBps + params.reservesBps + params.yieldBps;
402
+ if (total !== 10000) {
403
+ throw new Error(`Budget allocations must sum to 10000 basis points (100%). Current total: ${total}`);
404
+ }
405
+ const { request } = await client.getPublicClient().simulateContract({
406
+ address: params.treasuryAddress,
407
+ abi: AGENT_TREASURY_ABI,
408
+ functionName: 'setBudget',
409
+ args: [
410
+ BigInt(params.opsBps),
411
+ BigInt(params.growthBps),
412
+ BigInt(params.reservesBps),
413
+ BigInt(params.yieldBps),
414
+ ],
415
+ account: account.address,
416
+ });
417
+ const hash = await walletClient.writeContract(request);
418
+ return {
419
+ transaction: {
420
+ hash,
421
+ status: 'pending',
422
+ },
423
+ };
424
+ }
425
+ catch (error) {
426
+ throw new Error(`Failed to set budget: ${error.message}`);
427
+ }
428
+ }
429
+ async function treasurySetLimit(params, client) {
430
+ try {
431
+ const walletClient = client.getWalletClient();
432
+ const account = client.getAccount();
433
+ const { request } = await client.getPublicClient().simulateContract({
434
+ address: params.treasuryAddress,
435
+ abi: AGENT_TREASURY_ABI,
436
+ functionName: 'setSpendLimit',
437
+ args: [
438
+ params.operator,
439
+ BigInt(params.maxPerTx),
440
+ BigInt(params.maxPerDay),
441
+ ],
442
+ account: account.address,
443
+ });
444
+ const hash = await walletClient.writeContract(request);
445
+ return {
446
+ transaction: {
447
+ hash,
448
+ status: 'pending',
449
+ },
450
+ };
451
+ }
452
+ catch (error) {
453
+ throw new Error(`Failed to set spend limit: ${error.message}`);
454
+ }
455
+ }
456
+ async function treasuryLookup(params, client) {
457
+ try {
458
+ const publicClient = client.getPublicClient();
459
+ const treasuryAddress = await publicClient.readContract({
460
+ address: TREASURY_FACTORY_ADDRESS,
461
+ abi: TREASURY_FACTORY_ABI,
462
+ functionName: 'treasuries',
463
+ args: [params.ownerAddress],
464
+ });
465
+ // If address is zero address, no treasury exists
466
+ const isZeroAddress = treasuryAddress === '0x0000000000000000000000000000000000000000';
467
+ return {
468
+ treasuryAddress: isZeroAddress ? null : treasuryAddress,
469
+ };
470
+ }
471
+ catch (error) {
472
+ throw new Error(`Failed to lookup treasury: ${error.message}`);
473
+ }
474
+ }
475
+ //# sourceMappingURL=treasury.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"treasury.js","sourceRoot":"","sources":["../../src/tools/treasury.ts"],"names":[],"mappings":"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"}