@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.
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +360 -1
- package/dist/server.js.map +1 -1
- package/dist/tools/bridge.d.ts +142 -0
- package/dist/tools/bridge.d.ts.map +1 -0
- package/dist/tools/bridge.js +121 -0
- package/dist/tools/bridge.js.map +1 -0
- package/dist/tools/portfolio.d.ts +44 -0
- package/dist/tools/portfolio.d.ts.map +1 -0
- package/dist/tools/portfolio.js +166 -0
- package/dist/tools/portfolio.js.map +1 -0
- package/dist/tools/swap.d.ts +93 -0
- package/dist/tools/swap.d.ts.map +1 -0
- package/dist/tools/swap.js +150 -0
- package/dist/tools/swap.js.map +1 -0
- package/dist/tools/treasury.d.ts +169 -0
- package/dist/tools/treasury.d.ts.map +1 -0
- package/dist/tools/treasury.js +475 -0
- package/dist/tools/treasury.js.map +1 -0
- package/dist/types/index.d.ts +4 -0
- package/dist/types/index.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -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":";;;AAsOA,wCA6BC;AAED,oCA+CC;AAED,4CAuBC;AAED,0CA2BC;AAED,4CAgCC;AAED,0CAuBC;AAED,8CAuCC;AAED,8CAsCC;AAED,4CA+BC;AAED,wCAuBC;AAhjBD,6BAAwB;AAIxB,mCAAmC;AACnC,MAAM,wBAAwB,GAAY,4CAA4C,CAAC;AAEvF,6BAA6B;AAChB,QAAA,oBAAoB,GAAG,OAAC,CAAC,MAAM,CAAC;IAC3C,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,eAAe,CAAC;CAC3C,CAAC,CAAC;AAEH,2BAA2B;AACd,QAAA,kBAAkB,GAAG,OAAC,CAAC,MAAM,CAAC;IACzC,OAAO,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,kBAAkB,CAAC;CACjD,CAAC,CAAC;AAEH,+BAA+B;AAClB,QAAA,sBAAsB,GAAG,OAAC,CAAC,MAAM,CAAC;IAC7C,eAAe,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,kBAAkB,CAAC;CACzD,CAAC,CAAC;AAEH,8BAA8B;AACjB,QAAA,qBAAqB,GAAG,OAAC,CAAC,MAAM,CAAC;IAC5C,eAAe,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,kBAAkB,CAAC;IACxD,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,eAAe,CAAC;IAC3C,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,oCAAoC,CAAC;CAClE,CAAC,CAAC;AAEH,+BAA+B;AAClB,QAAA,sBAAsB,GAAG,OAAC,CAAC,MAAM,CAAC;IAC7C,eAAe,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,kBAAkB,CAAC;IACxD,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,eAAe,CAAC;IAC3C,EAAE,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC;IAC5C,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,qCAAqC,CAAC;IAClE,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC;CACjD,CAAC,CAAC;AAEH,8BAA8B;AACjB,QAAA,qBAAqB,GAAG,OAAC,CAAC,MAAM,CAAC;IAC5C,eAAe,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,kBAAkB,CAAC;CACzD,CAAC,CAAC;AAEH,iCAAiC;AACpB,QAAA,uBAAuB,GAAG,OAAC,CAAC,MAAM,CAAC;IAC9C,eAAe,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,kBAAkB,CAAC;IACxD,OAAO,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC;IAC/C,IAAI,EAAE,OAAC,CAAC,KAAK,CAAC,CAAC,OAAC,CAAC,MAAM,EAAE,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,yCAAyC,CAAC;CAC5F,CAAC,CAAC;AAEH,iCAAiC;AACpB,QAAA,uBAAuB,GAAG,OAAC,CAAC,MAAM,CAAC;IAC9C,eAAe,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,kBAAkB,CAAC;IACxD,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,2CAA2C,CAAC;IACxE,SAAS,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,uCAAuC,CAAC;IACvE,WAAW,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,yCAAyC,CAAC;IAC3E,QAAQ,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,sCAAsC,CAAC;CACtE,CAAC,CAAC;AAEH,gCAAgC;AACnB,QAAA,sBAAsB,GAAG,OAAC,CAAC,MAAM,CAAC;IAC7C,eAAe,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,kBAAkB,CAAC;IACxD,QAAQ,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,kBAAkB,CAAC;IACjD,QAAQ,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,gCAAgC,CAAC;IAC/D,SAAS,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,wBAAwB,CAAC;CACzD,CAAC,CAAC;AAEH,6BAA6B;AAChB,QAAA,oBAAoB,GAAG,OAAC,CAAC,MAAM,CAAC;IAC3C,YAAY,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,eAAe,CAAC;CACnD,CAAC,CAAC;AAEH,+DAA+D;AAC/D,MAAM,oBAAoB,GAAG;IAC3B;QACE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,YAAY,EAAE,QAAQ,EAAE,CAAC;QACnE,IAAI,EAAE,gBAAgB;QACtB,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,YAAY,EAAE,SAAS,EAAE,CAAC;QACjE,eAAe,EAAE,YAAY;QAC7B,IAAI,EAAE,UAAU;KACjB;IACD;QACE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,YAAY,EAAE,SAAS,EAAE,CAAC;QAChE,IAAI,EAAE,YAAY;QAClB,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,YAAY,EAAE,SAAS,EAAE,CAAC;QACjE,eAAe,EAAE,MAAM;QACvB,IAAI,EAAE,UAAU;KACjB;CACO,CAAC;AAEX,qBAAqB;AACrB,MAAM,kBAAkB,GAAG;IACzB;QACE,MAAM,EAAE,EAAE;QACV,IAAI,EAAE,YAAY;QAClB,OAAO,EAAE;YACP,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,YAAY,EAAE,QAAQ,EAAE;YACzD,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,YAAY,EAAE,SAAS,EAAE;YAC5D,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,SAAS,EAAE,YAAY,EAAE,SAAS,EAAE;YAChE,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,SAAS,EAAE,YAAY,EAAE,SAAS,EAAE;YAChE,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,SAAS,EAAE,YAAY,EAAE,SAAS,EAAE;YACjE,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,SAAS,EAAE,YAAY,EAAE,SAAS,EAAE;YACrE,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,SAAS,EAAE,YAAY,EAAE,SAAS,EAAE;YACrE,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,SAAS,EAAE,YAAY,EAAE,SAAS,EAAE;YACrE,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,SAAS,EAAE,YAAY,EAAE,SAAS,EAAE;SACjE;QACD,eAAe,EAAE,MAAM;QACvB,IAAI,EAAE,UAAU;KACjB;IACD;QACE,MAAM,EAAE,EAAE;QACV,IAAI,EAAE,aAAa;QACnB,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,EAAE;gBACR,IAAI,EAAE,SAAS;gBACf,YAAY,EAAE,qCAAqC;gBACnD,UAAU,EAAE;oBACV,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,YAAY,EAAE,SAAS,EAAE;oBAC3D,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,YAAY,EAAE,SAAS,EAAE;iBAC9D;aACF;SACF;QACD,eAAe,EAAE,MAAM;QACvB,IAAI,EAAE,UAAU;KACjB;IACD;QACE,MAAM,EAAE,EAAE;QACV,IAAI,EAAE,YAAY;QAClB,OAAO,EAAE;YACP,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,YAAY,EAAE,WAAW,EAAE;YAC1D,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,YAAY,EAAE,2BAA2B,EAAE;SACzE;QACD,eAAe,EAAE,MAAM;QACvB,IAAI,EAAE,UAAU;KACjB;IACD;QACE,MAAM,EAAE;YACN,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,YAAY,EAAE,SAAS,EAAE;YAC3D,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,YAAY,EAAE,SAAS,EAAE;SAC7D;QACD,IAAI,EAAE,SAAS;QACf,OAAO,EAAE,EAAE;QACX,eAAe,EAAE,YAAY;QAC7B,IAAI,EAAE,UAAU;KACjB;IACD;QACE,MAAM,EAAE;YACN,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,YAAY,EAAE,SAAS,EAAE;YAC3D,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,YAAY,EAAE,SAAS,EAAE;YACxD,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,YAAY,EAAE,SAAS,EAAE;YAC5D,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,YAAY,EAAE,QAAQ,EAAE;SAC3D;QACD,IAAI,EAAE,UAAU;QAChB,OAAO,EAAE,EAAE;QACX,eAAe,EAAE,YAAY;QAC7B,IAAI,EAAE,UAAU;KACjB;IACD;QACE,MAAM,EAAE;YACN,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,YAAY,EAAE,SAAS,EAAE;YAC7D,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,YAAY,EAAE,yBAAyB,EAAE;SACzE;QACD,IAAI,EAAE,WAAW;QACjB,OAAO,EAAE,EAAE;QACX,eAAe,EAAE,YAAY;QAC7B,IAAI,EAAE,UAAU;KACjB;IACD;QACE,MAAM,EAAE;YACN,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,SAAS,EAAE,YAAY,EAAE,SAAS,EAAE;YACnE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,EAAE,YAAY,EAAE,SAAS,EAAE;YAC/D,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,SAAS,EAAE,YAAY,EAAE,SAAS,EAAE;YACjE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,SAAS,EAAE,YAAY,EAAE,SAAS,EAAE;SAC/D;QACD,IAAI,EAAE,WAAW;QACjB,OAAO,EAAE,EAAE;QACX,eAAe,EAAE,YAAY;QAC7B,IAAI,EAAE,UAAU;KACjB;IACD;QACE,MAAM,EAAE;YACN,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,SAAS,EAAE,YAAY,EAAE,SAAS,EAAE;YAC9D,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,SAAS,EAAE,YAAY,EAAE,SAAS,EAAE;YAC9D,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,EAAE,YAAY,EAAE,SAAS,EAAE;SAChE;QACD,IAAI,EAAE,eAAe;QACrB,OAAO,EAAE,EAAE;QACX,eAAe,EAAE,YAAY;QAC7B,IAAI,EAAE,UAAU;KACjB;CACO,CAAC;AAEX,oBAAoB;AACpB,MAAM,QAAQ,GAA2B;IACvC,IAAI,EAAE,CAAC;IACP,OAAO,EAAE,CAAC;IACV,QAAQ,EAAE,CAAC;IACX,OAAO,EAAE,CAAC;CACX,CAAC;AAEF,MAAM,UAAU,GAA2B;IACzC,CAAC,EAAE,MAAM;IACT,CAAC,EAAE,SAAS;IACZ,CAAC,EAAE,UAAU;IACb,CAAC,EAAE,SAAS;CACb,CAAC;AAwBK,KAAK,UAAU,cAAc,CAClC,MAA4C,EAC5C,MAAsB;IAEtB,IAAI,CAAC;QACH,MAAM,YAAY,GAAG,MAAM,CAAC,eAAe,EAAE,CAAC;QAC9C,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC;QAEpC,kDAAkD;QAClD,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,MAAM,CAAC,eAAe,EAAE,CAAC,gBAAgB,CAAC;YAClE,OAAO,EAAE,wBAAwB;YACjC,GAAG,EAAE,oBAAoB;YACzB,YAAY,EAAE,gBAAgB;YAC9B,IAAI,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC;YACnB,OAAO,EAAE,OAAO,CAAC,OAAO;SACzB,CAAC,CAAC;QAEH,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QAEvD,OAAO;YACL,eAAe,EAAE,SAAS,EAAE,2CAA2C;YACvE,WAAW,EAAE;gBACX,IAAI;gBACJ,MAAM,EAAE,SAAS;aAClB;SACF,CAAC;IACJ,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CAAC,8BAA8B,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;IACjE,CAAC;AACH,CAAC;AAEM,KAAK,UAAU,YAAY,CAChC,MAA0C,EAC1C,MAAsB;IAEtB,IAAI,CAAC;QACH,MAAM,YAAY,GAAG,MAAM,CAAC,eAAe,EAAE,CAAC;QAC9C,MAAM,eAAe,GAAG,MAAM,CAAC,OAAkB,CAAC;QAElD,cAAc;QACd,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,YAAY,CAAC;YAC9C,OAAO,EAAE,eAAe;YACxB,GAAG,EAAE,kBAAkB;YACvB,YAAY,EAAE,YAAY;SAC3B,CAAC,CAAC;QAEH,eAAe;QACf,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,YAAY,CAAC;YAC/C,OAAO,EAAE,eAAe;YACxB,GAAG,EAAE,kBAAkB;YACvB,YAAY,EAAE,aAAa;SAC5B,CAAC,CAAC;QAEH,cAAc;QACd,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,GAAG,MAAM,YAAY,CAAC,YAAY,CAAC;YACzD,OAAO,EAAE,eAAe;YACxB,GAAG,EAAE,kBAAkB;YACvB,YAAY,EAAE,YAAY;SAC3B,CAAC,CAAC;QAEH,OAAO;YACL,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;YAChB,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;YACjB,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;YACjC,UAAU,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YAC9B,WAAW,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YAC/B,cAAc,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;YACrC,cAAc,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;YACrC,cAAc,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YAClC,SAAS,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YAC7B,QAAQ,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC;gBAClC,KAAK,EAAE,CAAC,CAAC,KAAK;gBACd,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE;aAC9B,CAAC,CAAC;SACJ,CAAC;IACJ,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CAAC,gCAAgC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;IACnE,CAAC;AACH,CAAC;AAEM,KAAK,UAAU,gBAAgB,CACpC,MAA8C,EAC9C,MAAsB;IAEtB,IAAI,CAAC;QACH,MAAM,YAAY,GAAG,MAAM,CAAC,eAAe,EAAE,CAAC;QAC9C,MAAM,eAAe,GAAG,MAAM,CAAC,eAA0B,CAAC;QAE1D,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,YAAY,CAAC;YAC/C,OAAO,EAAE,eAAe;YACxB,GAAG,EAAE,kBAAkB;YACvB,YAAY,EAAE,aAAa;SAC5B,CAAC,CAAC;QAEH,OAAO;YACL,QAAQ,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC;gBAClC,KAAK,EAAE,CAAC,CAAC,KAAK;gBACd,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE;aAC9B,CAAC,CAAC;SACJ,CAAC;IACJ,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CAAC,oCAAoC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;IACvE,CAAC;AACH,CAAC;AAEM,KAAK,UAAU,eAAe,CACnC,MAA6C,EAC7C,MAAsB;IAEtB,IAAI,CAAC;QACH,MAAM,YAAY,GAAG,MAAM,CAAC,eAAe,EAAE,CAAC;QAC9C,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC;QAEpC,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,MAAM,CAAC,eAAe,EAAE,CAAC,gBAAgB,CAAC;YAClE,OAAO,EAAE,MAAM,CAAC,eAA0B;YAC1C,GAAG,EAAE,kBAAkB;YACvB,YAAY,EAAE,SAAS;YACvB,IAAI,EAAE,CAAC,MAAM,CAAC,KAAgB,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YACtD,OAAO,EAAE,OAAO,CAAC,OAAO;SACzB,CAAC,CAAC;QAEH,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QAEvD,OAAO;YACL,WAAW,EAAE;gBACX,IAAI;gBACJ,MAAM,EAAE,SAAS;aAClB;SACF,CAAC;IACJ,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CAAC,kCAAkC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;IACrE,CAAC;AACH,CAAC;AAEM,KAAK,UAAU,gBAAgB,CACpC,MAA8C,EAC9C,MAAsB;IAEtB,IAAI,CAAC;QACH,MAAM,YAAY,GAAG,MAAM,CAAC,eAAe,EAAE,CAAC;QAC9C,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC;QAEpC,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,MAAM,CAAC,eAAe,EAAE,CAAC,gBAAgB,CAAC;YAClE,OAAO,EAAE,MAAM,CAAC,eAA0B;YAC1C,GAAG,EAAE,kBAAkB;YACvB,YAAY,EAAE,UAAU;YACxB,IAAI,EAAE;gBACJ,MAAM,CAAC,KAAgB;gBACvB,MAAM,CAAC,EAAa;gBACpB,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;gBACrB,MAAM,CAAC,MAAM;aACd;YACD,OAAO,EAAE,OAAO,CAAC,OAAO;SACzB,CAAC,CAAC;QAEH,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QAEvD,OAAO;YACL,WAAW,EAAE;gBACX,IAAI;gBACJ,MAAM,EAAE,SAAS;aAClB;SACF,CAAC;IACJ,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CAAC,qCAAqC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;IACxE,CAAC;AACH,CAAC;AAEM,KAAK,UAAU,eAAe,CACnC,MAA6C,EAC7C,MAAsB;IAEtB,IAAI,CAAC;QACH,MAAM,YAAY,GAAG,MAAM,CAAC,eAAe,EAAE,CAAC;QAC9C,MAAM,eAAe,GAAG,MAAM,CAAC,eAA0B,CAAC;QAE1D,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,GAAG,MAAM,YAAY,CAAC,YAAY,CAAC;YACzD,OAAO,EAAE,eAAe;YACxB,GAAG,EAAE,kBAAkB;YACvB,YAAY,EAAE,YAAY;SAC3B,CAAC,CAAC;QAEH,MAAM,OAAO,GAAqB,SAAS,CAAC,GAAG,CAAC,CAAC,IAAY,EAAE,GAAW,EAAE,EAAE,CAAC,CAAC;YAC9E,OAAO,EAAE,IAAI;YACb,IAAI,EAAE,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,SAAS;SAC1C,CAAC,CAAC,CAAC;QAEJ,OAAO,EAAE,OAAO,EAAE,CAAC;IACrB,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CAAC,mCAAmC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;IACtE,CAAC;AACH,CAAC;AAEM,KAAK,UAAU,iBAAiB,CACrC,MAA+C,EAC/C,MAAsB;IAEtB,IAAI,CAAC;QACH,MAAM,YAAY,GAAG,MAAM,CAAC,eAAe,EAAE,CAAC;QAC9C,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC;QAEpC,0CAA0C;QAC1C,IAAI,UAAkB,CAAC;QACvB,IAAI,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACpC,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YAC1C,UAAU,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACxD,IAAI,KAAK,CAAC,UAAU,CAAC,IAAI,UAAU,GAAG,CAAC,IAAI,UAAU,GAAG,CAAC,EAAE,CAAC;gBAC1D,MAAM,IAAI,KAAK,CAAC,iBAAiB,MAAM,CAAC,IAAI,iDAAiD,CAAC,CAAC;YACjG,CAAC;QACH,CAAC;aAAM,CAAC;YACN,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC;QAC3B,CAAC;QAED,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,MAAM,CAAC,eAAe,EAAE,CAAC,gBAAgB,CAAC;YAClE,OAAO,EAAE,MAAM,CAAC,eAA0B;YAC1C,GAAG,EAAE,kBAAkB;YACvB,YAAY,EAAE,WAAW;YACzB,IAAI,EAAE,CAAC,MAAM,CAAC,OAAkB,EAAE,UAAU,CAAC;YAC7C,OAAO,EAAE,OAAO,CAAC,OAAO;SACzB,CAAC,CAAC;QAEH,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QAEvD,OAAO;YACL,WAAW,EAAE;gBACX,IAAI;gBACJ,MAAM,EAAE,SAAS;aAClB;SACF,CAAC;IACJ,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CAAC,yBAAyB,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;IAC5D,CAAC;AACH,CAAC;AAEM,KAAK,UAAU,iBAAiB,CACrC,MAA+C,EAC/C,MAAsB;IAEtB,IAAI,CAAC;QACH,MAAM,YAAY,GAAG,MAAM,CAAC,eAAe,EAAE,CAAC;QAC9C,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC;QAEpC,iDAAiD;QACjD,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,SAAS,GAAG,MAAM,CAAC,WAAW,GAAG,MAAM,CAAC,QAAQ,CAAC;QACtF,IAAI,KAAK,KAAK,KAAK,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,4EAA4E,KAAK,EAAE,CAAC,CAAC;QACvG,CAAC;QAED,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,MAAM,CAAC,eAAe,EAAE,CAAC,gBAAgB,CAAC;YAClE,OAAO,EAAE,MAAM,CAAC,eAA0B;YAC1C,GAAG,EAAE,kBAAkB;YACvB,YAAY,EAAE,WAAW;YACzB,IAAI,EAAE;gBACJ,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;gBACrB,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC;gBACxB,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC;gBAC1B,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC;aACxB;YACD,OAAO,EAAE,OAAO,CAAC,OAAO;SACzB,CAAC,CAAC;QAEH,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QAEvD,OAAO;YACL,WAAW,EAAE;gBACX,IAAI;gBACJ,MAAM,EAAE,SAAS;aAClB;SACF,CAAC;IACJ,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CAAC,yBAAyB,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;IAC5D,CAAC;AACH,CAAC;AAEM,KAAK,UAAU,gBAAgB,CACpC,MAA8C,EAC9C,MAAsB;IAEtB,IAAI,CAAC;QACH,MAAM,YAAY,GAAG,MAAM,CAAC,eAAe,EAAE,CAAC;QAC9C,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC;QAEpC,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,MAAM,CAAC,eAAe,EAAE,CAAC,gBAAgB,CAAC;YAClE,OAAO,EAAE,MAAM,CAAC,eAA0B;YAC1C,GAAG,EAAE,kBAAkB;YACvB,YAAY,EAAE,eAAe;YAC7B,IAAI,EAAE;gBACJ,MAAM,CAAC,QAAmB;gBAC1B,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC;gBACvB,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC;aACzB;YACD,OAAO,EAAE,OAAO,CAAC,OAAO;SACzB,CAAC,CAAC;QAEH,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QAEvD,OAAO;YACL,WAAW,EAAE;gBACX,IAAI;gBACJ,MAAM,EAAE,SAAS;aAClB;SACF,CAAC;IACJ,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CAAC,8BAA8B,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;IACjE,CAAC;AACH,CAAC;AAEM,KAAK,UAAU,cAAc,CAClC,MAA4C,EAC5C,MAAsB;IAEtB,IAAI,CAAC;QACH,MAAM,YAAY,GAAG,MAAM,CAAC,eAAe,EAAE,CAAC;QAE9C,MAAM,eAAe,GAAG,MAAM,YAAY,CAAC,YAAY,CAAC;YACtD,OAAO,EAAE,wBAAwB;YACjC,GAAG,EAAE,oBAAoB;YACzB,YAAY,EAAE,YAAY;YAC1B,IAAI,EAAE,CAAC,MAAM,CAAC,YAAuB,CAAC;SACvC,CAAC,CAAC;QAEH,iDAAiD;QACjD,MAAM,aAAa,GAAG,eAAe,KAAK,4CAA4C,CAAC;QAEvF,OAAO;YACL,eAAe,EAAE,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,eAAe;SACxD,CAAC;IACJ,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CAAC,8BAA8B,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;IACjE,CAAC;AACH,CAAC"}
|