@andrewkimjoseph/celina-sdk 0.2.5 → 0.2.7

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 (37) hide show
  1. package/build/abis/permit2.d.ts +43 -0
  2. package/build/abis/permit2.js +30 -0
  3. package/build/abis/permit2.js.map +1 -0
  4. package/build/abis/uniswap-state-view.d.ts +34 -0
  5. package/build/abis/uniswap-state-view.js +22 -0
  6. package/build/abis/uniswap-state-view.js.map +1 -0
  7. package/build/abis/uniswap-v4-quoter.d.ts +86 -0
  8. package/build/abis/uniswap-v4-quoter.js +64 -0
  9. package/build/abis/uniswap-v4-quoter.js.map +1 -0
  10. package/build/abis/universal-router.d.ts +16 -0
  11. package/build/abis/universal-router.js +14 -0
  12. package/build/abis/universal-router.js.map +1 -0
  13. package/build/clients/uniswap-sdk.d.ts +4 -0
  14. package/build/clients/uniswap-sdk.js +9 -0
  15. package/build/clients/uniswap-sdk.js.map +1 -0
  16. package/build/config/uniswap.d.ts +36 -0
  17. package/build/config/uniswap.js +67 -0
  18. package/build/config/uniswap.js.map +1 -0
  19. package/build/index.d.ts +4 -0
  20. package/build/index.js +2 -0
  21. package/build/index.js.map +1 -1
  22. package/build/services/mento-fx.service.d.ts +2 -1
  23. package/build/services/mento-fx.service.js +16 -3
  24. package/build/services/mento-fx.service.js.map +1 -1
  25. package/build/services/uniswap-path-router.d.ts +22 -0
  26. package/build/services/uniswap-path-router.js +155 -0
  27. package/build/services/uniswap-path-router.js.map +1 -0
  28. package/build/services/uniswap-pool-discovery.d.ts +21 -0
  29. package/build/services/uniswap-pool-discovery.js +183 -0
  30. package/build/services/uniswap-pool-discovery.js.map +1 -0
  31. package/build/services/uniswap.service.d.ts +53 -0
  32. package/build/services/uniswap.service.js +317 -0
  33. package/build/services/uniswap.service.js.map +1 -0
  34. package/build/utils/erc20-allowance-storage.d.ts +1 -1
  35. package/build/utils/erc20-allowance-storage.js +7 -0
  36. package/build/utils/erc20-allowance-storage.js.map +1 -1
  37. package/package.json +5 -1
