@lit-protocol/vincent-ability-hyperliquid 3.0.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.
Files changed (143) hide show
  1. package/CHANGELOG.md +21 -0
  2. package/CONTRIBUTING.md +5 -0
  3. package/README.md +922 -0
  4. package/dist/CHANGELOG.md +21 -0
  5. package/dist/CONTRIBUTING.md +5 -0
  6. package/dist/README.md +922 -0
  7. package/dist/package.json +35 -0
  8. package/dist/src/generated/lit-action.js +9 -0
  9. package/dist/src/generated/vincent-ability-metadata.json +3 -0
  10. package/dist/src/generated/vincent-bundled-ability.d.ts +483 -0
  11. package/dist/src/generated/vincent-bundled-ability.d.ts.map +1 -0
  12. package/dist/src/generated/vincent-bundled-ability.js +15 -0
  13. package/dist/src/generated/vincent-bundled-ability.js.map +1 -0
  14. package/dist/src/generated/vincent-bundled-ability.ts +13 -0
  15. package/dist/src/index.d.ts +13 -0
  16. package/dist/src/index.d.ts.map +1 -0
  17. package/dist/src/index.js +14 -0
  18. package/dist/src/index.js.map +1 -0
  19. package/dist/src/lib/ability-checks/cancel.d.ts +41 -0
  20. package/dist/src/lib/ability-checks/cancel.d.ts.map +1 -0
  21. package/dist/src/lib/ability-checks/cancel.js +58 -0
  22. package/dist/src/lib/ability-checks/cancel.js.map +1 -0
  23. package/dist/src/lib/ability-checks/deposit-usdc.d.ts +18 -0
  24. package/dist/src/lib/ability-checks/deposit-usdc.d.ts.map +1 -0
  25. package/dist/src/lib/ability-checks/deposit-usdc.js +40 -0
  26. package/dist/src/lib/ability-checks/deposit-usdc.js.map +1 -0
  27. package/dist/src/lib/ability-checks/hyperliquid-account-exists.d.ts +6 -0
  28. package/dist/src/lib/ability-checks/hyperliquid-account-exists.d.ts.map +1 -0
  29. package/dist/src/lib/ability-checks/hyperliquid-account-exists.js +22 -0
  30. package/dist/src/lib/ability-checks/hyperliquid-account-exists.js.map +1 -0
  31. package/dist/src/lib/ability-checks/index.d.ts +11 -0
  32. package/dist/src/lib/ability-checks/index.d.ts.map +1 -0
  33. package/dist/src/lib/ability-checks/index.js +25 -0
  34. package/dist/src/lib/ability-checks/index.js.map +1 -0
  35. package/dist/src/lib/ability-checks/is-builder-code-approved.d.ts +14 -0
  36. package/dist/src/lib/ability-checks/is-builder-code-approved.d.ts.map +1 -0
  37. package/dist/src/lib/ability-checks/is-builder-code-approved.js +29 -0
  38. package/dist/src/lib/ability-checks/is-builder-code-approved.js.map +1 -0
  39. package/dist/src/lib/ability-checks/perp.d.ts +23 -0
  40. package/dist/src/lib/ability-checks/perp.d.ts.map +1 -0
  41. package/dist/src/lib/ability-checks/perp.js +47 -0
  42. package/dist/src/lib/ability-checks/perp.js.map +1 -0
  43. package/dist/src/lib/ability-checks/send-perp-usdc.d.ts +26 -0
  44. package/dist/src/lib/ability-checks/send-perp-usdc.d.ts.map +1 -0
  45. package/dist/src/lib/ability-checks/send-perp-usdc.js +38 -0
  46. package/dist/src/lib/ability-checks/send-perp-usdc.js.map +1 -0
  47. package/dist/src/lib/ability-checks/send-spot-asset.d.ts +27 -0
  48. package/dist/src/lib/ability-checks/send-spot-asset.d.ts.map +1 -0
  49. package/dist/src/lib/ability-checks/send-spot-asset.js +59 -0
  50. package/dist/src/lib/ability-checks/send-spot-asset.js.map +1 -0
  51. package/dist/src/lib/ability-checks/spot.d.ts +24 -0
  52. package/dist/src/lib/ability-checks/spot.d.ts.map +1 -0
  53. package/dist/src/lib/ability-checks/spot.js +98 -0
  54. package/dist/src/lib/ability-checks/spot.js.map +1 -0
  55. package/dist/src/lib/ability-checks/transfer-usdc.d.ts +26 -0
  56. package/dist/src/lib/ability-checks/transfer-usdc.d.ts.map +1 -0
  57. package/dist/src/lib/ability-checks/transfer-usdc.js +64 -0
  58. package/dist/src/lib/ability-checks/transfer-usdc.js.map +1 -0
  59. package/dist/src/lib/ability-checks/withdraw-usdc.d.ts +25 -0
  60. package/dist/src/lib/ability-checks/withdraw-usdc.d.ts.map +1 -0
  61. package/dist/src/lib/ability-checks/withdraw-usdc.js +39 -0
  62. package/dist/src/lib/ability-checks/withdraw-usdc.js.map +1 -0
  63. package/dist/src/lib/ability-helpers/approve-builder-code.d.ts +22 -0
  64. package/dist/src/lib/ability-helpers/approve-builder-code.d.ts.map +1 -0
  65. package/dist/src/lib/ability-helpers/approve-builder-code.js +53 -0
  66. package/dist/src/lib/ability-helpers/approve-builder-code.js.map +1 -0
  67. package/dist/src/lib/ability-helpers/cancel-order/cancel-all-orders.d.ts +21 -0
  68. package/dist/src/lib/ability-helpers/cancel-order/cancel-all-orders.d.ts.map +1 -0
  69. package/dist/src/lib/ability-helpers/cancel-order/cancel-all-orders.js +69 -0
  70. package/dist/src/lib/ability-helpers/cancel-order/cancel-all-orders.js.map +1 -0
  71. package/dist/src/lib/ability-helpers/cancel-order/cancel-order.d.ts +25 -0
  72. package/dist/src/lib/ability-helpers/cancel-order/cancel-order.d.ts.map +1 -0
  73. package/dist/src/lib/ability-helpers/cancel-order/cancel-order.js +63 -0
  74. package/dist/src/lib/ability-helpers/cancel-order/cancel-order.js.map +1 -0
  75. package/dist/src/lib/ability-helpers/execute-perp-order.d.ts +65 -0
  76. package/dist/src/lib/ability-helpers/execute-perp-order.d.ts.map +1 -0
  77. package/dist/src/lib/ability-helpers/execute-perp-order.js +110 -0
  78. package/dist/src/lib/ability-helpers/execute-perp-order.js.map +1 -0
  79. package/dist/src/lib/ability-helpers/execute-spot-order.d.ts +50 -0
  80. package/dist/src/lib/ability-helpers/execute-spot-order.d.ts.map +1 -0
  81. package/dist/src/lib/ability-helpers/execute-spot-order.js +84 -0
  82. package/dist/src/lib/ability-helpers/execute-spot-order.js.map +1 -0
  83. package/dist/src/lib/ability-helpers/get-hyperliquid-chain-id.d.ts +3 -0
  84. package/dist/src/lib/ability-helpers/get-hyperliquid-chain-id.d.ts.map +1 -0
  85. package/dist/src/lib/ability-helpers/get-hyperliquid-chain-id.js +15 -0
  86. package/dist/src/lib/ability-helpers/get-hyperliquid-chain-id.js.map +1 -0
  87. package/dist/src/lib/ability-helpers/get-hyperliquid-nonce.d.ts +2 -0
  88. package/dist/src/lib/ability-helpers/get-hyperliquid-nonce.d.ts.map +1 -0
  89. package/dist/src/lib/ability-helpers/get-hyperliquid-nonce.js +10 -0
  90. package/dist/src/lib/ability-helpers/get-hyperliquid-nonce.js.map +1 -0
  91. package/dist/src/lib/ability-helpers/index.d.ts +12 -0
  92. package/dist/src/lib/ability-helpers/index.d.ts.map +1 -0
  93. package/dist/src/lib/ability-helpers/index.js +26 -0
  94. package/dist/src/lib/ability-helpers/index.js.map +1 -0
  95. package/dist/src/lib/ability-helpers/lit-action-pkp-ethers-wallet.d.ts +74 -0
  96. package/dist/src/lib/ability-helpers/lit-action-pkp-ethers-wallet.d.ts.map +1 -0
  97. package/dist/src/lib/ability-helpers/lit-action-pkp-ethers-wallet.js +192 -0
  98. package/dist/src/lib/ability-helpers/lit-action-pkp-ethers-wallet.js.map +1 -0
  99. package/dist/src/lib/ability-helpers/send-deposit-tx.d.ts +15 -0
  100. package/dist/src/lib/ability-helpers/send-deposit-tx.d.ts.map +1 -0
  101. package/dist/src/lib/ability-helpers/send-deposit-tx.js +82 -0
  102. package/dist/src/lib/ability-helpers/send-deposit-tx.js.map +1 -0
  103. package/dist/src/lib/ability-helpers/send-perp-usdc.d.ts +16 -0
  104. package/dist/src/lib/ability-helpers/send-perp-usdc.d.ts.map +1 -0
  105. package/dist/src/lib/ability-helpers/send-perp-usdc.js +49 -0
  106. package/dist/src/lib/ability-helpers/send-perp-usdc.js.map +1 -0
  107. package/dist/src/lib/ability-helpers/send-spot-asset.d.ts +17 -0
  108. package/dist/src/lib/ability-helpers/send-spot-asset.d.ts.map +1 -0
  109. package/dist/src/lib/ability-helpers/send-spot-asset.js +61 -0
  110. package/dist/src/lib/ability-helpers/send-spot-asset.js.map +1 -0
  111. package/dist/src/lib/ability-helpers/sign-tx.d.ts +3 -0
  112. package/dist/src/lib/ability-helpers/sign-tx.d.ts.map +1 -0
  113. package/dist/src/lib/ability-helpers/sign-tx.js +28 -0
  114. package/dist/src/lib/ability-helpers/sign-tx.js.map +1 -0
  115. package/dist/src/lib/ability-helpers/transfer-usdc-to.d.ts +16 -0
  116. package/dist/src/lib/ability-helpers/transfer-usdc-to.d.ts.map +1 -0
  117. package/dist/src/lib/ability-helpers/transfer-usdc-to.js +50 -0
  118. package/dist/src/lib/ability-helpers/transfer-usdc-to.js.map +1 -0
  119. package/dist/src/lib/ability-helpers/withdraw-usdc.d.ts +16 -0
  120. package/dist/src/lib/ability-helpers/withdraw-usdc.d.ts.map +1 -0
  121. package/dist/src/lib/ability-helpers/withdraw-usdc.js +49 -0
  122. package/dist/src/lib/ability-helpers/withdraw-usdc.js.map +1 -0
  123. package/dist/src/lib/constants.d.ts +3 -0
  124. package/dist/src/lib/constants.d.ts.map +1 -0
  125. package/dist/src/lib/constants.js +6 -0
  126. package/dist/src/lib/constants.js.map +1 -0
  127. package/dist/src/lib/lit-action.d.ts +2 -0
  128. package/dist/src/lib/lit-action.d.ts.map +1 -0
  129. package/dist/src/lib/lit-action.js +16 -0
  130. package/dist/src/lib/lit-action.js.map +1 -0
  131. package/dist/src/lib/schemas.d.ts +687 -0
  132. package/dist/src/lib/schemas.d.ts.map +1 -0
  133. package/dist/src/lib/schemas.js +233 -0
  134. package/dist/src/lib/schemas.js.map +1 -0
  135. package/dist/src/lib/types.d.ts +39 -0
  136. package/dist/src/lib/types.d.ts.map +1 -0
  137. package/dist/src/lib/types.js +45 -0
  138. package/dist/src/lib/types.js.map +1 -0
  139. package/dist/src/lib/vincent-ability.d.ts +480 -0
  140. package/dist/src/lib/vincent-ability.d.ts.map +1 -0
  141. package/dist/src/lib/vincent-ability.js +595 -0
  142. package/dist/src/lib/vincent-ability.js.map +1 -0
  143. package/package.json +34 -0
