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