@@ -0,0 +1,317 @@
1
+ /**
2
+ * Uniswap v4 swaps on Celo mainnet: quote, estimate, and prepare flows.
3
+ * Uses V4Quoter for pricing and Universal Router + Permit2 for execution calldata.
4
+ */
5
+ import { concat, encodeFunctionData, erc20Abi, formatUnits, maxUint256, } from "viem";
6
+ import { permit2Abi } from "../abis/permit2.js";
7
+ import { universalRouterAbi } from "../abis/universal-router.js";
8
+ import { Actions, CommandType, RoutePlanner, V4Planner, } from "../clients/uniswap-sdk.js";
9
+ import { CELINA_DATA_SUFFIX } from "../config/celina-tag.js";
10
+ import { UNISWAP_V4, uniswapInputTokenAddress, toUniswapRoutingCurrency, } from "../config/uniswap.js";
11
+ import { ALLOWANCE_MAPPING_SLOTS, erc20AllowanceStateOverride, isLikelyTransferFailed, } from "../utils/erc20-allowance-storage.js";
12
+ import { serializePreparedFlow, } from "../types/prepared.js";
13
+ import { findBestUniswapRoute, applySlippage } from "./uniswap-path-router.js";
14
+ import { TokenService } from "./token.service.js";
15
+ const DEFAULT_SLIPPAGE = 0.5;
16
+ const DEFAULT_DEADLINE_MINUTES = 5;
17
+ const PERMIT2_MAX_UINT160 = (1n << 160n) - 1n;
18
+ function taggedCalldata(data) {
19
+ return concat([data, CELINA_DATA_SUFFIX]);
20
+ }
21
+ function trimDisplayDecimals(value) {
22
+ const num = Number(value);
23
+ if (!Number.isFinite(num))
24
+ return value;
25
+ if (Math.abs(num) >= 1000) {
26
+ return num.toLocaleString(undefined, { maximumFractionDigits: 2 });
27
+ }
28
+ if (Math.abs(num) >= 1) {
29
+ return num.toLocaleString(undefined, { maximumFractionDigits: 4 });
30
+ }
31
+ return num.toLocaleString(undefined, { maximumSignificantDigits: 6 });
32
+ }
33
+ function swapOptions(params) {
34
+ const slippageTolerance = params?.slippageTolerance ?? DEFAULT_SLIPPAGE;
35
+ const deadlineMinutes = params?.deadlineMinutes ?? DEFAULT_DEADLINE_MINUTES;
36
+ const deadline = BigInt(Math.floor(Date.now() / 1000) + deadlineMinutes * 60);
37
+ return { slippageTolerance, deadlineMinutes, deadline };
38
+ }
39
+ function formatUniswapError(error, tokenIn, tokenOut) {
40
+ const message = error instanceof Error ? error.message : String(error);
41
+ if (/insufficient liquidity|amountOut.*0/i.test(message)) {
42
+ throw new Error(`Insufficient liquidity in Uniswap v4 pools for ${tokenIn} → ${tokenOut}.`);
43
+ }
44
+ throw error instanceof Error ? error : new Error(message);
45
+ }
46
+ export class UniswapService {
47
+ clientFactory;
48
+ tokenService;
49
+ constructor(clientFactory) {
50
+ this.clientFactory = clientFactory;
51
+ this.tokenService = new TokenService(clientFactory);
52
+ }
53
+ resolvePair(tokenIn, tokenOut) {
54
+ const resolvedIn = this.tokenService.resolveToken(tokenIn);
55
+ const resolvedOut = this.tokenService.resolveToken(tokenOut);
56
+ const routingIn = toUniswapRoutingCurrency(resolvedIn.address);
57
+ const routingOut = toUniswapRoutingCurrency(resolvedOut.address);
58
+ const inputToken = uniswapInputTokenAddress(resolvedIn.address);
59
+ return { resolvedIn, resolvedOut, routingIn, routingOut, inputToken };
60
+ }
61
+ baseQuoteFields(resolvedIn, resolvedOut, amount, expectedOutWei, routeHops, indexSource) {
62
+ return {
63
+ protocol: "uniswap_v4",
64
+ network: "mainnet",
65
+ tokenIn: resolvedIn.symbol,
66
+ tokenOut: resolvedOut.symbol,
67
+ amountIn: amount,
68
+ expectedOut: formatUnits(expectedOutWei, resolvedOut.decimals),
69
+ routeHops,
70
+ indexSource,
71
+ };
72
+ }
73
+ async buildSwapRoute(tokenIn, tokenOut, amount, params) {
74
+ const { public: client } = this.clientFactory.getClients();
75
+ const { resolvedIn, resolvedOut, routingIn, routingOut, inputToken } = this.resolvePair(tokenIn, tokenOut);
76
+ if (routingIn.toLowerCase() === routingOut.toLowerCase()) {
77
+ throw new Error("tokenIn and tokenOut must be different.");
78
+ }
79
+ const amountInWei = this.tokenService.parseAmount(amount, resolvedIn.decimals);
80
+ const quote = await findBestUniswapRoute(client, routingIn, routingOut, amountInWei);
81
+ if (!quote) {
82
+ throw new Error(`No Uniswap v4 route for ${resolvedIn.symbol} → ${resolvedOut.symbol}.`);
83
+ }
84
+ const { slippageTolerance, deadlineMinutes, deadline } = swapOptions(params);
85
+ const amountOutMin = applySlippage(quote.amountOut, slippageTolerance);
86
+ return {
87
+ client,
88
+ resolvedIn,
89
+ resolvedOut,
90
+ routingIn,
91
+ routingOut,
92
+ inputToken,
93
+ amountInWei,
94
+ route: quote.route,
95
+ expectedOutWei: quote.amountOut,
96
+ amountOutMin,
97
+ slippageTolerance,
98
+ deadlineMinutes,
99
+ deadline,
100
+ indexSource: quote.indexSource,
101
+ };
102
+ }
103
+ buildUniversalRouterCalldata(built, _recipient) {
104
+ const { route, amountInWei, amountOutMin, deadline, routingIn, routingOut, } = built;
105
+ const v4Planner = new V4Planner();
106
+ const routePlanner = new RoutePlanner();
107
+ const amountIn = amountInWei.toString();
108
+ const amountOutMinimum = amountOutMin.toString();
109
+ if (route.hops === 1) {
110
+ const poolKey = route.pools[0];
111
+ const zeroForOne = routingIn.toLowerCase() === poolKey.currency0.toLowerCase();
112
+ v4Planner.addAction(Actions.SWAP_EXACT_IN_SINGLE, [
113
+ {
114
+ poolKey,
115
+ zeroForOne,
116
+ amountIn,
117
+ amountOutMinimum,
118
+ hookData: "0x",
119
+ },
120
+ ]);
121
+ v4Planner.addAction(Actions.SETTLE_ALL, [routingIn, amountIn]);
122
+ v4Planner.addAction(Actions.TAKE_ALL, [routingOut, amountOutMinimum]);
123
+ }
124
+ else {
125
+ v4Planner.addAction(Actions.SWAP_EXACT_IN, [
126
+ {
127
+ currencyIn: routingIn,
128
+ path: route.pathKeys,
129
+ amountIn,
130
+ amountOutMinimum,
131
+ },
132
+ ]);
133
+ v4Planner.addAction(Actions.SETTLE_ALL, [routingIn, amountIn]);
134
+ v4Planner.addAction(Actions.TAKE_ALL, [routingOut, amountOutMinimum]);
135
+ }
136
+ routePlanner.addCommand(CommandType.V4_SWAP, [
137
+ v4Planner.actions,
138
+ v4Planner.params,
139
+ ]);
140
+ const data = encodeFunctionData({
141
+ abi: universalRouterAbi,
142
+ functionName: "execute",
143
+ args: [
144
+ routePlanner.commands,
145
+ [v4Planner.finalize()],
146
+ deadline,
147
+ ],
148
+ });
149
+ return {
150
+ to: UNISWAP_V4.universalRouter,
151
+ data,
152
+ value: 0n,
153
+ };
154
+ }
155
+ async getApprovalSteps(client, from, inputToken, tokenSymbol, amountInWei, deadline) {
156
+ if (inputToken === "native") {
157
+ return [];
158
+ }
159
+ const steps = [];
160
+ const token = inputToken;
161
+ const erc20Allowance = await client.readContract({
162
+ address: token,
163
+ abi: erc20Abi,
164
+ functionName: "allowance",
165
+ args: [from, UNISWAP_V4.permit2],
166
+ });
167
+ if (erc20Allowance < amountInWei) {
168
+ steps.push({
169
+ kind: "erc20",
170
+ to: token,
171
+ data: taggedCalldata(encodeFunctionData({
172
+ abi: erc20Abi,
173
+ functionName: "approve",
174
+ args: [UNISWAP_V4.permit2, maxUint256],
175
+ })),
176
+ value: "0",
177
+ description: `Approve ${tokenSymbol} for Uniswap Permit2`,
178
+ });
179
+ }
180
+ const permit2Allowance = await client.readContract({
181
+ address: UNISWAP_V4.permit2,
182
+ abi: permit2Abi,
183
+ functionName: "allowance",
184
+ args: [from, token, UNISWAP_V4.universalRouter],
185
+ });
186
+ const now = BigInt(Math.floor(Date.now() / 1000));
187
+ if (permit2Allowance[0] < amountInWei ||
188
+ BigInt(permit2Allowance[1]) <= now) {
189
+ steps.push({
190
+ kind: "contract",
191
+ to: UNISWAP_V4.permit2,
192
+ data: taggedCalldata(encodeFunctionData({
193
+ abi: permit2Abi,
194
+ functionName: "approve",
195
+ args: [
196
+ token,
197
+ UNISWAP_V4.universalRouter,
198
+ PERMIT2_MAX_UINT160,
199
+ Number(deadline),
200
+ ],
201
+ })),
202
+ value: "0",
203
+ description: `Permit2 approve ${tokenSymbol} for Uniswap Universal Router`,
204
+ });
205
+ }
206
+ return steps;
207
+ }
208
+ async estimateCallGas(client, from, to, data, value = 0n) {
209
+ const gas = await client.estimateGas({
210
+ account: from,
211
+ to,
212
+ data,
213
+ value,
214
+ });
215
+ return gas.toString();
216
+ }
217
+ async estimateSwapGasWithAllowance(client, from, to, data, token, amount) {
218
+ const request = { account: from, to, data, value: 0n };
219
+ for (const mappingSlot of ALLOWANCE_MAPPING_SLOTS) {
220
+ try {
221
+ const gas = await client.estimateGas({
222
+ ...request,
223
+ stateOverride: erc20AllowanceStateOverride(token, from, UNISWAP_V4.permit2, amount, mappingSlot),
224
+ });
225
+ return gas.toString();
226
+ }
227
+ catch (error) {
228
+ if (!isLikelyTransferFailed(error)) {
229
+ throw error;
230
+ }
231
+ }
232
+ }
233
+ throw new Error("Could not estimate Uniswap swap gas: failed to simulate ERC-20 allowance for this token.");
234
+ }
235
+ async getSwapQuote(tokenIn, tokenOut, amount) {
236
+ try {
237
+ const built = await this.buildSwapRoute(tokenIn, tokenOut, amount);
238
+ return {
239
+ ...this.baseQuoteFields(built.resolvedIn, built.resolvedOut, amount, built.expectedOutWei, built.route.hops, built.indexSource),
240
+ route: {
241
+ pools: built.route.pools,
242
+ },
243
+ };
244
+ }
245
+ catch (error) {
246
+ formatUniswapError(error, tokenIn, tokenOut);
247
+ }
248
+ }
249
+ async estimateSwap(from, tokenIn, tokenOut, amount, params) {
250
+ try {
251
+ const built = await this.buildSwapRoute(tokenIn, tokenOut, amount, params);
252
+ const recipient = params?.recipient ?? from;
253
+ const approvalSteps = await this.getApprovalSteps(built.client, from, built.inputToken, built.resolvedIn.symbol, built.amountInWei, built.deadline);
254
+ const swapTx = this.buildUniversalRouterCalldata(built, recipient);
255
+ const taggedSwapData = taggedCalldata(swapTx.data);
256
+ const approvalGasEntries = await Promise.all(approvalSteps.map(async (step) => this.estimateCallGas(built.client, from, step.to, step.data)));
257
+ let swapGas;
258
+ let swapGasEstimated = true;
259
+ try {
260
+ swapGas =
261
+ built.inputToken !== "native" && approvalSteps.length > 0
262
+ ? await this.estimateSwapGasWithAllowance(built.client, from, swapTx.to, taggedSwapData, built.inputToken, built.amountInWei)
263
+ : await this.estimateCallGas(built.client, from, swapTx.to, taggedSwapData);
264
+ }
265
+ catch {
266
+ swapGasEstimated = false;
267
+ }
268
+ return {
269
+ ...this.baseQuoteFields(built.resolvedIn, built.resolvedOut, amount, built.expectedOutWei, built.route.hops, built.indexSource),
270
+ from,
271
+ recipient,
272
+ amountOutMin: formatUnits(built.amountOutMin, built.resolvedOut.decimals),
273
+ approvalStepsNeeded: approvalSteps.length,
274
+ approvalGas: approvalGasEntries,
275
+ swapGas,
276
+ swapGasEstimated,
277
+ slippageTolerance: built.slippageTolerance,
278
+ deadline: built.deadline.toString(),
279
+ deadlineMinutes: built.deadlineMinutes,
280
+ };
281
+ }
282
+ catch (error) {
283
+ formatUniswapError(error, tokenIn, tokenOut);
284
+ }
285
+ }
286
+ async prepareSwap(from, tokenIn, tokenOut, amount, params) {
287
+ try {
288
+ const built = await this.buildSwapRoute(tokenIn, tokenOut, amount, params);
289
+ const recipient = params?.recipient ?? from;
290
+ const displayIn = trimDisplayDecimals(amount);
291
+ const displayOut = trimDisplayDecimals(formatUnits(built.expectedOutWei, built.resolvedOut.decimals));
292
+ const approvalSteps = await this.getApprovalSteps(built.client, from, built.inputToken, built.resolvedIn.symbol, built.amountInWei, built.deadline);
293
+ const swapTx = this.buildUniversalRouterCalldata(built, recipient);
294
+ const steps = [
295
+ ...approvalSteps,
296
+ {
297
+ kind: "contract",
298
+ to: swapTx.to,
299
+ data: taggedCalldata(swapTx.data),
300
+ value: swapTx.value.toString(),
301
+ description: `Swap ${displayIn} ${built.resolvedIn.symbol} → ~${displayOut} ${built.resolvedOut.symbol} via Uniswap v4`,
302
+ },
303
+ ];
304
+ const flow = {
305
+ network: "mainnet",
306
+ from,
307
+ summary: `Uniswap v4: ${displayIn} ${built.resolvedIn.symbol} → ${displayOut} ${built.resolvedOut.symbol}${recipient !== from ? ` (recipient ${recipient})` : ""}`,
308
+ steps,
309
+ };
310
+ return serializePreparedFlow(flow);
311
+ }
312
+ catch (error) {
313
+ formatUniswapError(error, tokenIn, tokenOut);
314
+ }
315
+ }
316
+ }
317
+ //# sourceMappingURL=uniswap.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"uniswap.service.js","sourceRoot":"","sources":["../../src/services/uniswap.service.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { type Address, type Hex, type StateOverride } from "viem";
2
2
  /** Common base slots for ERC-20 allowance mappings (Mento stablecoins use 7). */