@@ -0,0 +1,595 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.vincentAbility = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const vincent_ability_sdk_1 = require("@lit-protocol/vincent-ability-sdk");
6
+ const ethers_1 = require("ethers");
7
+ const hyperliquid = tslib_1.__importStar(require("@nktkas/hyperliquid"));
8
+ const types_1 = require("./types");
9
+ const schemas_1 = require("./schemas");
10
+ const ability_helpers_1 = require("./ability-helpers");
11
+ const ability_checks_1 = require("./ability-checks");
12
+ const constants_1 = require("./constants");
13
+ /**
14
+ * Convert percentage string to tenths of basis points
15
+ * Example: "0.05" (0.05%) = 50 tenths of basis points
16
+ * Formula: percentage * 1000 = tenths of basis points
17
+ * (since 1% = 100 basis points = 1000 tenths of basis points)
18
+ */
19
+ function percentageToTenthsOfBps(percentageStr) {
20
+ const percentage = parseFloat(percentageStr);
21
+ return Math.round(percentage * 1000);
22
+ }
23
+ exports.vincentAbility = (0, vincent_ability_sdk_1.createVincentAbility)({
24
+ packageName: '@lit-protocol/vincent-ability-hyperliquid',
25
+ abilityDescription: 'Ability to interact with the Hyperliquid API',
26
+ abilityParamsSchema: schemas_1.abilityParamsSchema,
27
+ supportedPolicies: (0, vincent_ability_sdk_1.supportedPoliciesForAbility)([]),
28
+ precheckSuccessSchema: schemas_1.precheckSuccessSchema,
29
+ precheckFailSchema: schemas_1.precheckFailSchema,
30
+ executeSuccessSchema: schemas_1.executeSuccessSchema,
31
+ executeFailSchema: schemas_1.executeFailSchema,
32
+ precheck: async ({ abilityParams }, { succeed, fail, delegation: { delegatorPkpInfo } }) => {
33
+ console.log('[@lit-protocol/vincent-ability-hyperliquid precheck]', JSON.stringify(abilityParams, vincent_ability_sdk_1.bigIntReplacer, 2));
34
+ const { action, arbitrumRpcUrl, useTestnet = false } = abilityParams;
35
+ const transport = new hyperliquid.HttpTransport({ isTestnet: useTestnet });
36
+ const infoClient = new hyperliquid.InfoClient({ transport });
37
+ const hyperLiquidAccountExists = await (0, ability_checks_1.hyperliquidAccountExists)({
38
+ infoClient,
39
+ ethAddress: delegatorPkpInfo.ethAddress,
40
+ });
41
+ let isBuilderApproved;
42
+ if (action === types_1.HyperliquidAction.SPOT_SELL ||
43
+ action === types_1.HyperliquidAction.PERP_LONG ||
44
+ action === types_1.HyperliquidAction.PERP_SHORT) {
45
+ isBuilderApproved = await (0, ability_checks_1.isBuilderCodeApproved)({
46
+ infoClient,
47
+ ethAddress: delegatorPkpInfo.ethAddress,
48
+ builderAddress: constants_1.HYPERLIQUID_BUILDER_ADDRESS,
49
+ });
50
+ }
51
+ if (action === types_1.HyperliquidAction.DEPOSIT) {
52
+ if (useTestnet) {
53
+ return fail({
54
+ action,
55
+ reason: 'Deposit is not supported on Hyperliquid testnet. Please refer to these docs for getting testnet USDC: https://hyperliquid.gitbook.io/hyperliquid-docs/onboarding/testnet-faucet',
56
+ });
57
+ }
58
+ if (!arbitrumRpcUrl) {
59
+ return fail({ action, reason: 'Arbitrum RPC URL is required for precheck' });
60
+ }
61
+ if (!abilityParams.deposit) {
62
+ return fail({ action, reason: 'Deposit parameters are required for precheck' });
63
+ }
64
+ const result = await (0, ability_checks_1.depositPrechecks)({
65
+ provider: new ethers_1.ethers.providers.StaticJsonRpcProvider(arbitrumRpcUrl),
66
+ agentWalletPkpEthAddress: delegatorPkpInfo.ethAddress,
67
+ depositAmountInMicroUsdc: abilityParams.deposit.amount,
68
+ useTestnet,
69
+ });
70
+ if (!result.success) {
71
+ return fail({ action, reason: result.reason, availableBalance: result.availableBalance });
72
+ }
73
+ return succeed({
74
+ action,
75
+ });
76
+ }
77
+ if (!hyperLiquidAccountExists) {
78
+ return fail({
79
+ action,
80
+ reason: 'Hyperliquid account does not exist. Please deposit first.',
81
+ });
82
+ }
83
+ switch (action) {
84
+ case types_1.HyperliquidAction.WITHDRAW: {
85
+ if (!abilityParams.withdraw) {
86
+ return fail({ action, reason: 'Withdraw parameters are required for precheck' });
87
+ }
88
+ const result = await (0, ability_checks_1.withdrawPrechecks)({
89
+ infoClient,
90
+ ethAddress: delegatorPkpInfo.ethAddress,
91
+ params: {
92
+ amount: abilityParams.withdraw.amount,
93
+ },
94
+ });
95
+ if (!result.success) {
96
+ return fail({
97
+ action,
98
+ reason: result.reason,
99
+ availableBalance: result.availableBalance,
100
+ requiredBalance: result.requiredBalance,
101
+ });
102
+ }
103
+ return succeed({
104
+ action,
105
+ availableBalance: result.availableBalance,
106
+ });
107
+ }
108
+ case types_1.HyperliquidAction.SEND_SPOT_ASSET: {
109
+ if (!abilityParams.sendSpotAsset) {
110
+ return fail({ action, reason: 'Send asset parameters are required for precheck' });
111
+ }
112
+ const result = await (0, ability_checks_1.sendSpotAssetPrechecks)({
113
+ infoClient,
114
+ ethAddress: delegatorPkpInfo.ethAddress,
115
+ params: {
116
+ destination: abilityParams.sendSpotAsset.destination,
117
+ token: abilityParams.sendSpotAsset.token,
118
+ amount: abilityParams.sendSpotAsset.amount,
119
+ },
120
+ });
121
+ if (!result.success) {
122
+ return fail({
123
+ action,
124
+ reason: result.reason,
125
+ availableBalance: result.availableBalance,
126
+ requiredBalance: result.requiredBalance,
127
+ });
128
+ }
129
+ return succeed({
130
+ action,
131
+ availableBalance: result.availableBalance,
132
+ });
133
+ }
134
+ case types_1.HyperliquidAction.SEND_PERP_USDC: {
135
+ if (!abilityParams.sendPerpUsdc) {
136
+ return fail({ action, reason: 'Send perp USDC parameters are required for precheck' });
137
+ }
138
+ const result = await (0, ability_checks_1.sendPerpUsdcPrechecks)({
139
+ infoClient,
140
+ ethAddress: delegatorPkpInfo.ethAddress,
141
+ params: {
142
+ destination: abilityParams.sendPerpUsdc.destination,
143
+ amount: abilityParams.sendPerpUsdc.amount,
144
+ },
145
+ });
146
+ if (!result.success) {
147
+ return fail({
148
+ action,
149
+ reason: result.reason,
150
+ availableBalance: result.availableBalance,
151
+ requiredBalance: result.requiredBalance,
152
+ });
153
+ }
154
+ return succeed({
155
+ action,
156
+ availableBalance: result.availableBalance,
157
+ });
158
+ }
159
+ case types_1.HyperliquidAction.TRANSFER_TO_SPOT:
160
+ case types_1.HyperliquidAction.TRANSFER_TO_PERP: {
161
+ if (!abilityParams.transfer) {
162
+ return fail({ action, reason: 'Transfer to spot parameters are required for precheck' });
163
+ }
164
+ const result = await (0, ability_checks_1.transferPrechecks)({
165
+ infoClient,
166
+ ethAddress: delegatorPkpInfo.ethAddress,
167
+ params: {
168
+ amount: abilityParams.transfer.amount,
169
+ to: action === types_1.HyperliquidAction.TRANSFER_TO_SPOT ? 'spot' : 'perp',
170
+ },
171
+ });
172
+ if (!result.success) {
173
+ return fail({
174
+ action,
175
+ reason: result.reason,
176
+ availableBalance: result.availableBalance,
177
+ requiredBalance: result.requiredBalance,
178
+ });
179
+ }
180
+ return succeed({
181
+ action,
182
+ availableBalance: result.availableBalance,
183
+ });
184
+ }
185
+ case types_1.HyperliquidAction.SPOT_BUY:
186
+ case types_1.HyperliquidAction.SPOT_SELL: {
187
+ if (!abilityParams.spot) {
188
+ return fail({ action, reason: 'Spot trade parameters are required for precheck' });
189
+ }
190
+ const checkResult = await (0, ability_checks_1.spotTradePrechecks)({
191
+ transport,
192
+ ethAddress: delegatorPkpInfo.ethAddress,
193
+ params: {
194
+ symbol: abilityParams.spot.symbol,
195
+ price: abilityParams.spot.price,
196
+ size: abilityParams.spot.size,
197
+ isBuy: action === types_1.HyperliquidAction.SPOT_BUY,
198
+ },
199
+ });
200
+ if (!checkResult.success) {
201
+ return fail({
202
+ action,
203
+ reason: checkResult.reason,
204
+ isBuilderApproved,
205
+ });
206
+ }
207
+ return succeed({ action, isBuilderApproved });
208
+ }
209
+ case types_1.HyperliquidAction.PERP_LONG:
210
+ case types_1.HyperliquidAction.PERP_SHORT: {
211
+ if (!abilityParams.perp) {
212
+ return fail({ action, reason: 'Perp trade parameters are required for precheck' });
213
+ }
214
+ const checkResult = await (0, ability_checks_1.perpTradePrechecks)({
215
+ transport,
216
+ ethAddress: delegatorPkpInfo.ethAddress,
217
+ params: {
218
+ symbol: abilityParams.perp.symbol,
219
+ },
220
+ });
221
+ if (!checkResult.success) {
222
+ return fail({ action, reason: checkResult.reason || 'Unknown error', isBuilderApproved });
223
+ }
224
+ return succeed({ action, isBuilderApproved });
225
+ }
226
+ case types_1.HyperliquidAction.CANCEL_ORDER: {
227
+ if (!abilityParams.cancelOrder) {
228
+ return fail({ action, reason: 'Cancel order parameters are required for precheck' });
229
+ }
230
+ const result = await (0, ability_checks_1.cancelOrderPrechecks)({
231
+ infoClient,
232
+ ethAddress: delegatorPkpInfo.ethAddress,
233
+ params: {
234
+ orderId: abilityParams.cancelOrder.orderId,
235
+ },
236
+ });
237
+ if (!result.success) {
238
+ return fail({
239
+ action,
240
+ reason: result.reason,
241
+ });
242
+ }
243
+ return succeed({ action });
244
+ }
245
+ case types_1.HyperliquidAction.CANCEL_ALL_ORDERS_FOR_SYMBOL: {
246
+ if (!abilityParams.cancelAllOrdersForSymbol) {
247
+ return fail({
248
+ action,
249
+ reason: 'Cancel all orders for symbol parameters are required for precheck',
250
+ });
251
+ }
252
+ const result = await (0, ability_checks_1.cancelAllOrdersForSymbolPrechecks)({
253
+ infoClient,
254
+ ethAddress: delegatorPkpInfo.ethAddress,
255
+ params: {
256
+ symbol: abilityParams.cancelAllOrdersForSymbol.symbol,
257
+ },
258
+ });
259
+ if (!result.success) {
260
+ return fail({
261
+ action,
262
+ reason: result.reason,
263
+ });
264
+ }
265
+ return succeed({ action });
266
+ }
267
+ case types_1.HyperliquidAction.APPROVE_BUILDER_CODE: {
268
+ const isBuilderApproved = await (0, ability_checks_1.isBuilderCodeApproved)({
269
+ infoClient,
270
+ ethAddress: delegatorPkpInfo.ethAddress,
271
+ builderAddress: constants_1.HYPERLIQUID_BUILDER_ADDRESS,
272
+ });
273
+ if (isBuilderApproved) {
274
+ return fail({
275
+ action,
276
+ reason: `Builder code ${constants_1.HYPERLIQUID_BUILDER_ADDRESS} is already approved`,
277
+ });
278
+ }
279
+ return succeed({ action });
280
+ }
281
+ default:
282
+ return fail({ action, reason: `Unknown action: ${action}` });
283
+ }
284
+ },
285
+ execute: async ({ abilityParams }, { succeed, fail, delegation: { delegatorPkpInfo } }) => {
286
+ console.log('[@lit-protocol/vincent-ability-hyperliquid execute]', JSON.stringify(abilityParams, vincent_ability_sdk_1.bigIntReplacer, 2));
287
+ const { action, useTestnet = false } = abilityParams;
288
+ const transport = new hyperliquid.HttpTransport({ isTestnet: useTestnet });
289
+ if (action === types_1.HyperliquidAction.SPOT_SELL ||
290
+ action === types_1.HyperliquidAction.PERP_LONG ||
291
+ action === types_1.HyperliquidAction.PERP_SHORT) {
292
+ const isBuilderApproved = await (0, ability_checks_1.isBuilderCodeApproved)({
293
+ infoClient: new hyperliquid.InfoClient({ transport }),
294
+ ethAddress: delegatorPkpInfo.ethAddress,
295
+ builderAddress: constants_1.HYPERLIQUID_BUILDER_ADDRESS,
296
+ });
297
+ if (!isBuilderApproved) {
298
+ console.log(`[@lit-protocol/vincent-ability-hyperliquid execute] Builder code: ${constants_1.HYPERLIQUID_BUILDER_ADDRESS} is not approved. Approving...`);
299
+ const result = await (0, ability_helpers_1.approveBuilderCode)({
300
+ transport,
301
+ pkpPublicKey: delegatorPkpInfo.publicKey,
302
+ builderAddress: constants_1.HYPERLIQUID_BUILDER_ADDRESS,
303
+ maxFeeRate: constants_1.HYPERLIQUID_BUILDER_FEE_RATE,
304
+ useTestnet,
305
+ });
306
+ if (result.approveResult.status === 'ok') {
307
+ console.log(`[@lit-protocol/vincent-ability-hyperliquid execute] Builder code: ${constants_1.HYPERLIQUID_BUILDER_ADDRESS} approved.`);
308
+ }
309
+ else {
310
+ return fail({
311
+ action,
312
+ reason: `Failed to approve builder code: ${constants_1.HYPERLIQUID_BUILDER_ADDRESS}. ${JSON.stringify(result.approveResult, null, 2)}`,
313
+ });
314
+ }
315
+ }
316
+ }
317
+ try {
318
+ switch (action) {
319
+ case types_1.HyperliquidAction.DEPOSIT: {
320
+ if (useTestnet) {
321
+ return fail({
322
+ action,
323
+ reason: 'Deposit is not supported on Hyperliquid testnet. Please refer to these docs for getting testnet USDC: https://hyperliquid.gitbook.io/hyperliquid-docs/onboarding/testnet-faucet',
324
+ });
325
+ }
326
+ if (!abilityParams.deposit) {
327
+ return fail({ action, reason: 'Deposit parameters are required' });
328
+ }
329
+ // Get Arbitrum RPC URL
330
+ const rpcUrl = await Lit.Actions.getRpcUrl({
331
+ chain: 'arbitrum',
332
+ });
333
+ // Encode ERC20 transfer function call data
334
+ const iface = new ethers_1.ethers.utils.Interface(vincent_ability_sdk_1.ERC20_ABI);
335
+ const calldata = iface.encodeFunctionData('transfer', [
336
+ types_1.HYPERLIQUID_BRIDGE_ADDRESS_MAINNET,
337
+ abilityParams.deposit.amount,
338
+ ]);
339
+ // Send deposit transaction using helper
340
+ const txHash = await (0, ability_helpers_1.sendDepositTx)({
341
+ rpcUrl,
342
+ chainId: 42161, // Arbitrum mainnet
343
+ pkpEthAddress: delegatorPkpInfo.ethAddress,
344
+ pkpPublicKey: delegatorPkpInfo.publicKey,
345
+ to: types_1.ARBITRUM_USDC_ADDRESS_MAINNET,
346
+ value: '0x0',
347
+ calldata,
348
+ });
349
+ return succeed({
350
+ action,
351
+ txHash,
352
+ });
353
+ }
354
+ case types_1.HyperliquidAction.WITHDRAW: {
355
+ if (!abilityParams.withdraw) {
356
+ return fail({ action, reason: 'Withdraw parameters are required' });
357
+ }
358
+ const result = await (0, ability_helpers_1.withdrawUsdc)({
359
+ transport,
360
+ pkpPublicKey: delegatorPkpInfo.publicKey,
361
+ amount: abilityParams.withdraw.amount,
362
+ destination: abilityParams.withdraw.destination || delegatorPkpInfo.ethAddress,
363
+ useTestnet,
364
+ });
365
+ // SuccessResponse always has status "ok", errors are thrown as exceptions
366
+ if (result.withdrawResult.status === 'ok') {
367
+ return succeed({ action, withdrawResult: result.withdrawResult });
368
+ }
369
+ // This should not happen with SuccessResponse type, but handle it for safety
370
+ return fail({
371
+ action,
372
+ reason: `Unexpected response status: ${JSON.stringify(result.withdrawResult, null, 2)}`,
373
+ });
374
+ }
375
+ case types_1.HyperliquidAction.SEND_SPOT_ASSET: {
376
+ if (!abilityParams.sendSpotAsset) {
377
+ return fail({ action, reason: 'Send spot asset parameters are required' });
378
+ }
379
+ const result = await (0, ability_helpers_1.sendSpotAsset)({
380
+ transport,
381
+ pkpPublicKey: delegatorPkpInfo.publicKey,
382
+ destination: abilityParams.sendSpotAsset.destination,
383
+ token: abilityParams.sendSpotAsset.token,
384
+ amount: abilityParams.sendSpotAsset.amount,
385
+ useTestnet,
386
+ });
387
+ // SuccessResponse always has status "ok", errors are thrown as exceptions
388
+ if (result.sendResult.status === 'ok') {
389
+ return succeed({ action, sendResult: result.sendResult });
390
+ }
391
+ // This should not happen with SuccessResponse type, but handle it for safety
392
+ return fail({
393
+ action,
394
+ reason: `Unexpected response status: ${JSON.stringify(result.sendResult, null, 2)}`,
395
+ });
396
+ }
397
+ case types_1.HyperliquidAction.SEND_PERP_USDC: {
398
+ if (!abilityParams.sendPerpUsdc) {
399
+ return fail({ action, reason: 'Send perp USDC parameters are required' });
400
+ }
401
+ const result = await (0, ability_helpers_1.sendPerpUsdc)({
402
+ transport,
403
+ pkpPublicKey: delegatorPkpInfo.publicKey,
404
+ destination: abilityParams.sendPerpUsdc.destination,
405
+ amount: abilityParams.sendPerpUsdc.amount,
406
+ useTestnet,
407
+ });
408
+ // SuccessResponse always has status "ok", errors are thrown as exceptions
409
+ if (result.sendResult.status === 'ok') {
410
+ return succeed({ action, sendResult: result.sendResult });
411
+ }
412
+ // This should not happen with SuccessResponse type, but handle it for safety
413
+ return fail({
414
+ action,
415
+ reason: `Unexpected response status: ${JSON.stringify(result.sendResult, null, 2)}`,
416
+ });
417
+ }
418
+ case types_1.HyperliquidAction.TRANSFER_TO_SPOT:
419
+ case types_1.HyperliquidAction.TRANSFER_TO_PERP: {
420
+ if (!abilityParams.transfer) {
421
+ return fail({
422
+ action,
423
+ reason: 'Transfer to parameters are required for transferToSpot/transferToPerp action',
424
+ });
425
+ }
426
+ const result = await (0, ability_helpers_1.transferUsdcTo)({
427
+ transport,
428
+ pkpPublicKey: delegatorPkpInfo.publicKey,
429
+ amount: abilityParams.transfer.amount,
430
+ to: action === 'transferToSpot' ? 'spot' : 'perp',
431
+ useTestnet: abilityParams.useTestnet ?? false,
432
+ });
433
+ // SuccessResponse always has status "ok", errors are thrown as exceptions
434
+ if (result.transferResult.status === 'ok') {
435
+ return succeed({ action, transferResult: result.transferResult });
436
+ }
437
+ // This should not happen with SuccessResponse type, but handle it for safety
438
+ return fail({
439
+ action,
440
+ reason: `Unexpected response status: ${JSON.stringify(result.transferResult, null, 2)}`,
441
+ });
442
+ }
443
+ case types_1.HyperliquidAction.SPOT_BUY:
444
+ case types_1.HyperliquidAction.SPOT_SELL: {
445
+ if (!abilityParams.spot) {
446
+ return fail({ action, reason: 'Spot trade parameters are required' });
447
+ }
448
+ const isSell = action === types_1.HyperliquidAction.SPOT_SELL;
449
+ const builderFee = isSell
450
+ ? {
451
+ builderAddress: constants_1.HYPERLIQUID_BUILDER_ADDRESS,
452
+ feeInTenthsOfBps: percentageToTenthsOfBps(constants_1.HYPERLIQUID_BUILDER_FEE_RATE),
453
+ }
454
+ : undefined;
455
+ const result = await (0, ability_helpers_1.executeSpotOrder)({
456
+ transport,
457
+ pkpPublicKey: delegatorPkpInfo.publicKey,
458
+ params: {
459
+ symbol: abilityParams.spot.symbol,
460
+ price: abilityParams.spot.price,
461
+ size: abilityParams.spot.size,
462
+ isBuy: action === 'spotBuy',
463
+ orderType: abilityParams.spot.orderType,
464
+ builderFee,
465
+ },
466
+ useTestnet,
467
+ });
468
+ if (result.status === 'error') {
469
+ return fail({
470
+ action,
471
+ reason: result.error,
472
+ });
473
+ }
474
+ return succeed({
475
+ action,
476
+ orderResult: result.orderResult,
477
+ });
478
+ }
479
+ case types_1.HyperliquidAction.PERP_LONG:
480
+ case types_1.HyperliquidAction.PERP_SHORT: {
481
+ if (!abilityParams.perp) {
482
+ return fail({ action, reason: 'Perp trade parameters are required' });
483
+ }
484
+ const result = await (0, ability_helpers_1.executePerpOrder)({
485
+ transport,
486
+ pkpPublicKey: delegatorPkpInfo.publicKey,
487
+ params: {
488
+ symbol: abilityParams.perp.symbol,
489
+ price: abilityParams.perp.price,
490
+ size: abilityParams.perp.size,
491
+ isLong: action === 'perpLong',
492
+ reduceOnly: abilityParams.perp.reduceOnly,
493
+ orderType: abilityParams.perp.orderType,
494
+ leverage: {
495
+ leverage: abilityParams.perp.leverage,
496
+ isCross: abilityParams.perp.isCross ?? true,
497
+ },
498
+ builderFee: {
499
+ builderAddress: constants_1.HYPERLIQUID_BUILDER_ADDRESS,
500
+ feeInTenthsOfBps: percentageToTenthsOfBps(constants_1.HYPERLIQUID_BUILDER_FEE_RATE),
501
+ },
502
+ },
503
+ useTestnet,
504
+ });
505
+ if (result.status === 'error') {
506
+ return fail({
507
+ action,
508
+ reason: result.error,
509
+ });
510
+ }
511
+ return succeed({
512
+ action,
513
+ orderResult: result.orderResult,
514
+ });
515
+ }
516
+ case types_1.HyperliquidAction.CANCEL_ORDER: {
517
+ if (!abilityParams.cancelOrder) {
518
+ return fail({ action, reason: 'Cancel order parameters are required' });
519
+ }
520
+ const result = await (0, ability_helpers_1.cancelOrder)({
521
+ transport,
522
+ pkpPublicKey: delegatorPkpInfo.publicKey,
523
+ params: {
524
+ symbol: abilityParams.cancelOrder.symbol,
525
+ orderId: abilityParams.cancelOrder.orderId,
526
+ },
527
+ useTestnet,
528
+ });
529
+ if (result.status === 'error') {
530
+ return fail({
531
+ action,
532
+ reason: result.reason,
533
+ });
534
+ }
535
+ return succeed({
536
+ action,
537
+ cancelResult: result.cancelResult,
538
+ });
539
+ }
540
+ case types_1.HyperliquidAction.CANCEL_ALL_ORDERS_FOR_SYMBOL: {
541
+ if (!abilityParams.cancelAllOrdersForSymbol) {
542
+ return fail({ action, reason: 'Cancel all orders for symbol parameters are required' });
543
+ }
544
+ const result = await (0, ability_helpers_1.cancelAllOrdersForSymbol)({
545
+ transport,
546
+ pkpPublicKey: delegatorPkpInfo.publicKey,
547
+ symbol: abilityParams.cancelAllOrdersForSymbol.symbol,
548
+ useTestnet,
549
+ });
550
+ if (result.status === 'error') {
551
+ return fail({
552
+ action,
553
+ reason: result.reason,
554
+ });
555
+ }
556
+ return succeed({
557
+ action,
558
+ cancelResult: result.cancelResult,
559
+ });
560
+ }
561
+ case types_1.HyperliquidAction.APPROVE_BUILDER_CODE: {
562
+ const result = await (0, ability_helpers_1.approveBuilderCode)({
563
+ transport,
564
+ pkpPublicKey: delegatorPkpInfo.publicKey,
565
+ builderAddress: constants_1.HYPERLIQUID_BUILDER_ADDRESS,
566
+ maxFeeRate: constants_1.HYPERLIQUID_BUILDER_FEE_RATE,
567
+ useTestnet,
568
+ });
569
+ if (result.approveResult.status === 'ok') {
570
+ return succeed({
571
+ action,
572
+ approveResult: result.approveResult,
573
+ });
574
+ }
575
+ else {
576
+ return fail({
577
+ action,
578
+ reason: `Unexpected response status: ${JSON.stringify(result.approveResult, null, 2)}`,
579
+ });
580
+ }
581
+ }
582
+ default:
583
+ return fail({ action, reason: `Unknown action: ${action}` });
584
+ }
585
+ }
586
+ catch (error) {
587
+ console.error('[@lit-protocol/vincent-ability-hyperliquid execute] Error', error);
588
+ return fail({
589
+ action,
590
+ reason: error instanceof Error ? error.message : String(error),
591
+ });
592
+ }
593
+ },
594
+ });
595
+ //# sourceMappingURL=vincent-ability.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vincent-ability.js","sourceRoot":"","sources":["../../../src/lib/vincent-ability.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,34 @@
1
+ {
2
+ "name": "@lit-protocol/vincent-ability-hyperliquid",
3
+ "version": "3.0.0",
4
+ "publishConfig": {
5
+ "access": "public"
6
+ },
7
+ "dependencies": {
8
+ "@nktkas/hyperliquid": "^0.25.7",
9
+ "ethers": "^5.8.0",
10
+ "tslib": "2.8.1",
11
+ "zod": "^3.25.64",
12
+ "@lit-protocol/vincent-ability-sdk": "2.3.4"
13
+ },
14
+ "peerDependencies": {
15
+ "@lit-protocol/vincent-app-sdk": "^2.5.0"
16
+ },
17
+ "devDependencies": {
18
+ "@aa-sdk/core": "^4.53.1",
19
+ "@account-kit/infra": "^4.53.1",
20
+ "@account-kit/smart-contracts": "^4.53.1",
21
+ "@lit-protocol/esbuild-plugin-polyfill-node": "^0.3.0",
22
+ "esbuild": "^0.19.12",
23
+ "ipfs-only-hash": "^4.0.0",
24
+ "@lit-protocol/vincent-e2e-test-utils": "1.1.3",
25
+ "@lit-protocol/vincent-contracts-sdk": "5.0.0"
26
+ },
27
+ "main": "./dist/src/index.js",
28
+ "module": "./dist/src/index.js",
29
+ "types": "./dist/src/index.d.ts",
30
+ "files": [
31
+ "dist/**",
32
+ "*.md"
33
+ ]
34
+ }