timelock-sdk 0.0.177 → 0.0.179
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/{client-BFfw9ee6.d.cts → client-8sps6WQZ.d.cts} +223 -4274
- package/dist/{client-BiwrAgwX.d.ts → client-CMpyJqb-.d.ts} +807 -4858
- package/dist/client.cjs +82 -85
- package/dist/client.cjs.map +1 -1
- package/dist/client.d.cts +1 -1
- package/dist/client.d.ts +1 -1
- package/dist/client.js +82 -85
- package/dist/client.js.map +1 -1
- package/dist/{optionUtils-BHU2evq2.cjs → optionUtils-013IznJO.cjs} +1 -8
- package/dist/optionUtils-013IznJO.cjs.map +1 -0
- package/dist/{optionUtils-DV3VdMvm.js → optionUtils-BOHupq5Q.js} +2 -3
- package/dist/optionUtils-BOHupq5Q.js.map +1 -0
- package/dist/package.cjs +1 -2
- package/dist/package.d.cts +2 -2
- package/dist/package.d.ts +2 -2
- package/dist/package.js +2 -2
- package/package.json +1 -1
- package/dist/optionUtils-BHU2evq2.cjs.map +0 -1
- package/dist/optionUtils-DV3VdMvm.js.map +0 -1
package/dist/client.cjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
|
|
3
3
|
|
|
4
|
-
const require_optionUtils = require('./optionUtils-
|
|
4
|
+
const require_optionUtils = require('./optionUtils-013IznJO.cjs');
|
|
5
5
|
const require_statelessStateView = require('./statelessStateView-CtzW08Yu.cjs');
|
|
6
6
|
const require_factory = require('./factory-DitVXzjQ.cjs');
|
|
7
7
|
let viem = require("viem");
|
|
@@ -848,7 +848,7 @@ const useUserOptions = (userAddr, marketAddr, active = false) => {
|
|
|
848
848
|
const { graphqlClient } = useTimelockConfig();
|
|
849
849
|
userAddr = userAddr === null || userAddr === void 0 ? void 0 : userAddr.toLowerCase();
|
|
850
850
|
marketAddr = marketAddr === null || marketAddr === void 0 ? void 0 : marketAddr.toLowerCase();
|
|
851
|
-
|
|
851
|
+
return (0, __tanstack_react_query.useQuery)({
|
|
852
852
|
queryKey: [
|
|
853
853
|
"userOptions",
|
|
854
854
|
userAddr || "--",
|
|
@@ -883,10 +883,6 @@ const useUserOptions = (userAddr, marketAddr, active = false) => {
|
|
|
883
883
|
},
|
|
884
884
|
enabled: !!userAddr && !!marketAddr && !!graphqlClient
|
|
885
885
|
});
|
|
886
|
-
return {
|
|
887
|
-
data: data || require_optionUtils.EMPTY_ARRAY,
|
|
888
|
-
...rest
|
|
889
|
-
};
|
|
890
886
|
};
|
|
891
887
|
const useActiveUserOptions = (userAddr, marketAddr) => {
|
|
892
888
|
return useUserOptions(userAddr, marketAddr, true);
|
|
@@ -942,7 +938,7 @@ const useExtendOption = (marketAddr) => {
|
|
|
942
938
|
const useOptionTimeline = (marketAddr, optionId) => {
|
|
943
939
|
const { graphqlClient } = useTimelockConfig();
|
|
944
940
|
marketAddr = marketAddr === null || marketAddr === void 0 ? void 0 : marketAddr.toLowerCase();
|
|
945
|
-
|
|
941
|
+
return (0, __tanstack_react_query.useQuery)({
|
|
946
942
|
queryKey: [
|
|
947
943
|
"optionTimeline",
|
|
948
944
|
marketAddr || "--",
|
|
@@ -987,26 +983,22 @@ const useOptionTimeline = (marketAddr, optionId) => {
|
|
|
987
983
|
transactionHash: event.transactionHash
|
|
988
984
|
}));
|
|
989
985
|
return [
|
|
990
|
-
...mintEvents.map((data
|
|
986
|
+
...mintEvents.map((data) => ({
|
|
991
987
|
type: "mint",
|
|
992
|
-
data
|
|
988
|
+
data
|
|
993
989
|
})),
|
|
994
|
-
...exerciseEvents.map((data
|
|
990
|
+
...exerciseEvents.map((data) => ({
|
|
995
991
|
type: "exercise",
|
|
996
|
-
data
|
|
992
|
+
data
|
|
997
993
|
})),
|
|
998
|
-
...extendEvents.map((data
|
|
994
|
+
...extendEvents.map((data) => ({
|
|
999
995
|
type: "extend",
|
|
1000
|
-
data
|
|
996
|
+
data
|
|
1001
997
|
}))
|
|
1002
998
|
].sort((a, b) => a.data.timestamp.getTime() - b.data.timestamp.getTime());
|
|
1003
999
|
},
|
|
1004
1000
|
enabled: !!marketAddr && optionId !== void 0 && !!graphqlClient
|
|
1005
1001
|
});
|
|
1006
|
-
return {
|
|
1007
|
-
data: data || require_optionUtils.EMPTY_ARRAY,
|
|
1008
|
-
...rest
|
|
1009
|
-
};
|
|
1010
1002
|
};
|
|
1011
1003
|
|
|
1012
1004
|
//#endregion
|
|
@@ -1082,6 +1074,62 @@ const usePerpsOperator = () => {
|
|
|
1082
1074
|
};
|
|
1083
1075
|
};
|
|
1084
1076
|
|
|
1077
|
+
//#endregion
|
|
1078
|
+
//#region src/hooks/operators/useUserOperators.ts
|
|
1079
|
+
const useUserOperators = (userAddr, marketAddr) => {
|
|
1080
|
+
const { graphqlClient } = useTimelockConfig();
|
|
1081
|
+
return (0, __tanstack_react_query.useQuery)({
|
|
1082
|
+
queryKey: [
|
|
1083
|
+
"userOperators",
|
|
1084
|
+
(userAddr === null || userAddr === void 0 ? void 0 : userAddr.toLowerCase()) || "--",
|
|
1085
|
+
(marketAddr === null || marketAddr === void 0 ? void 0 : marketAddr.toLowerCase()) || "--"
|
|
1086
|
+
],
|
|
1087
|
+
queryFn: async () => {
|
|
1088
|
+
if (!userAddr || !marketAddr) return void 0;
|
|
1089
|
+
return (await graphqlClient.GetUserMarketOperators({
|
|
1090
|
+
userAddr: userAddr.toLowerCase(),
|
|
1091
|
+
marketAddr: marketAddr.toLowerCase()
|
|
1092
|
+
})).UserMarketOperator.map((operator) => ({
|
|
1093
|
+
...operator,
|
|
1094
|
+
spendingApproval: BigInt(operator.spendingApproval),
|
|
1095
|
+
operatorAddr: operator.operator.address.toLowerCase()
|
|
1096
|
+
}));
|
|
1097
|
+
},
|
|
1098
|
+
enabled: !!userAddr && !!marketAddr && !!graphqlClient
|
|
1099
|
+
});
|
|
1100
|
+
};
|
|
1101
|
+
|
|
1102
|
+
//#endregion
|
|
1103
|
+
//#region src/hooks/operators/useSetOperatorPerms.ts
|
|
1104
|
+
const useSetOperatorPerms = (marketAddr) => {
|
|
1105
|
+
const queryClient = (0, __tanstack_react_query.useQueryClient)();
|
|
1106
|
+
const client = (0, wagmi.useClient)();
|
|
1107
|
+
const { address } = (0, wagmi.useConnection)();
|
|
1108
|
+
const { writeContractAsync } = (0, wagmi.useWriteContract)();
|
|
1109
|
+
const setOperatorPerms = async ({ operator, canExtend, canExercise, canTransfer, canMint, spendingApproval }) => {
|
|
1110
|
+
if (!client || !address) throw new Error("Wallet not connected");
|
|
1111
|
+
if (!marketAddr) throw new Error("Market address not available");
|
|
1112
|
+
const hash = await writeContractAsync({
|
|
1113
|
+
address: marketAddr,
|
|
1114
|
+
abi: require_statelessStateView.optionsMarketAbi,
|
|
1115
|
+
functionName: "setOperatorPerms",
|
|
1116
|
+
args: [
|
|
1117
|
+
operator,
|
|
1118
|
+
canExtend,
|
|
1119
|
+
canExercise,
|
|
1120
|
+
canTransfer,
|
|
1121
|
+
canMint,
|
|
1122
|
+
spendingApproval
|
|
1123
|
+
]
|
|
1124
|
+
});
|
|
1125
|
+
await (0, viem_actions.waitForTransactionReceipt)(client, { hash });
|
|
1126
|
+
queryClient.invalidateQueries({ queryKey: ["userOperators"] });
|
|
1127
|
+
queryClient.invalidateQueries({ queryKey: ["readContract"] });
|
|
1128
|
+
return hash;
|
|
1129
|
+
};
|
|
1130
|
+
return (0, __tanstack_react_query.useMutation)({ mutationFn: setOperatorPerms });
|
|
1131
|
+
};
|
|
1132
|
+
|
|
1085
1133
|
//#endregion
|
|
1086
1134
|
//#region src/hooks/perps/useMintPerp.ts
|
|
1087
1135
|
const useMintPerp = (marketAddr) => {
|
|
@@ -1089,9 +1137,11 @@ const useMintPerp = (marketAddr) => {
|
|
|
1089
1137
|
const client = (0, wagmi.useClient)();
|
|
1090
1138
|
const { address } = (0, wagmi.useConnection)();
|
|
1091
1139
|
const { operator, address: operatorAddr, signMessage: { mutateAsync: signMessage } } = usePerpsOperator();
|
|
1092
|
-
const { askForApproval } = useApproval();
|
|
1093
1140
|
const { poolManager, poolKey, optionAssetIsToken0, payoutAsset } = useMarketData(marketAddr);
|
|
1094
1141
|
const { tickSpacing } = usePoolData(poolManager, poolKey);
|
|
1142
|
+
const { askForApproval } = useApproval();
|
|
1143
|
+
const { mutateAsync: setOperatorPerms } = useSetOperatorPerms(marketAddr);
|
|
1144
|
+
const { refetch: refetchOperators } = useUserOperators(address, marketAddr);
|
|
1095
1145
|
const { refetch: refetchCurrentTick } = useCurrentTick(poolManager, poolKey);
|
|
1096
1146
|
const mintPerp = async (data) => {
|
|
1097
1147
|
const { optionType, amount, duration, strikeTick } = data;
|
|
@@ -1104,6 +1154,9 @@ const useMintPerp = (marketAddr) => {
|
|
|
1104
1154
|
const market = require_optionUtils.getTimelockMarket(marketAddr, client);
|
|
1105
1155
|
const { data: { currentTick } = {} } = await refetchCurrentTick();
|
|
1106
1156
|
if (currentTick === void 0) throw new Error("Could not fetch current tick");
|
|
1157
|
+
const { data: operators = [] } = await refetchOperators();
|
|
1158
|
+
const userPerms = operatorAddr ? operators.find((o) => o.operatorAddr.toLowerCase() === operatorAddr.toLowerCase()) : void 0;
|
|
1159
|
+
const hasEnoughPerms = userPerms && userPerms.canMint && userPerms.canExtend && userPerms.canExercise;
|
|
1107
1160
|
const validStrikeTick = require_optionUtils.getNearestValidStrikeTick(optionType, optionAssetIsToken0, tickSpacing, currentTick, strikeTick);
|
|
1108
1161
|
const [premium, protocolFee] = await market.read.calculatePremium([
|
|
1109
1162
|
optionType === "CALL" ? 0 : 1,
|
|
@@ -1112,7 +1165,16 @@ const useMintPerp = (marketAddr) => {
|
|
|
1112
1165
|
duration,
|
|
1113
1166
|
0
|
|
1114
1167
|
]);
|
|
1115
|
-
|
|
1168
|
+
const maxPremium = (premium + protocolFee) * 11n / 10n;
|
|
1169
|
+
if (!hasEnoughPerms) await setOperatorPerms({
|
|
1170
|
+
operator: operatorAddr,
|
|
1171
|
+
canMint: true,
|
|
1172
|
+
canExtend: true,
|
|
1173
|
+
canExercise: true,
|
|
1174
|
+
canTransfer: (userPerms === null || userPerms === void 0 ? void 0 : userPerms.canTransfer) || false,
|
|
1175
|
+
spendingApproval: maxPremium
|
|
1176
|
+
});
|
|
1177
|
+
await askForApproval(payoutAsset, marketAddr, maxPremium);
|
|
1116
1178
|
await operator.mintPerp({
|
|
1117
1179
|
marketAddr,
|
|
1118
1180
|
amount,
|
|
@@ -1146,12 +1208,11 @@ const useClosePerp = () => {
|
|
|
1146
1208
|
|
|
1147
1209
|
//#endregion
|
|
1148
1210
|
//#region src/hooks/perps/useUserPerps.ts
|
|
1149
|
-
const EMPTY_ARRAY$1 = [];
|
|
1150
1211
|
const useUserPerps = (marketAddr, userAddr, type) => {
|
|
1151
1212
|
const { operator } = usePerpsOperator();
|
|
1152
1213
|
userAddr = userAddr === null || userAddr === void 0 ? void 0 : userAddr.toLowerCase();
|
|
1153
1214
|
marketAddr = marketAddr === null || marketAddr === void 0 ? void 0 : marketAddr.toLowerCase();
|
|
1154
|
-
|
|
1215
|
+
return (0, __tanstack_react_query.useQuery)({
|
|
1155
1216
|
queryKey: [
|
|
1156
1217
|
"userPerps",
|
|
1157
1218
|
type,
|
|
@@ -1163,10 +1224,6 @@ const useUserPerps = (marketAddr, userAddr, type) => {
|
|
|
1163
1224
|
staleTime: 1e4,
|
|
1164
1225
|
refetchInterval: 1e4
|
|
1165
1226
|
});
|
|
1166
|
-
return {
|
|
1167
|
-
data: data || EMPTY_ARRAY$1,
|
|
1168
|
-
...rest
|
|
1169
|
-
};
|
|
1170
1227
|
};
|
|
1171
1228
|
const useActiveUserPerps = (marketAddr, userAddr) => {
|
|
1172
1229
|
return useUserPerps(marketAddr, userAddr, "active");
|
|
@@ -1245,66 +1302,6 @@ const useOperatorPerms = (marketAddr, userAddr, operatorAddr) => {
|
|
|
1245
1302
|
};
|
|
1246
1303
|
};
|
|
1247
1304
|
|
|
1248
|
-
//#endregion
|
|
1249
|
-
//#region src/hooks/operators/useUserOperators.ts
|
|
1250
|
-
const useUserOperators = (userAddr, marketAddr) => {
|
|
1251
|
-
const { graphqlClient } = useTimelockConfig();
|
|
1252
|
-
const { data, ...rest } = (0, __tanstack_react_query.useQuery)({
|
|
1253
|
-
queryKey: [
|
|
1254
|
-
"userOperators",
|
|
1255
|
-
(userAddr === null || userAddr === void 0 ? void 0 : userAddr.toLowerCase()) || "--",
|
|
1256
|
-
(marketAddr === null || marketAddr === void 0 ? void 0 : marketAddr.toLowerCase()) || "--"
|
|
1257
|
-
],
|
|
1258
|
-
queryFn: async () => {
|
|
1259
|
-
if (!userAddr || !marketAddr) return void 0;
|
|
1260
|
-
return (await graphqlClient.GetUserMarketOperators({
|
|
1261
|
-
userAddr: userAddr.toLowerCase(),
|
|
1262
|
-
marketAddr: marketAddr.toLowerCase()
|
|
1263
|
-
})).UserMarketOperator.map((operator) => ({
|
|
1264
|
-
...operator,
|
|
1265
|
-
spendingApproval: BigInt(operator.spendingApproval),
|
|
1266
|
-
operatorAddr: operator.operator.address.toLowerCase()
|
|
1267
|
-
}));
|
|
1268
|
-
},
|
|
1269
|
-
enabled: !!userAddr && !!marketAddr && !!graphqlClient
|
|
1270
|
-
});
|
|
1271
|
-
return {
|
|
1272
|
-
...rest,
|
|
1273
|
-
data: data || require_optionUtils.EMPTY_ARRAY
|
|
1274
|
-
};
|
|
1275
|
-
};
|
|
1276
|
-
|
|
1277
|
-
//#endregion
|
|
1278
|
-
//#region src/hooks/operators/useSetOperatorPerms.ts
|
|
1279
|
-
const useSetOperatorPerms = (marketAddr) => {
|
|
1280
|
-
const queryClient = (0, __tanstack_react_query.useQueryClient)();
|
|
1281
|
-
const client = (0, wagmi.useClient)();
|
|
1282
|
-
const { address } = (0, wagmi.useConnection)();
|
|
1283
|
-
const { writeContractAsync } = (0, wagmi.useWriteContract)();
|
|
1284
|
-
const setOperatorPerms = async ({ operator, canExtend, canExercise, canTransfer, canMint, spendingApproval }) => {
|
|
1285
|
-
if (!client || !address) throw new Error("Wallet not connected");
|
|
1286
|
-
if (!marketAddr) throw new Error("Market address not available");
|
|
1287
|
-
const hash = await writeContractAsync({
|
|
1288
|
-
address: marketAddr,
|
|
1289
|
-
abi: require_statelessStateView.optionsMarketAbi,
|
|
1290
|
-
functionName: "setOperatorPerms",
|
|
1291
|
-
args: [
|
|
1292
|
-
operator,
|
|
1293
|
-
canExtend,
|
|
1294
|
-
canExercise,
|
|
1295
|
-
canTransfer,
|
|
1296
|
-
canMint,
|
|
1297
|
-
spendingApproval
|
|
1298
|
-
]
|
|
1299
|
-
});
|
|
1300
|
-
await (0, viem_actions.waitForTransactionReceipt)(client, { hash });
|
|
1301
|
-
queryClient.invalidateQueries({ queryKey: ["userOperators"] });
|
|
1302
|
-
queryClient.invalidateQueries({ queryKey: ["readContract"] });
|
|
1303
|
-
return hash;
|
|
1304
|
-
};
|
|
1305
|
-
return (0, __tanstack_react_query.useMutation)({ mutationFn: setOperatorPerms });
|
|
1306
|
-
};
|
|
1307
|
-
|
|
1308
1305
|
//#endregion
|
|
1309
1306
|
//#region src/hooks/pool/usePriceHistory.ts
|
|
1310
1307
|
const usePriceHistory = (pool, token, resolution, startTimestamp, endTimestamp) => {
|