3
- declare const ALLOWANCE_MAPPING_SLOTS: readonly [7n, 1n, 0n, 2n, 3n, 4n, 5n, 6n, 8n, 9n, 10n, 11n, 12n, 13n, 14n];
3
+ declare const ALLOWANCE_MAPPING_SLOTS: readonly [7n, 1n, 0n, 2n, 3n, 4n, 5n, 6n, 8n, 9n, 10n, 11n, 12n, 13n, 14n, 15n, 16n, 17n, 18n, 19n, 20n, 51n];
4
4
  export declare function erc20AllowanceStorageSlot(owner: Address, spender: Address, mappingSlot: bigint): Hex;
5
5
  export declare function erc20AllowanceStateOverride(token: Address, owner: Address, spender: Address, amount: bigint, mappingSlot: bigint): StateOverride;
6
6
  export declare function isLikelyTransferFailed(error: unknown): boolean;
@@ -16,6 +16,13 @@ const ALLOWANCE_MAPPING_SLOTS = [
16
16
  12n,
17
17
  13n,
18
18
  14n,
19
+ 15n,
20
+ 16n,
21
+ 17n,
22
+ 18n,
23
+ 19n,
24
+ 20n,
25
+ 51n,
19
26
  ];
20
27
  export function erc20AllowanceStorageSlot(owner, spender, mappingSlot) {
21
28
  const ownerSlot = keccak256(encodeAbiParameters(parseAbiParameters("address, uint256"), [owner, mappingSlot]));
@@ -1 +1 @@
1
- {"version":3,"file":"erc20-allowance-storage.js","sourceRoot":"","sources":["../../src/utils/erc20-allowance-storage.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,EACnB,SAAS,EACT,GAAG,EACH,kBAAkB,EAClB,KAAK,GAIN,MAAM,MAAM,CAAC;AAEd,iFAAiF;AACjF,MAAM,uBAAuB,GAAG;IAC9B,EAAE;IACF,EAAE;IACF,EAAE;IACF,EAAE;IACF,EAAE;IACF,EAAE;IACF,EAAE;IACF,EAAE;IACF,EAAE;IACF,EAAE;IACF,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;CACK,CAAC;AAEX,MAAM,UAAU,yBAAyB,CACvC,KAAc,EACd,OAAgB,EAChB,WAAmB;IAEnB,MAAM,SAAS,GAAG,SAAS,CACzB,mBAAmB,CAAC,kBAAkB,CAAC,kBAAkB,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC,CAClF,CAAC;IACF,OAAO,SAAS,CACd,mBAAmB,CAAC,kBAAkB,CAAC,kBAAkB,CAAC,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,CAClF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,2BAA2B,CACzC,KAAc,EACd,KAAc,EACd,OAAgB,EAChB,MAAc,EACd,WAAmB;IAEnB,OAAO;QACL;YACE,OAAO,EAAE,KAAK;YACd,SAAS,EAAE;gBACT;oBACE,IAAI,EAAE,yBAAyB,CAAC,KAAK,EAAE,OAAO,EAAE,WAAW,CAAC;oBAC5D,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;iBAC1B;aACF;SACF;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,KAAc;IACnD,MAAM,OAAO,GACX,KAAK,YAAY,KAAK;QACpB,CAAC,CAAC,GAAG,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;QAC/E,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACpB,OAAO,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC1C,CAAC;AAED,OAAO,EAAE,uBAAuB,EAAE,CAAC"}
1
+ {"version":3,"file":"erc20-allowance-storage.js","sourceRoot":"","sources":["../../src/utils/erc20-allowance-storage.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,EACnB,SAAS,EACT,GAAG,EACH,kBAAkB,EAClB,KAAK,GAIN,MAAM,MAAM,CAAC;AAEd,iFAAiF;AACjF,MAAM,uBAAuB,GAAG;IAC9B,EAAE;IACF,EAAE;IACF,EAAE;IACF,EAAE;IACF,EAAE;IACF,EAAE;IACF,EAAE;IACF,EAAE;IACF,EAAE;IACF,EAAE;IACF,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;CACK,CAAC;AAEX,MAAM,UAAU,yBAAyB,CACvC,KAAc,EACd,OAAgB,EAChB,WAAmB;IAEnB,MAAM,SAAS,GAAG,SAAS,CACzB,mBAAmB,CAAC,kBAAkB,CAAC,kBAAkB,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC,CAClF,CAAC;IACF,OAAO,SAAS,CACd,mBAAmB,CAAC,kBAAkB,CAAC,kBAAkB,CAAC,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,CAClF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,2BAA2B,CACzC,KAAc,EACd,KAAc,EACd,OAAgB,EAChB,MAAc,EACd,WAAmB;IAEnB,OAAO;QACL;YACE,OAAO,EAAE,KAAK;YACd,SAAS,EAAE;gBACT;oBACE,IAAI,EAAE,yBAAyB,CAAC,KAAK,EAAE,OAAO,EAAE,WAAW,CAAC;oBAC5D,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;iBAC1B;aACF;SACF;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,KAAc;IACnD,MAAM,OAAO,GACX,KAAK,YAAY,KAAK;QACpB,CAAC,CAAC,GAAG,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;QAC/E,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACpB,OAAO,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC1C,CAAC;AAED,OAAO,EAAE,uBAAuB,EAAE,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@andrewkimjoseph/celina-sdk",
3
- "version": "0.2.5",
3
+ "version": "0.2.7",
4
4
  "description": "Celina SDK — Celo mainnet reads and unsigned transaction preparation for frontend apps.",
5
5
  "type": "module",
6
6
  "sideEffects": false,
@@ -45,6 +45,7 @@
45
45
  "viem",
46
46
  "mento",
47
47
  "aave",
48
+ "uniswap",
48
49
  "sdk"
49
50
  ],
50
51
  "author": "Andrew Kim Joseph",
@@ -59,6 +60,9 @@
59
60
  "homepage": "https://andrewkimjoseph.gitbook.io/celina-sdk",
60
61
  "dependencies": {
61
62
  "@mento-protocol/mento-sdk": "^3.2.8",
63
+ "@uniswap/sdk-core": "^7.16.1",
64
+ "@uniswap/universal-router-sdk": "^5.5.1",
65
+ "@uniswap/v4-sdk": "^2.2.1",
62
66
  "viem": "^2.39.3"
63
67
  },
64
68
  "devDependencies": {