@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.
- package/dist/bundle.d.ts +1 -0
- package/dist/bundle.js +1 -0
- package/dist/common/address.d.ts +8 -2
- package/dist/position/responses.d.ts +3 -2
- package/dist/sync/payloads.d.ts +11 -0
- package/dist/sync/payloads.js +6 -2
- package/dist/sync/responses.d.ts +1 -0
- package/dist/sync/responses.js +8 -1
- package/dist/trade-accounts/payloads.d.ts +14 -13
- package/dist/users/entities.d.ts +5 -4
- package/dist/users/response.d.ts +2 -2
- package/dist/vaults/entities.d.ts +111 -0
- package/dist/vaults/entities.js +96 -0
- package/dist/vaults/index.d.ts +4 -0
- package/dist/vaults/index.js +4 -0
- package/dist/vaults/payloads.d.ts +140 -0
- package/dist/vaults/payloads.js +65 -0
- package/dist/vaults/queries.d.ts +96 -0
- package/dist/vaults/queries.js +66 -0
- package/dist/vaults/responses.d.ts +574 -0
- package/dist/vaults/responses.js +359 -0
- package/package.json +1 -1
|
@@ -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 };
|