@lit-protocol/vincent-ability-aerodrome-swap 0.1.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 (78) hide show
  1. package/CHANGELOG.md +9 -0
  2. package/CONTRIBUTING.md +5 -0
  3. package/README.md +5 -0
  4. package/dist/CONTRIBUTING.md +5 -0
  5. package/dist/README.md +5 -0
  6. package/dist/package.json +30 -0
  7. package/dist/src/generated/lit-action.js +9 -0
  8. package/dist/src/generated/vincent-ability-metadata.json +3 -0
  9. package/dist/src/generated/vincent-bundled-ability.d.ts +136 -0
  10. package/dist/src/generated/vincent-bundled-ability.d.ts.map +1 -0
  11. package/dist/src/generated/vincent-bundled-ability.js +15 -0
  12. package/dist/src/generated/vincent-bundled-ability.js.map +1 -0
  13. package/dist/src/generated/vincent-bundled-ability.ts +13 -0
  14. package/dist/src/index.d.ts +4 -0
  15. package/dist/src/index.d.ts.map +1 -0
  16. package/dist/src/index.js +8 -0
  17. package/dist/src/index.js.map +1 -0
  18. package/dist/src/lib/ability-checks/check-erc20-allowance.d.ts +10 -0
  19. package/dist/src/lib/ability-checks/check-erc20-allowance.d.ts.map +1 -0
  20. package/dist/src/lib/ability-checks/check-erc20-allowance.js +31 -0
  21. package/dist/src/lib/ability-checks/check-erc20-allowance.js.map +1 -0
  22. package/dist/src/lib/ability-checks/check-erc20-balance.d.ts +9 -0
  23. package/dist/src/lib/ability-checks/check-erc20-balance.d.ts.map +1 -0
  24. package/dist/src/lib/ability-checks/check-erc20-balance.js +25 -0
  25. package/dist/src/lib/ability-checks/check-erc20-balance.js.map +1 -0
  26. package/dist/src/lib/ability-checks/check-native-token-balance.d.ts +7 -0
  27. package/dist/src/lib/ability-checks/check-native-token-balance.d.ts.map +1 -0
  28. package/dist/src/lib/ability-checks/check-native-token-balance.js +18 -0
  29. package/dist/src/lib/ability-checks/check-native-token-balance.js.map +1 -0
  30. package/dist/src/lib/ability-checks/index.d.ts +4 -0
  31. package/dist/src/lib/ability-checks/index.d.ts.map +1 -0
  32. package/dist/src/lib/ability-checks/index.js +7 -0
  33. package/dist/src/lib/ability-checks/index.js.map +1 -0
  34. package/dist/src/lib/ability-helpers/find-supported-token-on-base.d.ts +18 -0
  35. package/dist/src/lib/ability-helpers/find-supported-token-on-base.d.ts.map +1 -0
  36. package/dist/src/lib/ability-helpers/find-supported-token-on-base.js +10 -0
  37. package/dist/src/lib/ability-helpers/find-supported-token-on-base.js.map +1 -0
  38. package/dist/src/lib/ability-helpers/get-erc20-allowance.d.ts +8 -0
  39. package/dist/src/lib/ability-helpers/get-erc20-allowance.d.ts.map +1 -0
  40. package/dist/src/lib/ability-helpers/get-erc20-allowance.js +10 -0
  41. package/dist/src/lib/ability-helpers/get-erc20-allowance.js.map +1 -0
  42. package/dist/src/lib/ability-helpers/get-erc20-contract.d.ts +4 -0
  43. package/dist/src/lib/ability-helpers/get-erc20-contract.d.ts.map +1 -0
  44. package/dist/src/lib/ability-helpers/get-erc20-contract.js +20 -0
  45. package/dist/src/lib/ability-helpers/get-erc20-contract.js.map +1 -0
  46. package/dist/src/lib/ability-helpers/index.d.ts +6 -0
  47. package/dist/src/lib/ability-helpers/index.d.ts.map +1 -0
  48. package/dist/src/lib/ability-helpers/index.js +9 -0
  49. package/dist/src/lib/ability-helpers/index.js.map +1 -0
  50. package/dist/src/lib/ability-helpers/send-aerodrome-swap-tx.d.ts +15 -0
  51. package/dist/src/lib/ability-helpers/send-aerodrome-swap-tx.d.ts.map +1 -0
  52. package/dist/src/lib/ability-helpers/send-aerodrome-swap-tx.js +79 -0
  53. package/dist/src/lib/ability-helpers/send-aerodrome-swap-tx.js.map +1 -0
  54. package/dist/src/lib/ability-helpers/send-erc20-approval-tx.d.ts +15 -0
  55. package/dist/src/lib/ability-helpers/send-erc20-approval-tx.d.ts.map +1 -0
  56. package/dist/src/lib/ability-helpers/send-erc20-approval-tx.js +86 -0
  57. package/dist/src/lib/ability-helpers/send-erc20-approval-tx.js.map +1 -0
  58. package/dist/src/lib/ability-helpers/sign-tx.d.ts +3 -0
  59. package/dist/src/lib/ability-helpers/sign-tx.d.ts.map +1 -0
  60. package/dist/src/lib/ability-helpers/sign-tx.js +28 -0
  61. package/dist/src/lib/ability-helpers/sign-tx.js.map +1 -0
  62. package/dist/src/lib/lit-action.d.ts +2 -0
  63. package/dist/src/lib/lit-action.d.ts.map +1 -0
  64. package/dist/src/lib/lit-action.js +16 -0
  65. package/dist/src/lib/lit-action.js.map +1 -0
  66. package/dist/src/lib/schemas.d.ts +139 -0
  67. package/dist/src/lib/schemas.d.ts.map +1 -0
  68. package/dist/src/lib/schemas.js +128 -0
  69. package/dist/src/lib/schemas.js.map +1 -0
  70. package/dist/src/lib/types.d.ts +43 -0
  71. package/dist/src/lib/types.d.ts.map +1 -0
  72. package/dist/src/lib/types.js +9 -0
  73. package/dist/src/lib/types.js.map +1 -0
  74. package/dist/src/lib/vincent-ability.d.ts +134 -0
  75. package/dist/src/lib/vincent-ability.d.ts.map +1 -0
  76. package/dist/src/lib/vincent-ability.js +322 -0
  77. package/dist/src/lib/vincent-ability.js.map +1 -0
  78. package/package.json +29 -0
