@turtleclub/hooks 0.5.0-beta.1 → 0.5.0-beta.10
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/index.cjs +438 -54
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +405 -51
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
- package/src/v2/deposits/api.ts +44 -0
- package/src/v2/deposits/hooks.ts +17 -0
- package/src/v2/deposits/index.ts +17 -0
- package/src/v2/deposits/queries.ts +10 -0
- package/src/v2/deposits/schemas.ts +110 -0
- package/src/v2/distributors/api.ts +28 -0
- package/src/v2/distributors/hooks.ts +15 -0
- package/src/v2/distributors/index.ts +11 -0
- package/src/v2/distributors/schema.ts +21 -0
- package/src/v2/incentives/api.ts +151 -0
- package/src/v2/incentives/hooks.ts +77 -0
- package/src/v2/incentives/index.ts +28 -0
- package/src/v2/incentives/queries.ts +15 -0
- package/src/v2/incentives/schema.ts +67 -0
- package/src/v2/index.ts +9 -3
- package/src/v2/lib/api-client.ts +4 -11
- package/src/v2/lib/query-config.ts +13 -1
- package/src/v2/lib/turtle-provider.tsx +3 -3
- package/src/v2/liquidity-providers/api.ts +39 -0
- package/src/v2/liquidity-providers/hooks.ts +17 -0
- package/src/v2/liquidity-providers/index.ts +21 -0
- package/src/v2/liquidity-providers/queries.ts +14 -0
- package/src/v2/liquidity-providers/schema.ts +42 -0
- package/src/v2/organizations/index.ts +0 -0
- package/src/v2/products/api.ts +7 -13
- package/src/v2/schemas/shared.ts +16 -2
- package/src/v2/streams/api.ts +61 -0
- package/src/v2/streams/hooks.ts +46 -0
- package/src/v2/streams/index.ts +11 -0
- package/src/v2/streams/queries.ts +14 -0
- package/src/v2/streams/schemas.ts +132 -0
- package/src/v2/users/api.ts +48 -0
- package/src/v2/users/hooks.ts +32 -0
- package/src/v2/users/index.ts +13 -0
- package/src/v2/users/queries.ts +14 -0
- package/src/v2/users/schemas.ts +109 -0
package/dist/index.cjs
CHANGED
|
@@ -22,7 +22,7 @@ var index_exports = {};
|
|
|
22
22
|
__export(index_exports, {
|
|
23
23
|
ApiError: () => ApiError,
|
|
24
24
|
BalanceSourcePriority: () => BalanceSourcePriority,
|
|
25
|
-
|
|
25
|
+
TurtleHooksProvider: () => TurtleHooksProvider,
|
|
26
26
|
apiClient: () => apiClient,
|
|
27
27
|
approveStep: () => approveStep,
|
|
28
28
|
asset: () => asset,
|
|
@@ -64,28 +64,49 @@ __export(index_exports, {
|
|
|
64
64
|
getPortfolioBalance: () => getPortfolioBalance,
|
|
65
65
|
getProducts: () => getProducts,
|
|
66
66
|
getSourcePriority: () => getSourcePriority,
|
|
67
|
+
getStreams: () => getStreams,
|
|
68
|
+
getStreamsOutputSchema: () => getStreamsOutputSchema,
|
|
69
|
+
getStreamsQuerySchema: () => getStreamsQuerySchema,
|
|
70
|
+
getStreamsSupportedChains: () => getStreamsSupportedChains,
|
|
71
|
+
getStreamsSupportedChainsOutputSchema: () => getStreamsSupportedChainsOutputSchema,
|
|
67
72
|
getSupportedChains: () => getSupportedChains,
|
|
68
73
|
getSupportedTokens: () => getSupportedTokens,
|
|
74
|
+
getUserById: () => getUserById,
|
|
75
|
+
getUserByIdInputSchema: () => getUserByIdInputSchema,
|
|
76
|
+
getUserByIdOutputSchema: () => getUserByIdOutputSchema,
|
|
77
|
+
getUserPortfolio: () => getUserPortfolio,
|
|
78
|
+
getUserTurtlePortfolioInputSchema: () => getUserTurtlePortfolioInputSchema,
|
|
79
|
+
getUserTurtlePortfolioOutputSchema: () => getUserTurtlePortfolioOutputSchema,
|
|
80
|
+
getUserTurtlePortfolioPathSchema: () => getUserTurtlePortfolioPathSchema,
|
|
69
81
|
getWalletBalances: () => getWalletBalances,
|
|
70
82
|
getWidgetOpportunities: () => getWidgetOpportunities,
|
|
83
|
+
holdingsDataSchema: () => holdingsDataSchema,
|
|
71
84
|
incentiveSchema: () => incentiveSchema,
|
|
72
85
|
lendingConfigSchema: () => lendingConfigSchema,
|
|
73
86
|
mergeBalancesByPriority: () => mergeBalancesByPriority,
|
|
74
87
|
opportunitiesQueries: () => opportunitiesQueries,
|
|
75
88
|
opportunitySchema: () => opportunitySchema,
|
|
76
89
|
organizationSchema: () => organizationSchema,
|
|
90
|
+
paginationMetadataSchema: () => paginationMetadataSchema,
|
|
77
91
|
portfolioBalanceResponseSchema: () => portfolioBalanceResponseSchema,
|
|
78
92
|
portfolioHoldingsSchema: () => portfolioHoldingsSchema,
|
|
93
|
+
portfolioSchema: () => portfolioSchema,
|
|
79
94
|
portfolioTokenSchema: () => portfolioTokenSchema,
|
|
80
95
|
portfolioWalletSchema: () => portfolioWalletSchema,
|
|
81
96
|
processRouteDetails: () => processRouteDetails,
|
|
82
97
|
productSchema: () => productSchema,
|
|
83
98
|
productsQueries: () => productsQueries,
|
|
84
99
|
queries: () => queries,
|
|
100
|
+
requestStreamSignature: () => requestStreamSignature,
|
|
85
101
|
routeToken: () => routeToken,
|
|
86
102
|
routerStep: () => routerStep,
|
|
87
103
|
routerSubstep: () => routerSubstep,
|
|
104
|
+
snapshotSchema: () => snapshotSchema,
|
|
88
105
|
stepTx: () => stepTx,
|
|
106
|
+
streamSchema: () => streamSchema,
|
|
107
|
+
streamSignatureRequestInputSchema: () => streamSignatureRequestInputSchema,
|
|
108
|
+
streamSignatureRequestOutputSchema: () => streamSignatureRequestOutputSchema,
|
|
109
|
+
streamsQueries: () => streamsQueries,
|
|
89
110
|
supportedChainsQueries: () => supportedChainsQueries,
|
|
90
111
|
supportedChainsResponseSchema: () => supportedChainsResponseSchema,
|
|
91
112
|
supportedTokenSchema: () => supportedTokenSchema,
|
|
@@ -111,16 +132,25 @@ __export(index_exports, {
|
|
|
111
132
|
usePortfolioBalance: () => usePortfolioBalance,
|
|
112
133
|
useProduct: () => useProduct,
|
|
113
134
|
useProducts: () => useProducts,
|
|
135
|
+
useRequestStreamSignature: () => useRequestStreamSignature,
|
|
136
|
+
useStreamSupportedChains: () => useStreamSupportedChains,
|
|
137
|
+
useStreams: () => useStreams,
|
|
114
138
|
useSupportedChains: () => useSupportedChains,
|
|
115
139
|
useSupportedTokens: () => useSupportedTokens,
|
|
116
140
|
useSwapRoute: () => useSwapRoute,
|
|
117
141
|
useTokenBalance: () => useTokenBalance,
|
|
118
142
|
useUpdateProduct: () => useUpdateProduct,
|
|
119
143
|
useUploadProductLogo: () => useUploadProductLogo,
|
|
144
|
+
useUserById: () => useUserById,
|
|
145
|
+
useUserPortfolio: () => useUserPortfolio,
|
|
120
146
|
useWidgetOpportunities: () => useWidgetOpportunities,
|
|
147
|
+
userEarningsSchema: () => userEarningsSchema,
|
|
148
|
+
userWithDetailsSchema: () => userWithDetailsSchema,
|
|
149
|
+
usersQueries: () => usersQueries,
|
|
121
150
|
vaultConfigSchema: () => vaultConfigSchema,
|
|
122
151
|
walletBalanceSchema: () => walletBalanceSchema,
|
|
123
152
|
walletBalancesResponseSchema: () => walletBalancesResponseSchema,
|
|
153
|
+
walletDataSchema: () => walletDataSchema,
|
|
124
154
|
walletEcosystemEnum: () => walletEcosystemEnum,
|
|
125
155
|
widgetOpportunitiesResponseSchema: () => widgetOpportunitiesResponseSchema,
|
|
126
156
|
widgetQueries: () => widgetQueries
|
|
@@ -128,14 +158,14 @@ __export(index_exports, {
|
|
|
128
158
|
module.exports = __toCommonJS(index_exports);
|
|
129
159
|
|
|
130
160
|
// src/v2/index.ts
|
|
131
|
-
var
|
|
161
|
+
var import_query_key_factory14 = require("@lukemorales/query-key-factory");
|
|
132
162
|
|
|
133
163
|
// src/v2/opportunities/queries.ts
|
|
134
164
|
var import_query_key_factory = require("@lukemorales/query-key-factory");
|
|
135
165
|
|
|
136
166
|
// src/v2/lib/api-client.ts
|
|
137
|
-
var API_BASE_URL = "https://api.turtle.
|
|
138
|
-
var EARN_BASE_URL = "https://earn.turtle.
|
|
167
|
+
var API_BASE_URL = "https://api.turtle.xyz";
|
|
168
|
+
var EARN_BASE_URL = "https://earn.turtle.xyz";
|
|
139
169
|
var ApiError = class extends Error {
|
|
140
170
|
constructor(message, status, response) {
|
|
141
171
|
super(message);
|
|
@@ -216,11 +246,7 @@ var ApiClient = class _ApiClient {
|
|
|
216
246
|
if (error instanceof ApiError) {
|
|
217
247
|
throw error;
|
|
218
248
|
}
|
|
219
|
-
throw new ApiError(
|
|
220
|
-
error instanceof Error ? error.message : "Unknown error",
|
|
221
|
-
0,
|
|
222
|
-
error
|
|
223
|
-
);
|
|
249
|
+
throw new ApiError(error instanceof Error ? error.message : "Unknown error", 0, error);
|
|
224
250
|
}
|
|
225
251
|
}
|
|
226
252
|
};
|
|
@@ -247,7 +273,10 @@ var tokenSchema = import_zod.z.object({
|
|
|
247
273
|
decimals: import_zod.z.number(),
|
|
248
274
|
logoUrl: import_zod.z.string().optional(),
|
|
249
275
|
isNative: import_zod.z.boolean(),
|
|
250
|
-
priceUsd: import_zod.z.number().optional()
|
|
276
|
+
priceUsd: import_zod.z.number().optional(),
|
|
277
|
+
price: import_zod.z.string().optional(),
|
|
278
|
+
amount: import_zod.z.string().optional(),
|
|
279
|
+
rawAmount: import_zod.z.string().optional()
|
|
251
280
|
});
|
|
252
281
|
var organizationSchema = import_zod.z.object({
|
|
253
282
|
id: import_zod.z.string(),
|
|
@@ -320,8 +349,8 @@ var incentiveSchema = import_zod.z.object({
|
|
|
320
349
|
tokenSupplyAllocation: import_zod.z.number().nullable(),
|
|
321
350
|
yield: import_zod.z.number().nullable()
|
|
322
351
|
});
|
|
323
|
-
var opportunityTypeEnum = import_zod.z.enum(["vault", "lending", "staking"]);
|
|
324
|
-
var opportunityStatusEnum = import_zod.z.enum(["active", "paused", "deprecated"]);
|
|
352
|
+
var opportunityTypeEnum = import_zod.z.enum(["vault", "lending", "staking", "stablecoin", ""]);
|
|
353
|
+
var opportunityStatusEnum = import_zod.z.enum(["active", "paused", "deprecated", "draft", "ended"]);
|
|
325
354
|
var opportunitySchema = import_zod.z.object({
|
|
326
355
|
id: import_zod.z.string().uuid().optional(),
|
|
327
356
|
name: import_zod.z.string(),
|
|
@@ -359,6 +388,14 @@ var opportunitySchema = import_zod.z.object({
|
|
|
359
388
|
exposure: import_zod.z.array(import_zod.z.string()),
|
|
360
389
|
explorerUrl: import_zod.z.string().nullable()
|
|
361
390
|
});
|
|
391
|
+
var paginationMetadataSchema = import_zod.z.object({
|
|
392
|
+
page: import_zod.z.number().int().min(1).catch(1),
|
|
393
|
+
limit: import_zod.z.number().int().min(1).max(100),
|
|
394
|
+
total: import_zod.z.number().int().min(0),
|
|
395
|
+
total_pages: import_zod.z.number().int().min(1),
|
|
396
|
+
has_next: import_zod.z.boolean(),
|
|
397
|
+
has_previous: import_zod.z.boolean()
|
|
398
|
+
});
|
|
362
399
|
|
|
363
400
|
// src/v2/opportunities/schema.ts
|
|
364
401
|
var import_zod2 = require("zod");
|
|
@@ -805,7 +842,7 @@ async function getProducts(filters) {
|
|
|
805
842
|
const params = new URLSearchParams();
|
|
806
843
|
if (filters?.organizationId) params.append("organizationId", filters.organizationId);
|
|
807
844
|
const queryString = params.toString();
|
|
808
|
-
const endpoint = `/
|
|
845
|
+
const endpoint = `/turtle/products${queryString ? `?${queryString}` : ""}`;
|
|
809
846
|
const data = await apiClient.fetch(endpoint, {
|
|
810
847
|
method: "GET"
|
|
811
848
|
});
|
|
@@ -817,7 +854,7 @@ async function getProducts(filters) {
|
|
|
817
854
|
return result.data;
|
|
818
855
|
}
|
|
819
856
|
async function getProduct(id) {
|
|
820
|
-
const endpoint = `/
|
|
857
|
+
const endpoint = `/turtle/products/${id}`;
|
|
821
858
|
const data = await apiClient.fetch(endpoint, {
|
|
822
859
|
method: "GET"
|
|
823
860
|
});
|
|
@@ -984,13 +1021,180 @@ var widgetQueries = (0, import_query_key_factory8.createQueryKeys)("widget", {
|
|
|
984
1021
|
})
|
|
985
1022
|
});
|
|
986
1023
|
|
|
987
|
-
// src/v2/
|
|
1024
|
+
// src/v2/streams/queries.ts
|
|
988
1025
|
var import_query_key_factory9 = require("@lukemorales/query-key-factory");
|
|
989
1026
|
|
|
990
|
-
// src/v2/
|
|
1027
|
+
// src/v2/streams/schemas.ts
|
|
991
1028
|
var import_zod10 = require("zod");
|
|
992
|
-
var
|
|
993
|
-
|
|
1029
|
+
var snapshotSchema = import_zod10.z.object({
|
|
1030
|
+
amountDistributed: import_zod10.z.string(),
|
|
1031
|
+
createdAt: import_zod10.z.string().datetime(),
|
|
1032
|
+
rootHash: import_zod10.z.string().nullable(),
|
|
1033
|
+
timestamp: import_zod10.z.string().datetime(),
|
|
1034
|
+
updatedAt: import_zod10.z.string().datetime(),
|
|
1035
|
+
userCount: import_zod10.z.number().optional()
|
|
1036
|
+
});
|
|
1037
|
+
var customArgsTokensPerUsdSchema = import_zod10.z.object({
|
|
1038
|
+
tokensPerUSD: import_zod10.z.string(),
|
|
1039
|
+
targetChainId: import_zod10.z.number(),
|
|
1040
|
+
targetTokenAddress: import_zod10.z.string()
|
|
1041
|
+
});
|
|
1042
|
+
var customArgsAprSchema = import_zod10.z.object({
|
|
1043
|
+
apr: import_zod10.z.string(),
|
|
1044
|
+
targetChainId: import_zod10.z.number(),
|
|
1045
|
+
targetTokenAddress: import_zod10.z.string()
|
|
1046
|
+
});
|
|
1047
|
+
var streamSchema = import_zod10.z.object({
|
|
1048
|
+
admin: import_zod10.z.string(),
|
|
1049
|
+
chainId: import_zod10.z.number(),
|
|
1050
|
+
chargedFee: import_zod10.z.string(),
|
|
1051
|
+
contractAddress: import_zod10.z.string(),
|
|
1052
|
+
createdAt: import_zod10.z.string().datetime(),
|
|
1053
|
+
customArgs: import_zod10.z.union([customArgsTokensPerUsdSchema, customArgsAprSchema]),
|
|
1054
|
+
deletedAt: import_zod10.z.string().datetime().nullable(),
|
|
1055
|
+
endTimestamp: import_zod10.z.string().datetime(),
|
|
1056
|
+
finalizationTimestamp: import_zod10.z.string().datetime(),
|
|
1057
|
+
id: import_zod10.z.string().uuid(),
|
|
1058
|
+
isPaused: import_zod10.z.boolean(),
|
|
1059
|
+
lastSnapshot: snapshotSchema.nullable(),
|
|
1060
|
+
orgId: import_zod10.z.string().uuid(),
|
|
1061
|
+
rewardToken: import_zod10.z.string(),
|
|
1062
|
+
snapshots: import_zod10.z.array(snapshotSchema).optional(),
|
|
1063
|
+
startTimestamp: import_zod10.z.string().datetime(),
|
|
1064
|
+
strategy: import_zod10.z.string(),
|
|
1065
|
+
totalAmount: import_zod10.z.string(),
|
|
1066
|
+
type: import_zod10.z.number(),
|
|
1067
|
+
updatedAt: import_zod10.z.string().datetime(),
|
|
1068
|
+
userId: import_zod10.z.string().uuid()
|
|
1069
|
+
});
|
|
1070
|
+
var getStreamsOutputSchema = import_zod10.z.object({
|
|
1071
|
+
streams: import_zod10.z.array(streamSchema)
|
|
1072
|
+
});
|
|
1073
|
+
var getStreamsSupportedChainsOutputSchema = import_zod10.z.object({
|
|
1074
|
+
success: import_zod10.z.boolean(),
|
|
1075
|
+
chains: import_zod10.z.array(
|
|
1076
|
+
import_zod10.z.object({
|
|
1077
|
+
id: import_zod10.z.string(),
|
|
1078
|
+
name: import_zod10.z.string(),
|
|
1079
|
+
slug: import_zod10.z.string(),
|
|
1080
|
+
chainId: import_zod10.z.number(),
|
|
1081
|
+
logoUrl: import_zod10.z.string(),
|
|
1082
|
+
ecosystem: import_zod10.z.string(),
|
|
1083
|
+
status: import_zod10.z.string(),
|
|
1084
|
+
explorerUrl: import_zod10.z.string(),
|
|
1085
|
+
campaignFactory: import_zod10.z.string()
|
|
1086
|
+
// Address as string
|
|
1087
|
+
})
|
|
1088
|
+
)
|
|
1089
|
+
});
|
|
1090
|
+
var streamSignatureRequestInputSchema = import_zod10.z.object({
|
|
1091
|
+
campaignType: import_zod10.z.number(),
|
|
1092
|
+
chainId: import_zod10.z.number(),
|
|
1093
|
+
customArgs: import_zod10.z.intersection(
|
|
1094
|
+
import_zod10.z.object({
|
|
1095
|
+
targetChainId: import_zod10.z.number(),
|
|
1096
|
+
targetTokenAddress: import_zod10.z.string()
|
|
1097
|
+
}),
|
|
1098
|
+
import_zod10.z.union([import_zod10.z.object({ tokensPerUsd: import_zod10.z.string() }), import_zod10.z.object({ apr: import_zod10.z.string() })])
|
|
1099
|
+
),
|
|
1100
|
+
endTimestamp: import_zod10.z.string(),
|
|
1101
|
+
finalizationTimestamp: import_zod10.z.string(),
|
|
1102
|
+
rewardToken: import_zod10.z.string(),
|
|
1103
|
+
startTimestamp: import_zod10.z.string(),
|
|
1104
|
+
totalAmount: import_zod10.z.string(),
|
|
1105
|
+
walletAddress: import_zod10.z.string()
|
|
1106
|
+
});
|
|
1107
|
+
var streamSignatureRequestOutputSchema = import_zod10.z.object({
|
|
1108
|
+
success: import_zod10.z.boolean(),
|
|
1109
|
+
message: import_zod10.z.string(),
|
|
1110
|
+
txParams: import_zod10.z.object({
|
|
1111
|
+
chainId: import_zod10.z.number(),
|
|
1112
|
+
sender: import_zod10.z.string(),
|
|
1113
|
+
params: import_zod10.z.object({
|
|
1114
|
+
params: import_zod10.z.object({
|
|
1115
|
+
UserId: import_zod10.z.array(import_zod10.z.number()),
|
|
1116
|
+
OrgId: import_zod10.z.array(import_zod10.z.number()),
|
|
1117
|
+
CampaignType: import_zod10.z.number(),
|
|
1118
|
+
RewardToken: import_zod10.z.string(),
|
|
1119
|
+
TotalAmount: import_zod10.z.number(),
|
|
1120
|
+
FeeBps: import_zod10.z.number(),
|
|
1121
|
+
StartTimestamp: import_zod10.z.number(),
|
|
1122
|
+
EndTimestamp: import_zod10.z.number(),
|
|
1123
|
+
FinalizationTimestamp: import_zod10.z.number(),
|
|
1124
|
+
CampaignData: import_zod10.z.string()
|
|
1125
|
+
}),
|
|
1126
|
+
signature: import_zod10.z.string(),
|
|
1127
|
+
salt: import_zod10.z.string(),
|
|
1128
|
+
deadline: import_zod10.z.number()
|
|
1129
|
+
})
|
|
1130
|
+
})
|
|
1131
|
+
});
|
|
1132
|
+
var getStreamsQuerySchema = import_zod10.z.object({
|
|
1133
|
+
streamId: import_zod10.z.string().optional(),
|
|
1134
|
+
userId: import_zod10.z.string().optional(),
|
|
1135
|
+
organizationId: import_zod10.z.string().optional(),
|
|
1136
|
+
withSnapshots: import_zod10.z.boolean().optional(),
|
|
1137
|
+
usersCount: import_zod10.z.boolean().optional()
|
|
1138
|
+
});
|
|
1139
|
+
|
|
1140
|
+
// src/v2/streams/api.ts
|
|
1141
|
+
async function getStreams(query) {
|
|
1142
|
+
const params = new URLSearchParams();
|
|
1143
|
+
if (query?.streamId) params.set("id", query.streamId);
|
|
1144
|
+
if (query?.userId) params.set("userId", query.userId);
|
|
1145
|
+
if (query?.organizationId) params.set("organizationId", query.organizationId);
|
|
1146
|
+
if (query?.withSnapshots) params.append("withSnapshots", "true");
|
|
1147
|
+
if (query?.usersCount && query?.withSnapshots) params.append("usersCount", "true");
|
|
1148
|
+
const queryString = params.toString();
|
|
1149
|
+
const endpoint = `/streams${queryString ? `?${queryString}` : ""}`;
|
|
1150
|
+
const data = await apiClient.fetch(endpoint, { method: "GET" });
|
|
1151
|
+
const result = getStreamsOutputSchema.safeParse(data);
|
|
1152
|
+
if (!result.success) {
|
|
1153
|
+
throw new Error(`Failed to parse streams: ${result.error.message}`);
|
|
1154
|
+
}
|
|
1155
|
+
return result.data.streams;
|
|
1156
|
+
}
|
|
1157
|
+
async function getStreamsSupportedChains() {
|
|
1158
|
+
const endpoint = "/streams/supported_chains";
|
|
1159
|
+
const data = await apiClient.fetch(endpoint, { method: "GET" });
|
|
1160
|
+
const result = getStreamsSupportedChainsOutputSchema.safeParse(data);
|
|
1161
|
+
if (!result.success) {
|
|
1162
|
+
throw new Error(`Failed to parse supported chains: ${result.error.message}`);
|
|
1163
|
+
}
|
|
1164
|
+
return result.data.chains;
|
|
1165
|
+
}
|
|
1166
|
+
async function requestStreamSignature(organizationId, input) {
|
|
1167
|
+
const endpoint = `/streams/request_signature/${organizationId}`;
|
|
1168
|
+
const data = await apiClient.fetch(endpoint, {
|
|
1169
|
+
method: "POST",
|
|
1170
|
+
body: input
|
|
1171
|
+
});
|
|
1172
|
+
const result = streamSignatureRequestOutputSchema.safeParse(data);
|
|
1173
|
+
if (!result.success) {
|
|
1174
|
+
throw new Error(`Failed to parse signature response: ${result.error.message}`);
|
|
1175
|
+
}
|
|
1176
|
+
return result.data;
|
|
1177
|
+
}
|
|
1178
|
+
|
|
1179
|
+
// src/v2/streams/queries.ts
|
|
1180
|
+
var streamsQueries = (0, import_query_key_factory9.createQueryKeys)("streams", {
|
|
1181
|
+
list: (query) => ({
|
|
1182
|
+
queryKey: [query ?? "all"],
|
|
1183
|
+
queryFn: () => getStreams(query)
|
|
1184
|
+
}),
|
|
1185
|
+
supportedChains: {
|
|
1186
|
+
queryKey: null,
|
|
1187
|
+
queryFn: () => getStreamsSupportedChains()
|
|
1188
|
+
}
|
|
1189
|
+
});
|
|
1190
|
+
|
|
1191
|
+
// src/v2/supported-chains/queries.ts
|
|
1192
|
+
var import_query_key_factory10 = require("@lukemorales/query-key-factory");
|
|
1193
|
+
|
|
1194
|
+
// src/v2/supported-chains/schema.ts
|
|
1195
|
+
var import_zod11 = require("zod");
|
|
1196
|
+
var supportedChainsResponseSchema = import_zod11.z.object({
|
|
1197
|
+
chains: import_zod11.z.array(chainSchema)
|
|
994
1198
|
});
|
|
995
1199
|
|
|
996
1200
|
// src/v2/supported-chains/api.ts
|
|
@@ -1008,7 +1212,7 @@ async function getSupportedChains(options) {
|
|
|
1008
1212
|
}
|
|
1009
1213
|
|
|
1010
1214
|
// src/v2/supported-chains/queries.ts
|
|
1011
|
-
var supportedChainsQueries = (0,
|
|
1215
|
+
var supportedChainsQueries = (0, import_query_key_factory10.createQueryKeys)("supportedChains", {
|
|
1012
1216
|
all: {
|
|
1013
1217
|
queryKey: null,
|
|
1014
1218
|
queryFn: () => getSupportedChains()
|
|
@@ -1016,18 +1220,18 @@ var supportedChainsQueries = (0, import_query_key_factory9.createQueryKeys)("sup
|
|
|
1016
1220
|
});
|
|
1017
1221
|
|
|
1018
1222
|
// src/v2/supported-tokens/queries.ts
|
|
1019
|
-
var
|
|
1223
|
+
var import_query_key_factory11 = require("@lukemorales/query-key-factory");
|
|
1020
1224
|
|
|
1021
1225
|
// src/v2/supported-tokens/schema.ts
|
|
1022
|
-
var
|
|
1226
|
+
var import_zod12 = require("zod");
|
|
1023
1227
|
var supportedTokenSchema = tokenSchema.extend({
|
|
1024
|
-
active:
|
|
1228
|
+
active: import_zod12.z.boolean()
|
|
1025
1229
|
});
|
|
1026
|
-
var supportedTokensResponseSchema =
|
|
1027
|
-
tokens:
|
|
1028
|
-
total:
|
|
1029
|
-
limit:
|
|
1030
|
-
page:
|
|
1230
|
+
var supportedTokensResponseSchema = import_zod12.z.object({
|
|
1231
|
+
tokens: import_zod12.z.array(supportedTokenSchema),
|
|
1232
|
+
total: import_zod12.z.number().optional(),
|
|
1233
|
+
limit: import_zod12.z.number().optional(),
|
|
1234
|
+
page: import_zod12.z.number().optional()
|
|
1031
1235
|
});
|
|
1032
1236
|
|
|
1033
1237
|
// src/v2/supported-tokens/api.ts
|
|
@@ -1051,13 +1255,121 @@ async function getSupportedTokens(filters, options) {
|
|
|
1051
1255
|
}
|
|
1052
1256
|
|
|
1053
1257
|
// src/v2/supported-tokens/queries.ts
|
|
1054
|
-
var supportedTokensQueries = (0,
|
|
1258
|
+
var supportedTokensQueries = (0, import_query_key_factory11.createQueryKeys)("supportedTokens", {
|
|
1055
1259
|
list: (filters) => ({
|
|
1056
1260
|
queryKey: [filters],
|
|
1057
1261
|
queryFn: () => getSupportedTokens(filters)
|
|
1058
1262
|
})
|
|
1059
1263
|
});
|
|
1060
1264
|
|
|
1265
|
+
// src/v2/users/queries.ts
|
|
1266
|
+
var import_query_key_factory12 = require("@lukemorales/query-key-factory");
|
|
1267
|
+
|
|
1268
|
+
// src/v2/users/schemas.ts
|
|
1269
|
+
var import_zod13 = require("zod");
|
|
1270
|
+
var walletDataSchema = import_zod13.z.object({
|
|
1271
|
+
address: import_zod13.z.string(),
|
|
1272
|
+
totalAmountInUSD: import_zod13.z.string(),
|
|
1273
|
+
tokens: import_zod13.z.array(tokenSchema)
|
|
1274
|
+
});
|
|
1275
|
+
var holdingsDataSchema = import_zod13.z.object({
|
|
1276
|
+
totalAmountInUSD: import_zod13.z.string(),
|
|
1277
|
+
chains: import_zod13.z.array(chainSchema).nullish(),
|
|
1278
|
+
wallets: import_zod13.z.array(walletDataSchema).nullish()
|
|
1279
|
+
});
|
|
1280
|
+
var userEarningsSchema = import_zod13.z.object({
|
|
1281
|
+
productId: import_zod13.z.string().uuid(),
|
|
1282
|
+
value: import_zod13.z.number(),
|
|
1283
|
+
referralsEarnings: import_zod13.z.number().nullish(),
|
|
1284
|
+
rewardName: import_zod13.z.string().nullish(),
|
|
1285
|
+
rewardType: import_zod13.z.string().nullish()
|
|
1286
|
+
});
|
|
1287
|
+
var portfolioSchema = import_zod13.z.object({
|
|
1288
|
+
productsEarnings: import_zod13.z.array(userEarningsSchema),
|
|
1289
|
+
holdings: holdingsDataSchema.nullish()
|
|
1290
|
+
});
|
|
1291
|
+
var holdingInfoSchema = import_zod13.z.object({
|
|
1292
|
+
amount: import_zod13.z.number(),
|
|
1293
|
+
usdValue: import_zod13.z.number(),
|
|
1294
|
+
token: tokenSchema.nullish()
|
|
1295
|
+
});
|
|
1296
|
+
var walletInfoSchema = import_zod13.z.object({
|
|
1297
|
+
address: import_zod13.z.string().nullish(),
|
|
1298
|
+
ecosystem: import_zod13.z.string().nullish(),
|
|
1299
|
+
isMain: import_zod13.z.boolean().nullish(),
|
|
1300
|
+
holdings: import_zod13.z.array(holdingInfoSchema).nullish()
|
|
1301
|
+
});
|
|
1302
|
+
var userWithDetailsSchema = import_zod13.z.object({
|
|
1303
|
+
id: import_zod13.z.string(),
|
|
1304
|
+
email: import_zod13.z.string().nullable(),
|
|
1305
|
+
username: import_zod13.z.string().nullish(),
|
|
1306
|
+
firstName: import_zod13.z.string().nullish(),
|
|
1307
|
+
lastName: import_zod13.z.string().nullish(),
|
|
1308
|
+
avatarUrl: import_zod13.z.string().nullish(),
|
|
1309
|
+
telegramHandle: import_zod13.z.string().nullish(),
|
|
1310
|
+
xUsername: import_zod13.z.string().nullish(),
|
|
1311
|
+
role: import_zod13.z.string(),
|
|
1312
|
+
createdAt: import_zod13.z.string(),
|
|
1313
|
+
updatedAt: import_zod13.z.string(),
|
|
1314
|
+
tags: import_zod13.z.array(import_zod13.z.string()).nullish(),
|
|
1315
|
+
wallets: import_zod13.z.array(walletInfoSchema).nullish()
|
|
1316
|
+
});
|
|
1317
|
+
var getUserTurtlePortfolioInputSchema = import_zod13.z.object({
|
|
1318
|
+
userId: import_zod13.z.string().uuid()
|
|
1319
|
+
});
|
|
1320
|
+
var getUserTurtlePortfolioOutputSchema = import_zod13.z.object({
|
|
1321
|
+
portfolio: portfolioSchema
|
|
1322
|
+
});
|
|
1323
|
+
var getUserTurtlePortfolioPathSchema = import_zod13.z.object({
|
|
1324
|
+
userId: import_zod13.z.string().uuid()
|
|
1325
|
+
});
|
|
1326
|
+
var getUserByIdInputSchema = import_zod13.z.object({
|
|
1327
|
+
userId: import_zod13.z.string().uuid()
|
|
1328
|
+
});
|
|
1329
|
+
var getUserByIdOutputSchema = import_zod13.z.object({
|
|
1330
|
+
user: userWithDetailsSchema.nullable(),
|
|
1331
|
+
error: import_zod13.z.string().optional()
|
|
1332
|
+
});
|
|
1333
|
+
|
|
1334
|
+
// src/v2/users/api.ts
|
|
1335
|
+
async function getUserById(input) {
|
|
1336
|
+
console.log("input", input);
|
|
1337
|
+
const endpoint = `/admin/users/${input.userId}`;
|
|
1338
|
+
const data = await apiClient.fetch(endpoint, {
|
|
1339
|
+
method: "GET"
|
|
1340
|
+
});
|
|
1341
|
+
const result = getUserByIdOutputSchema.safeParse(data);
|
|
1342
|
+
if (result.success === false) {
|
|
1343
|
+
console.log("[ZOD ERROR]", result.error);
|
|
1344
|
+
throw new Error(`Failed to parse user: ${result.error.message}`);
|
|
1345
|
+
}
|
|
1346
|
+
return result.data;
|
|
1347
|
+
}
|
|
1348
|
+
async function getUserPortfolio(input) {
|
|
1349
|
+
const endpoint = `/admin/users/${input.userId}/portfolio`;
|
|
1350
|
+
const data = await apiClient.fetch(endpoint, {
|
|
1351
|
+
method: "GET"
|
|
1352
|
+
});
|
|
1353
|
+
const result = getUserTurtlePortfolioOutputSchema.safeParse(data);
|
|
1354
|
+
if (result.success === false) {
|
|
1355
|
+
console.log("[ZOD ERROR]", result.error);
|
|
1356
|
+
throw new Error(`Failed to parse user portfolio: ${result.error.message}`);
|
|
1357
|
+
}
|
|
1358
|
+
return result.data;
|
|
1359
|
+
}
|
|
1360
|
+
|
|
1361
|
+
// src/v2/users/queries.ts
|
|
1362
|
+
var usersQueries = (0, import_query_key_factory12.createQueryKeys)("users", {
|
|
1363
|
+
byId: (input) => ({
|
|
1364
|
+
queryKey: [input.userId],
|
|
1365
|
+
queryFn: () => getUserById(input)
|
|
1366
|
+
}),
|
|
1367
|
+
portfolio: (input) => ({
|
|
1368
|
+
queryKey: ["portfolio", input.userId],
|
|
1369
|
+
queryFn: () => getUserPortfolio(input)
|
|
1370
|
+
})
|
|
1371
|
+
});
|
|
1372
|
+
|
|
1061
1373
|
// src/v2/earn-opportunities/hooks.ts
|
|
1062
1374
|
var import_react_query = require("@tanstack/react-query");
|
|
1063
1375
|
|
|
@@ -1072,6 +1384,13 @@ var queryDefaults = {
|
|
|
1072
1384
|
refetchOnWindowFocus: false
|
|
1073
1385
|
// Don't refetch on tab focus
|
|
1074
1386
|
};
|
|
1387
|
+
function createQueryOptions(queryConfig, options) {
|
|
1388
|
+
return {
|
|
1389
|
+
...queryDefaults,
|
|
1390
|
+
...queryConfig,
|
|
1391
|
+
...options
|
|
1392
|
+
};
|
|
1393
|
+
}
|
|
1075
1394
|
|
|
1076
1395
|
// src/v2/earn-opportunities/hooks.ts
|
|
1077
1396
|
function useEarnOpportunities() {
|
|
@@ -1303,33 +1622,33 @@ var BalanceSourcePriority = /* @__PURE__ */ ((BalanceSourcePriority2) => {
|
|
|
1303
1622
|
})(BalanceSourcePriority || {});
|
|
1304
1623
|
|
|
1305
1624
|
// src/v2/balance/schema.ts
|
|
1306
|
-
var
|
|
1307
|
-
var portfolioTokenSchema =
|
|
1308
|
-
id:
|
|
1309
|
-
address:
|
|
1310
|
-
name:
|
|
1311
|
-
symbol:
|
|
1312
|
-
decimals:
|
|
1313
|
-
isNative:
|
|
1314
|
-
logoUrl:
|
|
1315
|
-
amount:
|
|
1625
|
+
var import_zod14 = require("zod");
|
|
1626
|
+
var portfolioTokenSchema = import_zod14.z.object({
|
|
1627
|
+
id: import_zod14.z.string(),
|
|
1628
|
+
address: import_zod14.z.string(),
|
|
1629
|
+
name: import_zod14.z.string(),
|
|
1630
|
+
symbol: import_zod14.z.string(),
|
|
1631
|
+
decimals: import_zod14.z.number(),
|
|
1632
|
+
isNative: import_zod14.z.boolean(),
|
|
1633
|
+
logoUrl: import_zod14.z.string().nullable(),
|
|
1634
|
+
amount: import_zod14.z.string(),
|
|
1316
1635
|
// Portfolio-specific field (decimal format)
|
|
1317
|
-
price:
|
|
1636
|
+
price: import_zod14.z.string().nullable().transform((val) => val ? parseFloat(val) : null),
|
|
1318
1637
|
// Portfolio-specific field
|
|
1319
1638
|
// Chain with optional fields to match Portfolio API response
|
|
1320
1639
|
chain: chainSchema.partial().required({ chainId: true })
|
|
1321
1640
|
});
|
|
1322
|
-
var portfolioWalletSchema =
|
|
1323
|
-
id:
|
|
1324
|
-
address:
|
|
1325
|
-
blockchain:
|
|
1326
|
-
tokens:
|
|
1641
|
+
var portfolioWalletSchema = import_zod14.z.object({
|
|
1642
|
+
id: import_zod14.z.string().optional(),
|
|
1643
|
+
address: import_zod14.z.string(),
|
|
1644
|
+
blockchain: import_zod14.z.string().optional(),
|
|
1645
|
+
tokens: import_zod14.z.array(portfolioTokenSchema)
|
|
1327
1646
|
});
|
|
1328
|
-
var portfolioHoldingsSchema =
|
|
1329
|
-
wallets:
|
|
1647
|
+
var portfolioHoldingsSchema = import_zod14.z.object({
|
|
1648
|
+
wallets: import_zod14.z.array(portfolioWalletSchema)
|
|
1330
1649
|
});
|
|
1331
|
-
var portfolioBalanceResponseSchema =
|
|
1332
|
-
portfolio:
|
|
1650
|
+
var portfolioBalanceResponseSchema = import_zod14.z.object({
|
|
1651
|
+
portfolio: import_zod14.z.object({
|
|
1333
1652
|
holdings: portfolioHoldingsSchema
|
|
1334
1653
|
})
|
|
1335
1654
|
});
|
|
@@ -1350,8 +1669,8 @@ async function getPortfolioBalance(address, options) {
|
|
|
1350
1669
|
}
|
|
1351
1670
|
|
|
1352
1671
|
// src/v2/balance/queries.ts
|
|
1353
|
-
var
|
|
1354
|
-
var balanceQueries = (0,
|
|
1672
|
+
var import_query_key_factory13 = require("@lukemorales/query-key-factory");
|
|
1673
|
+
var balanceQueries = (0, import_query_key_factory13.createQueryKeys)("balance", {
|
|
1355
1674
|
// Portfolio balance by address
|
|
1356
1675
|
portfolio: (address) => ({
|
|
1357
1676
|
queryKey: [address],
|
|
@@ -1799,6 +2118,21 @@ function useGeocheck(options = {}) {
|
|
|
1799
2118
|
});
|
|
1800
2119
|
}
|
|
1801
2120
|
|
|
2121
|
+
// src/v2/streams/hooks.ts
|
|
2122
|
+
var import_react_query13 = require("@tanstack/react-query");
|
|
2123
|
+
function useStreams({ query, ...options } = {}) {
|
|
2124
|
+
return (0, import_react_query13.useQuery)(createQueryOptions(streamsQueries.list(query), options));
|
|
2125
|
+
}
|
|
2126
|
+
function useStreamSupportedChains(options) {
|
|
2127
|
+
return (0, import_react_query13.useQuery)(createQueryOptions(streamsQueries.supportedChains, options));
|
|
2128
|
+
}
|
|
2129
|
+
function useRequestStreamSignature(options) {
|
|
2130
|
+
return (0, import_react_query13.useMutation)({
|
|
2131
|
+
mutationFn: ({ organizationId, data }) => requestStreamSignature(organizationId, data),
|
|
2132
|
+
...options
|
|
2133
|
+
});
|
|
2134
|
+
}
|
|
2135
|
+
|
|
1802
2136
|
// src/v2/swap/useSwapRoute.ts
|
|
1803
2137
|
var import_react8 = require("react");
|
|
1804
2138
|
|
|
@@ -1897,10 +2231,28 @@ function useSwapRoute(isEnabled, userAddress, distributorId, options, referralCo
|
|
|
1897
2231
|
};
|
|
1898
2232
|
}
|
|
1899
2233
|
|
|
2234
|
+
// src/v2/users/hooks.ts
|
|
2235
|
+
var import_react_query14 = require("@tanstack/react-query");
|
|
2236
|
+
function useUserById({ userId, enabled = true }) {
|
|
2237
|
+
return (0, import_react_query14.useQuery)({
|
|
2238
|
+
...usersQueries.byId({ userId }),
|
|
2239
|
+
...queryDefaults,
|
|
2240
|
+
enabled
|
|
2241
|
+
});
|
|
2242
|
+
}
|
|
2243
|
+
function useUserPortfolio({ userId, enabled = true }) {
|
|
2244
|
+
const input = { userId };
|
|
2245
|
+
return (0, import_react_query14.useQuery)({
|
|
2246
|
+
...usersQueries.portfolio(input),
|
|
2247
|
+
...queryDefaults,
|
|
2248
|
+
enabled
|
|
2249
|
+
});
|
|
2250
|
+
}
|
|
2251
|
+
|
|
1900
2252
|
// src/v2/lib/turtle-provider.tsx
|
|
1901
2253
|
var import_react9 = require("react");
|
|
1902
2254
|
var import_jsx_runtime = require("react/jsx-runtime");
|
|
1903
|
-
function
|
|
2255
|
+
function TurtleHooksProvider({
|
|
1904
2256
|
children,
|
|
1905
2257
|
apiUrl,
|
|
1906
2258
|
earnUrl,
|
|
@@ -1918,7 +2270,7 @@ function TurtleProvider({
|
|
|
1918
2270
|
}
|
|
1919
2271
|
|
|
1920
2272
|
// src/v2/index.ts
|
|
1921
|
-
var queries = (0,
|
|
2273
|
+
var queries = (0, import_query_key_factory14.mergeQueryKeys)(
|
|
1922
2274
|
opportunitiesQueries,
|
|
1923
2275
|
earnOpportunitiesQueries,
|
|
1924
2276
|
earnRouteQueries,
|
|
@@ -1927,14 +2279,16 @@ var queries = (0, import_query_key_factory12.mergeQueryKeys)(
|
|
|
1927
2279
|
productsQueries,
|
|
1928
2280
|
ensoBalancesQueries,
|
|
1929
2281
|
widgetQueries,
|
|
2282
|
+
streamsQueries,
|
|
1930
2283
|
supportedChainsQueries,
|
|
1931
|
-
supportedTokensQueries
|
|
2284
|
+
supportedTokensQueries,
|
|
2285
|
+
usersQueries
|
|
1932
2286
|
);
|
|
1933
2287
|
// Annotate the CommonJS export names for ESM import in node:
|
|
1934
2288
|
0 && (module.exports = {
|
|
1935
2289
|
ApiError,
|
|
1936
2290
|
BalanceSourcePriority,
|
|
1937
|
-
|
|
2291
|
+
TurtleHooksProvider,
|
|
1938
2292
|
apiClient,
|
|
1939
2293
|
approveStep,
|
|
1940
2294
|
asset,
|
|
@@ -1976,28 +2330,49 @@ var queries = (0, import_query_key_factory12.mergeQueryKeys)(
|
|
|
1976
2330
|
getPortfolioBalance,
|
|
1977
2331
|
getProducts,
|
|
1978
2332
|
getSourcePriority,
|
|
2333
|
+
getStreams,
|
|
2334
|
+
getStreamsOutputSchema,
|
|
2335
|
+
getStreamsQuerySchema,
|
|
2336
|
+
getStreamsSupportedChains,
|
|
2337
|
+
getStreamsSupportedChainsOutputSchema,
|
|
1979
2338
|
getSupportedChains,
|
|
1980
2339
|
getSupportedTokens,
|
|
2340
|
+
getUserById,
|
|
2341
|
+
getUserByIdInputSchema,
|
|
2342
|
+
getUserByIdOutputSchema,
|
|
2343
|
+
getUserPortfolio,
|
|
2344
|
+
getUserTurtlePortfolioInputSchema,
|
|
2345
|
+
getUserTurtlePortfolioOutputSchema,
|
|
2346
|
+
getUserTurtlePortfolioPathSchema,
|
|
1981
2347
|
getWalletBalances,
|
|
1982
2348
|
getWidgetOpportunities,
|
|
2349
|
+
holdingsDataSchema,
|
|
1983
2350
|
incentiveSchema,
|
|
1984
2351
|
lendingConfigSchema,
|
|
1985
2352
|
mergeBalancesByPriority,
|
|
1986
2353
|
opportunitiesQueries,
|
|
1987
2354
|
opportunitySchema,
|
|
1988
2355
|
organizationSchema,
|
|
2356
|
+
paginationMetadataSchema,
|
|
1989
2357
|
portfolioBalanceResponseSchema,
|
|
1990
2358
|
portfolioHoldingsSchema,
|
|
2359
|
+
portfolioSchema,
|
|
1991
2360
|
portfolioTokenSchema,
|
|
1992
2361
|
portfolioWalletSchema,
|
|
1993
2362
|
processRouteDetails,
|
|
1994
2363
|
productSchema,
|
|
1995
2364
|
productsQueries,
|
|
1996
2365
|
queries,
|
|
2366
|
+
requestStreamSignature,
|
|
1997
2367
|
routeToken,
|
|
1998
2368
|
routerStep,
|
|
1999
2369
|
routerSubstep,
|
|
2370
|
+
snapshotSchema,
|
|
2000
2371
|
stepTx,
|
|
2372
|
+
streamSchema,
|
|
2373
|
+
streamSignatureRequestInputSchema,
|
|
2374
|
+
streamSignatureRequestOutputSchema,
|
|
2375
|
+
streamsQueries,
|
|
2001
2376
|
supportedChainsQueries,
|
|
2002
2377
|
supportedChainsResponseSchema,
|
|
2003
2378
|
supportedTokenSchema,
|
|
@@ -2023,16 +2398,25 @@ var queries = (0, import_query_key_factory12.mergeQueryKeys)(
|
|
|
2023
2398
|
usePortfolioBalance,
|
|
2024
2399
|
useProduct,
|
|
2025
2400
|
useProducts,
|
|
2401
|
+
useRequestStreamSignature,
|
|
2402
|
+
useStreamSupportedChains,
|
|
2403
|
+
useStreams,
|
|
2026
2404
|
useSupportedChains,
|
|
2027
2405
|
useSupportedTokens,
|
|
2028
2406
|
useSwapRoute,
|
|
2029
2407
|
useTokenBalance,
|
|
2030
2408
|
useUpdateProduct,
|
|
2031
2409
|
useUploadProductLogo,
|
|
2410
|
+
useUserById,
|
|
2411
|
+
useUserPortfolio,
|
|
2032
2412
|
useWidgetOpportunities,
|
|
2413
|
+
userEarningsSchema,
|
|
2414
|
+
userWithDetailsSchema,
|
|
2415
|
+
usersQueries,
|
|
2033
2416
|
vaultConfigSchema,
|
|
2034
2417
|
walletBalanceSchema,
|
|
2035
2418
|
walletBalancesResponseSchema,
|
|
2419
|
+
walletDataSchema,
|
|
2036
2420
|
walletEcosystemEnum,
|
|
2037
2421
|
widgetOpportunitiesResponseSchema,
|
|
2038
2422
|
widgetQueries
|