@pear-protocol/types 2.9.0 → 2.10.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,359 @@
1
+ import { z } from 'zod';
2
+ import { EthereumAddress } from '../common/address';
3
+ import { Vault, VaultStatus, BulkSnapshotPoint, SparklinePoint, Activity, NavBucketPoint, NavSnapshot, VaultEvent } from './entities';
4
+ import { NavStatsWindow } from './queries';
5
+
6
+ var __defProp = Object.defineProperty;
7
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
8
+ const VaultResponse = z.object({
9
+ vault: Vault
10
+ });
11
+ const VaultListResponse = z.object({
12
+ vaults: z.array(Vault)
13
+ });
14
+ const CreatedVaultCompleted = z.object({
15
+ success: z.literal(true),
16
+ vaultAddress: EthereumAddress,
17
+ agentAddress: EthereumAddress,
18
+ ownerAddress: EthereumAddress,
19
+ status: VaultStatus,
20
+ maxWithdrawalPeriodDays: z.number().int(),
21
+ txHash: z.string()
22
+ });
23
+ const CreatedVaultInProgress = z.object({
24
+ success: z.literal(false),
25
+ status: z.literal("in_progress"),
26
+ activityId: z.string()
27
+ });
28
+ const CreatedVaultResult = z.discriminatedUnion("success", [
29
+ CreatedVaultCompleted,
30
+ CreatedVaultInProgress
31
+ ]);
32
+ const CreatedVaultResponse = z.object({
33
+ result: CreatedVaultResult
34
+ });
35
+ const SetTraderCompleted = z.object({
36
+ success: z.literal(true),
37
+ vault: Vault
38
+ });
39
+ const SetTraderInProgress = z.object({
40
+ success: z.literal(false),
41
+ status: z.literal("in_progress"),
42
+ activityId: z.string()
43
+ });
44
+ const SetTraderResult = z.discriminatedUnion("success", [
45
+ SetTraderCompleted,
46
+ SetTraderInProgress
47
+ ]);
48
+ const SetTraderResponse = z.object({
49
+ result: SetTraderResult
50
+ });
51
+ const BulkSnapshotsResponse = z.object({
52
+ snapshots: z.record(z.string(), z.array(BulkSnapshotPoint))
53
+ });
54
+ const InvestorEntry = z.object({
55
+ address: z.string(),
56
+ depositAmount: z.string(),
57
+ shares: z.string(),
58
+ currentValue: z.string()
59
+ });
60
+ const VaultStatsResponse = z.object({
61
+ tvl: z.string(),
62
+ totalSupply: z.string(),
63
+ sharePrice: z.string(),
64
+ withdrawalFeeBps: z.number(),
65
+ leaderInvestment: z.object({
66
+ depositAmount: z.string(),
67
+ currentValue: z.string(),
68
+ shares: z.string(),
69
+ percentageOfTVL: z.number()
70
+ }),
71
+ totalPnl: z.number(),
72
+ totalPnlPercentage: z.number().nullable(),
73
+ thirtyDayPnl: z.number(),
74
+ apr: z.number().nullable(),
75
+ maxDrawdown: z.number().nullable(),
76
+ // Recorded traded volume (USD) from the confirmed fills ledger; omitted when the vault has no trading account mapping.
77
+ tradedVolume: z.number().optional(),
78
+ winRate: z.number().nullable(),
79
+ profitFactor: z.number().nullable(),
80
+ unrealizedPnl: z.number(),
81
+ userStats: z.object({
82
+ allTimePnl: z.number(),
83
+ depositAmount: z.string(),
84
+ currentValue: z.string(),
85
+ shares: z.string(),
86
+ unrealizedPnl: z.number()
87
+ }).optional(),
88
+ investors: z.array(InvestorEntry)
89
+ });
90
+ const VaultOverviewResponse = z.object({
91
+ items: z.array(z.object({
92
+ vaultAddress: EthereumAddress,
93
+ agentAddress: EthereumAddress,
94
+ leaderAddress: EthereumAddress,
95
+ name: z.string().nullable(),
96
+ imageUrl: z.string().nullable(),
97
+ latest: z.object({
98
+ tvl: z.string(),
99
+ sharePrice: z.string(),
100
+ accountValue: z.string().nullable(),
101
+ openInterest: z.string().nullable(),
102
+ unrealizedPnl: z.string().nullable(),
103
+ cumulativeRealizedPnl: z.string().nullable(),
104
+ investorCount: z.number(),
105
+ createdAt: z.string()
106
+ }).nullable(),
107
+ sparkline: z.array(SparklinePoint)
108
+ })),
109
+ page: z.number(),
110
+ pageSize: z.number(),
111
+ total: z.number()
112
+ });
113
+ const VaultInvestmentsResponse = z.object({
114
+ totals: z.object({
115
+ totalInvested: z.number(),
116
+ totalCurrentValue: z.number(),
117
+ totalPnl: z.number(),
118
+ totalUnrealizedPnl: z.number()
119
+ }),
120
+ investments: z.array(z.object({
121
+ vaultAddress: EthereumAddress,
122
+ name: z.string().nullable(),
123
+ imageUrl: z.string().nullable(),
124
+ isLeader: z.boolean(),
125
+ depositAmount: z.string(),
126
+ currentValue: z.string(),
127
+ allTimePnl: z.number(),
128
+ unrealizedPnl: z.number(),
129
+ shares: z.string()
130
+ })),
131
+ partial: z.boolean(),
132
+ failedVaults: z.array(z.object({
133
+ vaultAddress: EthereumAddress,
134
+ name: z.string().nullable(),
135
+ reason: z.string()
136
+ }))
137
+ });
138
+ const ActivityResponse = z.object({
139
+ vaultAddress: z.string(),
140
+ activity: z.array(Activity)
141
+ });
142
+ const ActivityItemResponse = z.object({
143
+ activity: Activity
144
+ });
145
+ const AgentBalancesResponse = z.object({
146
+ agentAddress: z.string(),
147
+ spot: z.record(z.string(), z.string()),
148
+ perp: z.object({
149
+ accountValue: z.string(),
150
+ withdrawable: z.string()
151
+ })
152
+ });
153
+ const AgentApproveSent = z.object({
154
+ success: z.literal(true),
155
+ transactionHash: z.string(),
156
+ tokenAddress: z.string(),
157
+ spender: z.string(),
158
+ amount: z.string()
159
+ });
160
+ const AgentApproveSkipped = z.object({
161
+ success: z.literal(false),
162
+ status: z.literal("already_approved"),
163
+ tokenAddress: z.string(),
164
+ spender: z.string(),
165
+ allowance: z.string()
166
+ });
167
+ const AgentApproveResult = z.discriminatedUnion("success", [
168
+ AgentApproveSent,
169
+ AgentApproveSkipped
170
+ ]);
171
+ const AgentApproveResponse = z.object({
172
+ result: AgentApproveResult
173
+ });
174
+ const UnifiedAccountResponse = z.object({
175
+ success: z.boolean(),
176
+ agentAddress: z.string()
177
+ });
178
+ const NavRangeResponse = z.object({
179
+ points: z.array(NavBucketPoint)
180
+ });
181
+ const NavStatsResponse = z.object({
182
+ window: NavStatsWindow,
183
+ samples: z.number().int().nonnegative(),
184
+ returnPct: z.number().nullable(),
185
+ sharePriceMin: z.string().nullable(),
186
+ sharePriceMax: z.string().nullable(),
187
+ sharePriceFirst: z.string().nullable(),
188
+ sharePriceLast: z.string().nullable()
189
+ });
190
+ const NavSnapshotResponse = z.object({
191
+ snapshot: NavSnapshot
192
+ });
193
+ const WithdrawCompleted = z.object({
194
+ success: z.literal(true),
195
+ amount: z.string(),
196
+ token: z.string(),
197
+ tokenId: z.string(),
198
+ destination: z.string(),
199
+ vaultAddress: z.string(),
200
+ activityId: z.string(),
201
+ bridgeStatus: z.string(),
202
+ bridgeSettleMs: z.number(),
203
+ transferTxHash: z.string()
204
+ });
205
+ const WithdrawInProgress = z.object({
206
+ success: z.literal(false),
207
+ status: z.literal("in_progress"),
208
+ amount: z.string(),
209
+ token: z.string(),
210
+ tokenId: z.string(),
211
+ destination: z.string(),
212
+ vaultAddress: z.string(),
213
+ activityId: z.string()
214
+ });
215
+ const WithdrawToEvmResult = z.discriminatedUnion("success", [
216
+ WithdrawCompleted,
217
+ WithdrawInProgress
218
+ ]);
219
+ const WithdrawToEvmResponse = z.object({
220
+ result: WithdrawToEvmResult
221
+ });
222
+ const VaultEventListResponse = z.object({
223
+ events: z.array(VaultEvent)
224
+ });
225
+ const VaultRequestIssue = z.object({
226
+ path: z.string(),
227
+ message: z.string(),
228
+ code: z.string()
229
+ });
230
+ const createRefusal = /* @__PURE__ */ __name((code) => z.object({
231
+ error: z.literal(code),
232
+ details: z.string().optional()
233
+ }), "createRefusal");
234
+ const VaultServiceError = z.discriminatedUnion("error", [
235
+ // Authentication and authorization.
236
+ z.object({
237
+ error: z.literal("UNAUTHORIZED"),
238
+ reason: z.string()
239
+ }),
240
+ z.object({
241
+ error: z.literal("NOT_OWNER"),
242
+ vaultAddress: z.string()
243
+ }),
244
+ // Request validation.
245
+ z.object({
246
+ error: z.literal("INVALID_REQUEST"),
247
+ issues: z.array(VaultRequestIssue)
248
+ }),
249
+ // Lookups.
250
+ z.object({
251
+ error: z.literal("VAULT_NOT_FOUND"),
252
+ vaultAddress: z.string()
253
+ }),
254
+ z.object({
255
+ error: z.literal("VAULT_TRADE_ACCOUNT_UNAVAILABLE"),
256
+ vaultAddress: z.string()
257
+ }),
258
+ z.object({
259
+ error: z.literal("ACTIVITY_NOT_FOUND"),
260
+ activityId: z.string()
261
+ }),
262
+ z.object({
263
+ error: z.literal("NAV_UNAVAILABLE"),
264
+ vaultAddress: z.string()
265
+ }),
266
+ // Admission ceilings.
267
+ z.object({
268
+ error: z.literal("RATE_LIMITED"),
269
+ reason: z.string(),
270
+ retryAfterSeconds: z.number()
271
+ }),
272
+ z.object({
273
+ error: z.literal("VAULT_CREATE_CEILING"),
274
+ retryAfterSeconds: z.number()
275
+ }),
276
+ // Provider failures; `incidentId` correlates the response with the full server-side log line.
277
+ z.object({
278
+ error: z.literal("HL_SET_ABSTRACTION_FAILED"),
279
+ incidentId: z.string()
280
+ }),
281
+ // On-chain reads and workflow-answered refusals.
282
+ z.object({
283
+ error: z.literal("EVM_OPERATION_FAILED"),
284
+ vaultAddress: z.string(),
285
+ reason: z.string()
286
+ }),
287
+ z.object({
288
+ error: z.literal("HL_APPROVE_AGENT_FAILED"),
289
+ vaultAddress: z.string()
290
+ }),
291
+ // Create-vault refusals translated from the workflow's terminal reasons.
292
+ createRefusal("DEPLOYER_NOT_WHITELISTED"),
293
+ createRefusal("INVALID_CONFIG"),
294
+ createRefusal("CONFIG_DISABLED"),
295
+ createRefusal("AGENT_ALREADY_ASSIGNED"),
296
+ createRefusal("EMPTY_NAME"),
297
+ createRefusal("INVALID_ADDRESS"),
298
+ createRefusal("DEPLOY_REVERTED"),
299
+ createRefusal("VAULT_EVENT_MISSING"),
300
+ createRefusal("DEPLOYER_INSUFFICIENT_FUNDS"),
301
+ // Ambiguous post-dispatch outcomes; `activityId` anchors a support lookup.
302
+ z.object({
303
+ error: z.literal("CREATE_VAULT_OPERATION_FAILED"),
304
+ activityId: z.string()
305
+ }),
306
+ z.object({
307
+ error: z.literal("SET_TRADER_OPERATION_FAILED"),
308
+ activityId: z.string()
309
+ }),
310
+ z.object({
311
+ error: z.literal("UPDATE_METADATA_OPERATION_FAILED"),
312
+ activityId: z.string()
313
+ }),
314
+ z.object({
315
+ error: z.literal("VAULT_NOT_FOUND_AFTER_SET_TRADER"),
316
+ activityId: z.string()
317
+ }),
318
+ // Bridge withdraw family.
319
+ z.object({
320
+ error: z.literal("UNSUPPORTED_TOKEN"),
321
+ reason: z.string()
322
+ }),
323
+ z.object({
324
+ error: z.literal("WITHDRAW_IN_PROGRESS"),
325
+ activityId: z.string()
326
+ }),
327
+ z.object({
328
+ error: z.literal("BRIDGE_OPERATION_FAILED"),
329
+ activityId: z.string()
330
+ }),
331
+ z.object({
332
+ error: z.literal("BRIDGE_SEND_REJECTED"),
333
+ activityId: z.string()
334
+ }),
335
+ z.object({
336
+ error: z.literal("BRIDGE_VAULT_NOT_FOUND"),
337
+ activityId: z.string()
338
+ }),
339
+ z.object({
340
+ error: z.literal("BRIDGE_INVALID_AMOUNT"),
341
+ activityId: z.string()
342
+ }),
343
+ z.object({
344
+ error: z.literal("BRIDGE_NONCE_EXPIRED"),
345
+ activityId: z.string()
346
+ }),
347
+ // Custody refusals: Privy refused to sign the action, so the venue never saw it.
348
+ createRefusal("CUSTODY_REFUSED"),
349
+ z.object({
350
+ error: z.literal("SET_TRADER_CUSTODY_REFUSED"),
351
+ vaultAddress: z.string()
352
+ }),
353
+ z.object({
354
+ error: z.literal("BRIDGE_CUSTODY_REFUSED"),
355
+ activityId: z.string()
356
+ })
357
+ ]);
358
+
359
+ export { ActivityItemResponse, ActivityResponse, AgentApproveResponse, AgentApproveResult, AgentBalancesResponse, BulkSnapshotsResponse, CreatedVaultResponse, CreatedVaultResult, NavRangeResponse, NavSnapshotResponse, NavStatsResponse, SetTraderResponse, SetTraderResult, UnifiedAccountResponse, VaultEventListResponse, VaultInvestmentsResponse, VaultListResponse, VaultOverviewResponse, VaultRequestIssue, VaultResponse, VaultServiceError, VaultStatsResponse, WithdrawToEvmResponse, WithdrawToEvmResult };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pear-protocol/types",
3
- "version": "2.9.0",
3
+ "version": "2.10.0",
4
4
  "description": "Pear Protocol Types definitions",
5
5
  "private": false,
6
6
  "type": "module",