@@ -0,0 +1,322 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.vincentAbility = exports.bigintReplacer = void 0;
4
+ const vincent_ability_sdk_1 = require("@lit-protocol/vincent-ability-sdk");
5
+ const sugar_sdk_1 = require("sugar-sdk");
6
+ const ethers_1 = require("ethers");
7
+ const schemas_1 = require("./schemas");
8
+ const types_1 = require("./types");
9
+ const ability_checks_1 = require("./ability-checks");
10
+ const primitives_1 = require("sugar-sdk/primitives");
11
+ const find_supported_token_on_base_1 = require("./ability-helpers/find-supported-token-on-base");
12
+ const ability_helpers_1 = require("./ability-helpers");
13
+ const bigintReplacer = (key, value) => {
14
+ return typeof value === 'bigint' ? value.toString() : value;
15
+ };
16
+ exports.bigintReplacer = bigintReplacer;
17
+ exports.vincentAbility = (0, vincent_ability_sdk_1.createVincentAbility)({
18
+ packageName: '@lit-protocol/vincent-ability-aerodrome-swap',
19
+ abilityDescription: 'Ability to swap tokens on Aerodrome',
20
+ abilityParamsSchema: schemas_1.abilityParamsSchema,
21
+ supportedPolicies: (0, vincent_ability_sdk_1.supportedPoliciesForAbility)([]),
22
+ precheckSuccessSchema: schemas_1.precheckSuccessSchema,
23
+ precheckFailSchema: schemas_1.precheckFailSchema,
24
+ executeSuccessSchema: schemas_1.executeSuccessSchema,
25
+ executeFailSchema: schemas_1.executeFailSchema,
26
+ precheck: async ({ abilityParams }, { succeed, fail, delegation: { delegatorPkpInfo } }) => {
27
+ console.log('[@lit-protocol/vincent-ability-aerodrome-swap precheck]', JSON.stringify(abilityParams, exports.bigintReplacer, 2));
28
+ const { action, alchemyGasSponsor, rpcUrl, tokenInAddress, tokenOutAddress, amountIn } = abilityParams;
29
+ const provider = new ethers_1.ethers.providers.StaticJsonRpcProvider(rpcUrl);
30
+ const sugarConfigBaseMainnet = (0, sugar_sdk_1.getDefaultConfig)({
31
+ chains: [{ chain: sugar_sdk_1.base, rpcUrl }],
32
+ });
33
+ const sugarChainConfigBaseMainnet = (0, primitives_1.getChainConfig)(sugarConfigBaseMainnet.sugarConfig, sugar_sdk_1.base.id);
34
+ // 1. If alchemyGasSponsor is not enabled, we need to check if the delegator has a non-zero amount of native token balance to pay for gas fees
35
+ let checkNativeTokenBalanceResultSuccess;
36
+ if (!alchemyGasSponsor) {
37
+ const checkNativeTokenBalanceResult = await (0, ability_checks_1.checkNativeTokenBalance)({
38
+ provider,
39
+ pkpEthAddress: delegatorPkpInfo.ethAddress,
40
+ });
41
+ if (!checkNativeTokenBalanceResult.success) {
42
+ return fail({
43
+ reason: checkNativeTokenBalanceResult.reason,
44
+ });
45
+ }
46
+ checkNativeTokenBalanceResultSuccess = checkNativeTokenBalanceResult;
47
+ }
48
+ // 2. Validate the input token is supported by Aerodrome on Base Mainnet
49
+ const sugarTokenIn = await (0, find_supported_token_on_base_1.findSupportedTokenOnBase)({
50
+ config: sugarConfigBaseMainnet,
51
+ chainId: sugar_sdk_1.base.id,
52
+ tokenAddress: tokenInAddress,
53
+ });
54
+ if (!sugarTokenIn) {
55
+ return fail({
56
+ reason: `Token with address "${tokenInAddress}" not supported by Aerodrome on Base Mainnet`,
57
+ });
58
+ }
59
+ const requiredTokenInAmount = ethers_1.ethers.BigNumber.from(amountIn);
60
+ // 3. We retrieve the current allowance of the input token for the spender from the delegator
61
+ const checkErc20AllowanceResult = await (0, ability_checks_1.checkErc20Allowance)({
62
+ provider,
63
+ tokenAddress: sugarTokenIn.address,
64
+ owner: delegatorPkpInfo.ethAddress,
65
+ spender: sugarChainConfigBaseMainnet.UNIVERSAL_ROUTER_ADDRESS,
66
+ requiredAllowance: requiredTokenInAmount,
67
+ });
68
+ // 4. If the ability action is approve, we return the current allowance since all
69
+ // precheck is concerned with is whether the delegatee can call execute with the approve ability action which just needs to know if
70
+ // the gas for the approval transaction can be paid for (whether by gas sponsorship, or by the delegator).
71
+ // We return the current allowance out of convenience, so the delegatee can know if
72
+ // the current allowance is sufficient without having to call execute.
73
+ if (action === types_1.AbilityAction.Approve) {
74
+ return succeed({
75
+ nativeTokenBalance: checkNativeTokenBalanceResultSuccess?.ethBalance.toString(),
76
+ currentTokenInAllowanceForSpender: checkErc20AllowanceResult.currentAllowance.toString(),
77
+ requiredTokenInAllowance: checkErc20AllowanceResult.requiredAllowance.toString(),
78
+ spenderAddress: sugarChainConfigBaseMainnet.UNIVERSAL_ROUTER_ADDRESS,
79
+ });
80
+ }
81
+ // 5. If the ability action is swap, and the current allowance is insufficient, we return a failure
82
+ // because the swap cannot currently be performed.
83
+ if (action === types_1.AbilityAction.Swap && !checkErc20AllowanceResult.success) {
84
+ return fail({
85
+ reason: checkErc20AllowanceResult.reason,
86
+ spenderAddress: checkErc20AllowanceResult.spenderAddress,
87
+ tokenAddress: checkErc20AllowanceResult.tokenAddress,
88
+ requiredAllowance: checkErc20AllowanceResult.requiredAllowance.toString(),
89
+ currentAllowance: checkErc20AllowanceResult.currentAllowance.toString(),
90
+ });
91
+ }
92
+ // 6. At this point, the ability action is swap, and the current allowance is sufficient.
93
+ // We now need to check if the current delegator balance of tokenIn is sufficient to perform the swap.
94
+ const checkErc20BalanceResult = await (0, ability_checks_1.checkErc20Balance)({
95
+ provider,
96
+ pkpEthAddress: delegatorPkpInfo.ethAddress,
97
+ tokenAddress: sugarTokenIn.address,
98
+ requiredTokenAmount: requiredTokenInAmount,
99
+ });
100
+ if (!checkErc20BalanceResult.success) {
101
+ return fail({
102
+ reason: checkErc20BalanceResult.reason,
103
+ tokenAddress: checkErc20BalanceResult.tokenAddress,
104
+ requiredTokenAmount: checkErc20BalanceResult.requiredTokenAmount.toString(),
105
+ tokenBalance: checkErc20BalanceResult.tokenBalance.toString(),
106
+ });
107
+ }
108
+ // 7. Validate the tokenOut is supported by Aerodrome on Base Mainnet
109
+ const sugarTokenOut = await (0, find_supported_token_on_base_1.findSupportedTokenOnBase)({
110
+ config: sugarConfigBaseMainnet,
111
+ chainId: sugar_sdk_1.base.id,
112
+ tokenAddress: tokenOutAddress,
113
+ });
114
+ if (!sugarTokenOut) {
115
+ return fail({
116
+ reason: `Token with address "${tokenOutAddress}" not supported by Aerodrome on Base Mainnet`,
117
+ });
118
+ }
119
+ // 8. Validate a swap quote can be generated for the desired swap tokens and amounts
120
+ const quote = await (0, sugar_sdk_1.getQuoteForSwap)({
121
+ config: sugarConfigBaseMainnet,
122
+ fromToken: sugarTokenIn,
123
+ toToken: sugarTokenOut,
124
+ amountIn: requiredTokenInAmount.toBigInt(),
125
+ });
126
+ if (quote === null) {
127
+ return fail({
128
+ reason: 'No Aerodrome swap quote available for the desired swap tokens and amounts',
129
+ });
130
+ }
131
+ // 9. Return success, we've validated:
132
+ // - Native token balance is non-zero or alchemyGasSponsor is enabled
133
+ // - TokenIn is supported by Aerodrome on Base Mainnet
134
+ // - Current allowance of tokenIn for the spender is sufficient
135
+ // - Delegator's balance of tokenIn is sufficient
136
+ // - TokenOut is supported by Aerodrome on Base Mainnet
137
+ // - Swap quote is available for the desired swap tokens and amounts
138
+ return succeed({
139
+ nativeTokenBalance: checkNativeTokenBalanceResultSuccess?.ethBalance.toString(),
140
+ tokenInAddress: sugarTokenIn.address,
141
+ tokenInBalance: checkErc20BalanceResult.tokenBalance.toString(),
142
+ currentTokenInAllowanceForSpender: checkErc20AllowanceResult.currentAllowance.toString(),
143
+ requiredTokenInAllowance: checkErc20AllowanceResult.requiredAllowance.toString(),
144
+ spenderAddress: sugarChainConfigBaseMainnet.UNIVERSAL_ROUTER_ADDRESS,
145
+ quote: {
146
+ tokenInAmount: ethers_1.ethers.utils.formatUnits(quote.amount, sugarTokenIn.decimals),
147
+ tokenOutAmount: ethers_1.ethers.utils.formatUnits(quote.amountOut, sugarTokenOut.decimals),
148
+ priceImpact: quote.priceImpact.toString(),
149
+ },
150
+ });
151
+ },
152
+ execute: async ({ abilityParams }, { succeed, fail, delegation: { delegatorPkpInfo } }) => {
153
+ const { action, alchemyGasSponsor, alchemyGasSponsorApiKey, alchemyGasSponsorPolicyId, rpcUrl, tokenInAddress, tokenOutAddress, amountIn, slippage, gasBufferPercentage, baseFeePerGasBufferPercentage, } = abilityParams;
154
+ const SLIPPAGE = slippage ?? schemas_1.DEFAULT_AERODROME_SWAP_SLIPPAGE;
155
+ const provider = new ethers_1.ethers.providers.StaticJsonRpcProvider(rpcUrl);
156
+ const sugarConfigBaseMainnet = (0, sugar_sdk_1.getDefaultConfig)({
157
+ chains: [{ chain: sugar_sdk_1.base, rpcUrl }],
158
+ });
159
+ const sugarChainConfigBaseMainnet = (0, primitives_1.getChainConfig)(sugarConfigBaseMainnet.sugarConfig, sugar_sdk_1.base.id);
160
+ // 1. Get the Sugar Token for tokenIn
161
+ console.log('[@lit-protocol/vincent-ability-aerodrome-swap execute] Getting Sugar Token for tokenIn');
162
+ const sugarTokenIn = await (0, find_supported_token_on_base_1.findSupportedTokenOnBase)({
163
+ config: sugarConfigBaseMainnet,
164
+ chainId: sugar_sdk_1.base.id,
165
+ tokenAddress: tokenInAddress,
166
+ });
167
+ if (!sugarTokenIn) {
168
+ return fail({
169
+ reason: `Token with address "${tokenInAddress}" not supported by Aerodrome on Base Mainnet`,
170
+ });
171
+ }
172
+ const requiredTokenInAmount = ethers_1.ethers.BigNumber.from(amountIn);
173
+ // 2. If the ability action is approve, we return success if allowance is sufficient, otherwise we send a new approval transaction
174
+ let approvalTxHash;
175
+ let approvalTxUserOperationHash;
176
+ if (action === types_1.AbilityAction.Approve) {
177
+ console.log('[@lit-protocol/vincent-ability-aerodrome-swap execute] Checking if allowance is sufficient');
178
+ const checkErc20AllowanceResult = await (0, ability_checks_1.checkErc20Allowance)({
179
+ provider,
180
+ tokenAddress: sugarTokenIn.address,
181
+ owner: delegatorPkpInfo.ethAddress,
182
+ spender: sugarChainConfigBaseMainnet.UNIVERSAL_ROUTER_ADDRESS,
183
+ requiredAllowance: requiredTokenInAmount,
184
+ });
185
+ if (checkErc20AllowanceResult.success) {
186
+ console.log(`Sufficient allowance already exists for spender ${sugarChainConfigBaseMainnet.UNIVERSAL_ROUTER_ADDRESS}, skipping approval transaction. Current allowance: ${ethers_1.ethers.utils.formatUnits(checkErc20AllowanceResult.currentAllowance, sugarTokenIn.decimals)}`);
187
+ // 2.1 Because the ability action is approve, we return success since the current allowance is sufficient,
188
+ // and a new approval transaction is not needed.
189
+ console.log('[@lit-protocol/vincent-ability-aerodrome-swap execute] Allowance is sufficient, returning success');
190
+ return succeed({
191
+ currentAllowance: checkErc20AllowanceResult.currentAllowance.toString(),
192
+ requiredAllowance: checkErc20AllowanceResult.requiredAllowance.toString(),
193
+ });
194
+ }
195
+ else {
196
+ if (checkErc20AllowanceResult.reason.includes('insufficient ERC20 allowance for spender')) {
197
+ // 2.2 The current allowance is insufficient, so we need to send a new approval transaction
198
+ console.log('[@lit-protocol/vincent-ability-aerodrome-swap execute] Sending new approval transaction');
199
+ const txHash = await (0, ability_helpers_1.sendErc20ApprovalTx)({
200
+ rpcUrl,
201
+ chainId: sugar_sdk_1.base.id,
202
+ pkpEthAddress: delegatorPkpInfo.ethAddress,
203
+ pkpPublicKey: delegatorPkpInfo.publicKey,
204
+ spenderAddress: sugarChainConfigBaseMainnet.UNIVERSAL_ROUTER_ADDRESS,
205
+ allowanceAmount: requiredTokenInAmount.toString(),
206
+ erc20TokenAddress: sugarTokenIn.address,
207
+ alchemyGasSponsor,
208
+ alchemyGasSponsorApiKey,
209
+ alchemyGasSponsorPolicyId,
210
+ });
211
+ if (alchemyGasSponsor) {
212
+ approvalTxUserOperationHash = txHash;
213
+ }
214
+ else {
215
+ approvalTxHash = txHash;
216
+ }
217
+ }
218
+ else {
219
+ // 2.3 Some error other than insufficient allowance occurred, bail out
220
+ console.log('[@lit-protocol/vincent-ability-aerodrome-swap execute] Some error other than insufficient allowance occurred, returning failure');
221
+ return fail({
222
+ reason: checkErc20AllowanceResult.reason,
223
+ });
224
+ }
225
+ }
226
+ }
227
+ // 3. If the ability action is swap, perform the swap
228
+ let swapTxHash;
229
+ let swapTxUserOperationHash;
230
+ if (action === types_1.AbilityAction.Swap) {
231
+ // 3.1 Get the Sugar Token for tokenOut
232
+ console.log('[@lit-protocol/vincent-ability-aerodrome-swap execute] Getting Sugar Token for tokenOut');
233
+ const sugarTokenOut = await (0, find_supported_token_on_base_1.findSupportedTokenOnBase)({
234
+ config: sugarConfigBaseMainnet,
235
+ chainId: sugar_sdk_1.base.id,
236
+ tokenAddress: tokenOutAddress,
237
+ });
238
+ if (!sugarTokenOut) {
239
+ return fail({
240
+ reason: `Token with address "${tokenOutAddress}" not supported by Aerodrome on Base Mainnet`,
241
+ });
242
+ }
243
+ // 3.2 Get the swap quote
244
+ // TODO Wrap in runOnce
245
+ console.log('[@lit-protocol/vincent-ability-aerodrome-swap execute] Getting swap quote');
246
+ const quote = await (0, sugar_sdk_1.getQuoteForSwap)({
247
+ config: sugarConfigBaseMainnet,
248
+ fromToken: sugarTokenIn,
249
+ toToken: sugarTokenOut,
250
+ amountIn: requiredTokenInAmount.toBigInt(),
251
+ });
252
+ if (quote === null) {
253
+ return fail({
254
+ reason: 'No Aerodrome swap quote available for the desired swap tokens and amounts',
255
+ });
256
+ }
257
+ // 3.3 Get the Sugar calldata for the swap quote
258
+ console.log('[@lit-protocol/vincent-ability-aerodrome-swap execute] Getting Sugar calldata for swap quote');
259
+ const sugarCallDataForSwap = await (0, sugar_sdk_1.getCallDataForSwap)({
260
+ config: sugarConfigBaseMainnet,
261
+ fromToken: quote.fromToken,
262
+ toToken: quote.toToken,
263
+ amountIn: requiredTokenInAmount.toBigInt(),
264
+ account: delegatorPkpInfo.ethAddress,
265
+ slippage: SLIPPAGE,
266
+ });
267
+ if (sugarCallDataForSwap === null) {
268
+ return fail({
269
+ reason: 'Unable to generate call data for the Aerodrome swap quote',
270
+ });
271
+ }
272
+ // 3.4 Get the Sugar swap vars for the swap quote
273
+ console.log('[@lit-protocol/vincent-ability-aerodrome-swap execute] Getting Sugar swap vars for swap quote');
274
+ const { chainId, planner, amount } = (0, primitives_1.getSwapVars)(sugarConfigBaseMainnet.sugarConfig, quote, `${Math.ceil(SLIPPAGE * 100)}`, delegatorPkpInfo.ethAddress);
275
+ // 3.5 Get the Sugar execute swap params for the swap quote
276
+ console.log('[@lit-protocol/vincent-ability-aerodrome-swap execute] Getting Sugar execute swap params for swap quote');
277
+ const sugarExecuteSwapParams = (0, primitives_1.executeSwapParams)({
278
+ config: sugarConfigBaseMainnet.sugarConfig,
279
+ chainId,
280
+ commands: planner.commands,
281
+ inputs: planner.inputs,
282
+ value: amount,
283
+ });
284
+ // 3.6 ABI encode the swap params for ethers calldata
285
+ console.log('[@lit-protocol/vincent-ability-aerodrome-swap execute] ABI encoding swap params for ethers calldata');
286
+ const executeInterface = new ethers_1.ethers.utils.Interface(sugarExecuteSwapParams.abi);
287
+ const encodedCalldataForEthers = executeInterface.encodeFunctionData('execute(bytes,bytes[])', [planner.commands, planner.inputs]);
288
+ // 3.7 Send the swap transaction
289
+ console.log('[@lit-protocol/vincent-ability-aerodrome-swap execute] Sending swap transaction');
290
+ const txHash = await (0, ability_helpers_1.sendAerodromeSwapTx)({
291
+ rpcUrl,
292
+ chainId: sugar_sdk_1.base.id,
293
+ pkpEthAddress: delegatorPkpInfo.ethAddress,
294
+ pkpPublicKey: delegatorPkpInfo.publicKey,
295
+ to: sugarChainConfigBaseMainnet.UNIVERSAL_ROUTER_ADDRESS,
296
+ value: amount.toString(),
297
+ calldata: encodedCalldataForEthers,
298
+ gasBufferPercentage,
299
+ baseFeePerGasBufferPercentage,
300
+ alchemyGasSponsor,
301
+ alchemyGasSponsorApiKey,
302
+ alchemyGasSponsorPolicyId,
303
+ });
304
+ if (alchemyGasSponsor) {
305
+ swapTxUserOperationHash = txHash;
306
+ }
307
+ else {
308
+ swapTxHash = txHash;
309
+ }
310
+ }
311
+ // 4. If the ability action is:
312
+ // - Approve, we return the approval transaction hash.
313
+ // - Swap, we return the swap transaction hash.
314
+ return succeed({
315
+ approvalTxHash,
316
+ approvalTxUserOperationHash,
317
+ swapTxHash,
318
+ swapTxUserOperationHash,
319
+ });
320
+ },
321
+ });
322
+ //# 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,29 @@
1
+ {
2
+ "name": "@lit-protocol/vincent-ability-aerodrome-swap",
3
+ "version": "0.1.0",
4
+ "publishConfig": {
5
+ "access": "public"
6
+ },
7
+ "dependencies": {
8
+ "ethers": "^5.8.0",
9
+ "sugar-sdk": "file:vendor/sugar-sdk-0.2.1.tgz",
10
+ "tslib": "2.8.1",
11
+ "zod": "^3.25.64",
12
+ "@lit-protocol/vincent-ability-sdk": "2.3.1"
13
+ },
14
+ "peerDependencies": {
15
+ "@lit-protocol/vincent-app-sdk": "^2.2.3"
16
+ },
17
+ "devDependencies": {
18
+ "@lit-protocol/esbuild-plugin-polyfill-node": "^0.3.0",
19
+ "esbuild": "^0.19.12",
20
+ "ipfs-only-hash": "^4.0.0"
21
+ },
22
+ "main": "./dist/src/index.js",
23
+ "module": "./dist/src/index.js",
24
+ "types": "./dist/src/index.d.ts",
25
+ "files": [
26
+ "dist/**",
27
+ "*.md"
28
+ ]
29
+ }