@funkit/fun-relay 2.2.0-next.4 → 2.2.0-next.6

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/CHANGELOG.md CHANGED
@@ -1,5 +1,22 @@
1
1
  # @funkit/fun-relay
2
2
 
3
+ ## 2.2.0-next.6
4
+
5
+ ### Patch Changes
6
+
7
+ - 320236b: refactor: refactor approval calldata generation
8
+ - 52406e3: feat(connect,fun-relay): add new lighter spot assets
9
+ - 2f57830: feat: implemented revoke/reset approval mechanics for tokens with non-standard approval implementation
10
+ - ab9c1e9: chore: update assets
11
+ - d4b9ea5: feat(fun-relay): add new lighter routes
12
+
13
+ ## 2.2.0-next.5
14
+
15
+ ### Patch Changes
16
+
17
+ - 0152e69: chore(fun-relay): expose `RelayExecute` type
18
+ - dc9cc8c: add relay request id to error message
19
+
3
20
  ## 2.2.0-next.4
4
21
 
5
22
  ### Patch Changes
package/dist/index.d.ts CHANGED
@@ -5,12 +5,12 @@ export { type ExecuteRelayQuoteParams, type RelayAddress, type RelayChainId, typ
5
5
  export { parseRelayFees } from './src/fees';
6
6
  export { getRelayAssetPriceInfo } from './src/price';
7
7
  export { getRelayAssetInfo } from './src/currency';
8
- export { type GetRelayQuoteParams, type RelayQuote, getRelayQuote, getReferrer, RelayQuoteClientError, } from './src/quote';
8
+ export { type GetRelayQuoteParams, type RelayQuote, type RelayExecute, getRelayQuote, getReferrer, RelayQuoteClientError, } from './src/quote';
9
9
  export { type SolanaAddress, type SolanaTxHash, type SolanaWallet, getSolanaWallet, } from './src/solana';
10
10
  export { type TronAddress, type TronTxHash, type TronWallet, getTronWallet, } from './src/tron';
11
11
  export type { LighterAccountIndex, LighterWallet } from './src/lighter';
12
12
  export { getRelayExecutionRefundState, getRelayExecutionState, isRelayExecutionTerminalStatus, convertFunToRelayTokenAddress, convertFunToRelayChainId, } from './src/utils';
13
13
  export { LogLevel, type RelayExecutionInfo, type RelayExecutionStatus, type RelayTokenPriceInfo, } from './src/types';
14
- export { DYNAMIC_ROUTES, initDynamicRouting } from './src/dynamicRoutes';
14
+ export { DYNAMIC_ROUTES, initDynamicRouting, shouldResetApproval, } from './src/dynamicRoutes';
15
15
  export type { DynamicRoutes, DynamicRoute, DynamicRoutePath, DynamicRouteConfig, DynamicRoutingConfig, IndexedDynamicRoutingConfig, RuleDefinition, RuleDefinitions, } from './src/dynamicRoutes/types';
16
16
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,WAAW,EAChB,KAAK,wBAAwB,EAC7B,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,gBAAgB,EAChB,0BAA0B,GAC3B,MAAM,eAAe,CAAA;AACtB,OAAO,EACL,cAAc,EACd,qBAAqB,EACrB,KAAK,2BAA2B,GACjC,MAAM,cAAc,CAAA;AACrB,OAAO,EACL,kBAAkB,EAClB,wBAAwB,EACxB,sBAAsB,EACtB,6BAA6B,EAC7B,0BAA0B,EAC1B,4BAA4B,EAC5B,kBAAkB,EAClB,qBAAqB,EACrB,4BAA4B,EAC5B,uBAAuB,GACxB,MAAM,iBAAiB,CAAA;AACxB,OAAO,EACL,KAAK,uBAAuB,EAC5B,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,KAAK,kBAAkB,EACvB,KAAK,WAAW,EAChB,KAAK,WAAW,EAChB,KAAK,WAAW,EAChB,iBAAiB,EACjB,qBAAqB,GACtB,MAAM,iBAAiB,CAAA;AACxB,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAC3C,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAA;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AAClD,OAAO,EACL,KAAK,mBAAmB,EACxB,KAAK,UAAU,EACf,aAAa,EACb,WAAW,EACX,qBAAqB,GACtB,MAAM,aAAa,CAAA;AACpB,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,eAAe,GAChB,MAAM,cAAc,CAAA;AACrB,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,UAAU,EACf,KAAK,UAAU,EACf,aAAa,GACd,MAAM,YAAY,CAAA;AACnB,YAAY,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AACvE,OAAO,EACL,4BAA4B,EAC5B,sBAAsB,EACtB,8BAA8B,EAC9B,6BAA6B,EAC7B,wBAAwB,GACzB,MAAM,aAAa,CAAA;AACpB,OAAO,EACL,QAAQ,EACR,KAAK,kBAAkB,EACvB,KAAK,oBAAoB,EACzB,KAAK,mBAAmB,GACzB,MAAM,aAAa,CAAA;AACpB,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAA;AACxE,YAAY,EACV,aAAa,EACb,YAAY,EACZ,gBAAgB,EAChB,kBAAkB,EAClB,oBAAoB,EACpB,2BAA2B,EAC3B,cAAc,EACd,eAAe,GAChB,MAAM,2BAA2B,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,WAAW,EAChB,KAAK,wBAAwB,EAC7B,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,gBAAgB,EAChB,0BAA0B,GAC3B,MAAM,eAAe,CAAA;AACtB,OAAO,EACL,cAAc,EACd,qBAAqB,EACrB,KAAK,2BAA2B,GACjC,MAAM,cAAc,CAAA;AACrB,OAAO,EACL,kBAAkB,EAClB,wBAAwB,EACxB,sBAAsB,EACtB,6BAA6B,EAC7B,0BAA0B,EAC1B,4BAA4B,EAC5B,kBAAkB,EAClB,qBAAqB,EACrB,4BAA4B,EAC5B,uBAAuB,GACxB,MAAM,iBAAiB,CAAA;AACxB,OAAO,EACL,KAAK,uBAAuB,EAC5B,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,KAAK,kBAAkB,EACvB,KAAK,WAAW,EAChB,KAAK,WAAW,EAChB,KAAK,WAAW,EAChB,iBAAiB,EACjB,qBAAqB,GACtB,MAAM,iBAAiB,CAAA;AACxB,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAC3C,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAA;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AAClD,OAAO,EACL,KAAK,mBAAmB,EACxB,KAAK,UAAU,EACf,KAAK,YAAY,EACjB,aAAa,EACb,WAAW,EACX,qBAAqB,GACtB,MAAM,aAAa,CAAA;AACpB,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,eAAe,GAChB,MAAM,cAAc,CAAA;AACrB,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,UAAU,EACf,KAAK,UAAU,EACf,aAAa,GACd,MAAM,YAAY,CAAA;AACnB,YAAY,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AACvE,OAAO,EACL,4BAA4B,EAC5B,sBAAsB,EACtB,8BAA8B,EAC9B,6BAA6B,EAC7B,wBAAwB,GACzB,MAAM,aAAa,CAAA;AACpB,OAAO,EACL,QAAQ,EACR,KAAK,kBAAkB,EACvB,KAAK,oBAAoB,EACzB,KAAK,mBAAmB,GACzB,MAAM,aAAa,CAAA;AACpB,OAAO,EACL,cAAc,EACd,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,qBAAqB,CAAA;AAC5B,YAAY,EACV,aAAa,EACb,YAAY,EACZ,gBAAgB,EAChB,kBAAkB,EAClB,oBAAoB,EACpB,2BAA2B,EAC3B,cAAc,EACd,eAAe,GAChB,MAAM,2BAA2B,CAAA"}
package/dist/index.js CHANGED
@@ -51,7 +51,8 @@ __export(index_exports, {
51
51
  initDynamicRouting: () => initDynamicRouting,
52
52
  initializeRelayClient: () => initializeRelayClient,
53
53
  isRelayExecutionTerminalStatus: () => isRelayExecutionTerminalStatus,
54
- parseRelayFees: () => parseRelayFees
54
+ parseRelayFees: () => parseRelayFees,
55
+ shouldResetApproval: () => shouldResetApproval
55
56
  });
56
57
  module.exports = __toCommonJS(index_exports);
57
58
 
@@ -625,9 +626,9 @@ function getReferrer(clientId) {
625
626
  return clientId ? `${FUN_RELAY_REFERRER}|${clientId}` : FUN_RELAY_REFERRER;
626
627
  }
627
628
  var RelayQuoteClientError = class extends Error {
628
- constructor(statusCode, relayErrorCode, message) {
629
+ constructor(statusCode, relayErrorCode, message, requestId = "") {
629
630
  super(
630
- `An error occurred trying to generate a relay quote: ${relayErrorCode} - ${message}`
631
+ `An error occurred trying to generate a relay quote: ${relayErrorCode} - ReqId ${requestId || "NO_REQ_ID"} - ${message}`
631
632
  );
632
633
  this.statusCode = statusCode;
633
634
  this.relayErrorCode = relayErrorCode;
@@ -819,7 +820,8 @@ async function getRelayQuote({
819
820
  throw new RelayQuoteClientError(
820
821
  apiError.statusCode,
821
822
  rawError.errorCode,
822
- rawError.message ?? apiError.message
823
+ rawError.message ?? apiError.message,
824
+ rawError.requestId
823
825
  );
824
826
  }
825
827
  }
@@ -871,8 +873,8 @@ function getTronWallet(walletAddress, tronWeb) {
871
873
  }
872
874
 
873
875
  // src/dynamicRoutes/lighter.ts
874
- var import_viem4 = require("viem");
875
- var import_chains2 = require("viem/chains");
876
+ var import_viem5 = require("viem");
877
+ var import_chains3 = require("viem/chains");
876
878
 
877
879
  // src/dynamicRoutes/abi.ts
878
880
  var UNWRAP_AND_CALL_ABI = [
@@ -1315,7 +1317,7 @@ var ASSET_LOGO_SRCS = {
1315
1317
  IMX: "https://sdk-cdn.fun.xyz/images/imx.svg",
1316
1318
  INJ: "https://sdk-cdn.fun.xyz/images/inj.svg",
1317
1319
  LDO: "https://sdk-cdn.fun.xyz/images/ldo.svg",
1318
- LINK: "https://sdk-cdn.fun.xyz/images/link.svg",
1320
+ LINK: "https://sdk-cdn.fun.xyz/images/link.png",
1319
1321
  LUCK: "https://sdk-cdn.fun.xyz/images/luck.png",
1320
1322
  MATIC: "https://sdk-cdn.fun.xyz/images/matic.svg",
1321
1323
  MFER: "https://sdk-cdn.fun.xyz/images/mfer.png",
@@ -1333,7 +1335,7 @@ var ASSET_LOGO_SRCS = {
1333
1335
  SOL: "https://sdk-cdn.fun.xyz/images/sol.svg",
1334
1336
  SUSDS: "https://sdk-cdn.fun.xyz/images/susds.svg",
1335
1337
  TYBG: "https://sdk-cdn.fun.xyz/images/tybg.png",
1336
- UNI: "https://sdk-cdn.fun.xyz/images/uni.svg",
1338
+ UNI: "https://sdk-cdn.fun.xyz/images/uni.png",
1337
1339
  USDC: "https://sdk-cdn.fun.xyz/images/usdc.svg",
1338
1340
  "USDC.E": "https://sdk-cdn.fun.xyz/images/usdc.svg",
1339
1341
  USDE: "https://sdk-cdn.fun.xyz/images/usde.svg",
@@ -1374,7 +1376,8 @@ var ASSET_LOGO_SRCS = {
1374
1376
  MON: "https://sdk-cdn.fun.xyz/images/monad.svg",
1375
1377
  WMON: "https://sdk-cdn.fun.xyz/images/wmon.svg",
1376
1378
  AUSD: "https://sdk-cdn.fun.xyz/images/ausd.svg",
1377
- SUSHI: "https://sdk-cdn.fun.xyz/images/sushi.svg"
1379
+ SUSHI: "https://sdk-cdn.fun.xyz/images/sushi.svg",
1380
+ SKY: "https://sdk-cdn.fun.xyz/images/sky.svg"
1378
1381
  };
1379
1382
 
1380
1383
  // src/dynamicRoutes/consts.ts
@@ -1388,6 +1391,25 @@ var tokenAddresses = {
1388
1391
  },
1389
1392
  USDC: {
1390
1393
  [import_chains.mainnet.id]: (0, import_viem2.getAddress)("0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48")
1394
+ },
1395
+ // LIT is currently unused
1396
+ LIT: {
1397
+ [import_chains.mainnet.id]: (0, import_viem2.getAddress)("0x232CE3bd40fCd6f80f3d55A522d03f25Df784Ee2")
1398
+ },
1399
+ LINK: {
1400
+ [import_chains.mainnet.id]: (0, import_viem2.getAddress)("0x514910771AF9Ca656af840dff83E8264EcF986CA")
1401
+ },
1402
+ UNI: {
1403
+ [import_chains.mainnet.id]: (0, import_viem2.getAddress)("0x1f9840a85d5aF5bf1D1762F925BDADdC4201F984")
1404
+ },
1405
+ AAVE: {
1406
+ [import_chains.mainnet.id]: (0, import_viem2.getAddress)("0x7Fc66500c84A76Ad7e9c93437bFc5Ac33E2DDaE9")
1407
+ },
1408
+ SKY: {
1409
+ [import_chains.mainnet.id]: (0, import_viem2.getAddress)("0x56072C95FAA701256059aa122697B133aDEd9279")
1410
+ },
1411
+ LDO: {
1412
+ [import_chains.mainnet.id]: (0, import_viem2.getAddress)("0x5A98FcBEA516Cf06857215779Fd812CA3beF1B32")
1391
1413
  }
1392
1414
  };
1393
1415
  var UNWRAP_AND_CALL_ADDRESS = {
@@ -1402,6 +1424,8 @@ var LIGHTER_DEPOSIT_ADDRESS = (0, import_viem2.getAddress)(
1402
1424
  var MATCH_ALL_CONDITION = "*";
1403
1425
 
1404
1426
  // src/dynamicRoutes/utils.ts
1427
+ var import_viem4 = require("viem");
1428
+ var import_chains2 = require("viem/chains");
1405
1429
  var createPath = (config) => {
1406
1430
  return config;
1407
1431
  };
@@ -1484,6 +1508,35 @@ var initDynamicRouting = (dynamicRoutes, dynamicRoutingConfig) => {
1484
1508
  );
1485
1509
  return indexedDynamicRoutingConfig;
1486
1510
  };
1511
+ var MAX_APPROVAL = "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff";
1512
+ var getApprovalCalldata = ({
1513
+ tokenAddress,
1514
+ spenderAddress,
1515
+ amount
1516
+ }) => {
1517
+ return {
1518
+ contractAbi: import_viem4.erc20Abi,
1519
+ contractAddress: tokenAddress,
1520
+ functionName: "approve",
1521
+ functionArgs: [spenderAddress, amount]
1522
+ };
1523
+ };
1524
+ var getResetApprovalCalldata = ({
1525
+ tokenAddress,
1526
+ spenderAddress
1527
+ }) => {
1528
+ return getApprovalCalldata({
1529
+ tokenAddress,
1530
+ spenderAddress,
1531
+ amount: "0"
1532
+ });
1533
+ };
1534
+ var RESET_APPROVAL_TOKENS = [tokenAddresses.LDO[import_chains2.mainnet.id]].map(
1535
+ (address) => address.toLowerCase()
1536
+ );
1537
+ var shouldResetApproval = (tokenAddress) => {
1538
+ return RESET_APPROVAL_TOKENS.includes(tokenAddress.toLowerCase());
1539
+ };
1487
1540
 
1488
1541
  // src/dynamicRoutes/lighter.ts
1489
1542
  var NATIVE_TOKEN = FUNKIT_NATIVE_TOKEN;
@@ -1492,23 +1545,40 @@ var RELAY_LIGHTER_ETH_SPOT_ADDRESS = "0x0000000000000000000000000000000000000001
1492
1545
  var RELAY_LIGHTER_USDC_PERPS_ADDRESS = "0x0000000000000000000000000000000000000000";
1493
1546
  var TICK_SIZE_FOR_ASSET_INDEX = {
1494
1547
  [3 /* USDC */]: BigInt(1),
1495
- [1 /* ETH */]: BigInt(10 ** 10)
1548
+ [1 /* ETH */]: BigInt(10 ** 10),
1549
+ [2 /* LIT */]: BigInt(10 ** 10),
1550
+ [5 /* LINK */]: BigInt(10 ** 10),
1551
+ [6 /* UNI */]: BigInt(10 ** 10),
1552
+ [7 /* AAVE */]: BigInt(10 ** 10),
1553
+ [8 /* SKY */]: BigInt(10 ** 10),
1554
+ [9 /* LDO */]: BigInt(10 ** 10)
1496
1555
  };
1497
1556
  var DEPOSIT_TOKEN_FOR_ASSET_INDEX = {
1498
- [3 /* USDC */]: tokenAddresses.USDC[import_chains2.mainnet.id],
1499
- [1 /* ETH */]: NATIVE_TOKEN
1557
+ [3 /* USDC */]: tokenAddresses.USDC[import_chains3.mainnet.id],
1558
+ [1 /* ETH */]: NATIVE_TOKEN,
1559
+ [2 /* LIT */]: tokenAddresses.LIT[import_chains3.mainnet.id],
1560
+ [5 /* LINK */]: tokenAddresses.LINK[import_chains3.mainnet.id],
1561
+ [6 /* UNI */]: tokenAddresses.UNI[import_chains3.mainnet.id],
1562
+ [7 /* AAVE */]: tokenAddresses.AAVE[import_chains3.mainnet.id],
1563
+ [8 /* SKY */]: tokenAddresses.SKY[import_chains3.mainnet.id],
1564
+ [9 /* LDO */]: tokenAddresses.LDO[import_chains3.mainnet.id]
1500
1565
  };
1501
1566
  var USDC_PERPS_SYMBOL = "USDC (Perps)";
1502
1567
  var ETH_SPOT_SYMBOL = "ETH (Spot)";
1568
+ var LINK_SPOT_SYMBOL = "LINK (Spot)";
1569
+ var UNI_SPOT_SYMBOL = "UNI (Spot)";
1570
+ var AAVE_SPOT_SYMBOL = "AAVE (Spot)";
1571
+ var SKY_SPOT_SYMBOL = "SKY (Spot)";
1572
+ var LDO_SPOT_SYMBOL = "LDO (Spot)";
1503
1573
  var generateLighterMainnetDepositActions = ({
1504
1574
  address,
1505
1575
  assetIndex,
1506
1576
  routeType
1507
1577
  }) => {
1508
- const depositSelector = (0, import_viem4.toFunctionSelector)(
1578
+ const depositSelector = (0, import_viem5.toFunctionSelector)(
1509
1579
  "deposit(address,uint16,uint8,uint256)"
1510
1580
  );
1511
- const encodedLighterParams = (0, import_viem4.encodeAbiParameters)(
1581
+ const encodedLighterParams = (0, import_viem5.encodeAbiParameters)(
1512
1582
  [
1513
1583
  { type: "address" },
1514
1584
  { type: "uint16" },
@@ -1517,12 +1587,12 @@ var generateLighterMainnetDepositActions = ({
1517
1587
  ],
1518
1588
  [address, assetIndex, routeType, AMOUNT_PLACEHOLDER]
1519
1589
  );
1520
- const lighterDepositCalldata = (0, import_viem4.concat)([depositSelector, encodedLighterParams]);
1590
+ const lighterDepositCalldata = (0, import_viem5.concat)([depositSelector, encodedLighterParams]);
1521
1591
  const depositToken = DEPOSIT_TOKEN_FOR_ASSET_INDEX[assetIndex];
1522
1592
  const tickSize = TICK_SIZE_FOR_ASSET_INDEX[assetIndex];
1523
1593
  const dustRecipient = address;
1524
1594
  if (depositToken === NATIVE_TOKEN) {
1525
- const vaultWrapperCalldata = (0, import_viem4.encodeFunctionData)({
1595
+ const vaultWrapperCalldata = (0, import_viem5.encodeFunctionData)({
1526
1596
  abi: VAULT_DEPOSITOR_ABI,
1527
1597
  functionName: "depositWithTick",
1528
1598
  args: [
@@ -1542,22 +1612,18 @@ var generateLighterMainnetDepositActions = ({
1542
1612
  });
1543
1613
  return [
1544
1614
  // Step 1: Approve WETH to UnwrapWETHAndCall
1545
- {
1546
- contractAbi: import_viem3.erc20Abi,
1547
- contractAddress: tokenAddresses.WETH[import_chains2.mainnet.id],
1548
- functionName: "approve",
1549
- functionArgs: [
1550
- UNWRAP_AND_CALL_ADDRESS[import_chains2.mainnet.id],
1551
- "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
1552
- ]
1553
- },
1615
+ getApprovalCalldata({
1616
+ tokenAddress: tokenAddresses.WETH[import_chains3.mainnet.id],
1617
+ spenderAddress: UNWRAP_AND_CALL_ADDRESS[import_chains3.mainnet.id],
1618
+ amount: MAX_APPROVAL
1619
+ }),
1554
1620
  // Step 2: UnwrapWETHAndCall pulls WETH, unwraps to ETH, sends to VaultWrapper, calls deposit
1555
1621
  {
1556
1622
  contractAbi: UNWRAP_AND_CALL_ABI,
1557
- contractAddress: UNWRAP_AND_CALL_ADDRESS[import_chains2.mainnet.id],
1623
+ contractAddress: UNWRAP_AND_CALL_ADDRESS[import_chains3.mainnet.id],
1558
1624
  functionName: "unwrapAndCall",
1559
1625
  functionArgs: [
1560
- VAULT_DEPOSITOR_ADDRESS[import_chains2.mainnet.id],
1626
+ VAULT_DEPOSITOR_ADDRESS[import_chains3.mainnet.id],
1561
1627
  // target (VaultWrapper)
1562
1628
  vaultWrapperCalldata
1563
1629
  // VaultWrapper.deposit() calldata
@@ -1565,52 +1631,53 @@ var generateLighterMainnetDepositActions = ({
1565
1631
  }
1566
1632
  ];
1567
1633
  }
1568
- if (depositToken === tokenAddresses.USDC[import_chains2.mainnet.id]) {
1569
- return [
1570
- // Step 1: Approve USDC to VaultDepositor
1571
- {
1572
- contractAbi: import_viem3.erc20Abi,
1573
- contractAddress: tokenAddresses.USDC[import_chains2.mainnet.id],
1574
- functionName: "approve",
1575
- functionArgs: [
1576
- VAULT_DEPOSITOR_ADDRESS[import_chains2.mainnet.id],
1577
- "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
1578
- // Max approval
1579
- ]
1580
- },
1581
- // Step 2: VaultDepositor pulls USDC and calls Lighter deposit
1582
- {
1583
- contractAbi: VAULT_DEPOSITOR_ABI,
1584
- contractAddress: VAULT_DEPOSITOR_ADDRESS[import_chains2.mainnet.id],
1585
- functionName: "depositWithTick",
1586
- functionArgs: [
1587
- tokenAddresses.USDC[import_chains2.mainnet.id],
1588
- // token (USDC)
1589
- LIGHTER_DEPOSIT_ADDRESS,
1590
- // vault (Lighter deposit contract)
1591
- lighterDepositCalldata,
1592
- // callData
1593
- 0n,
1594
- // minAmountOut
1595
- tickSize,
1596
- // tickSize
1597
- dustRecipient
1598
- // dustRecipient
1599
- ]
1600
- }
1601
- ];
1602
- }
1634
+ const resetApprovalNeeded = shouldResetApproval(depositToken);
1635
+ return [
1636
+ // Special handling of LDO token as it requires approval reset before approval can be set to a new value due to non-standard implementation of the approve function.
1637
+ ...resetApprovalNeeded ? [
1638
+ getResetApprovalCalldata({
1639
+ tokenAddress: depositToken,
1640
+ spenderAddress: VAULT_DEPOSITOR_ADDRESS[import_chains3.mainnet.id]
1641
+ })
1642
+ ] : [],
1643
+ // Step 1: Approve deposit token to VaultDepositor
1644
+ getApprovalCalldata({
1645
+ tokenAddress: depositToken,
1646
+ spenderAddress: VAULT_DEPOSITOR_ADDRESS[import_chains3.mainnet.id],
1647
+ amount: MAX_APPROVAL
1648
+ }),
1649
+ // Step 2: VaultDepositor pulls deposit token and calls Lighter deposit
1650
+ {
1651
+ contractAbi: VAULT_DEPOSITOR_ABI,
1652
+ contractAddress: VAULT_DEPOSITOR_ADDRESS[import_chains3.mainnet.id],
1653
+ functionName: "depositWithTick",
1654
+ functionArgs: [
1655
+ depositToken,
1656
+ // token (deposit token)
1657
+ LIGHTER_DEPOSIT_ADDRESS,
1658
+ // vault (Lighter deposit contract)
1659
+ lighterDepositCalldata,
1660
+ // callData
1661
+ 0n,
1662
+ // minAmountOut
1663
+ tickSize,
1664
+ // tickSize
1665
+ dustRecipient
1666
+ // dustRecipient
1667
+ ]
1668
+ }
1669
+ ];
1603
1670
  };
1604
1671
  var LIGHTER_USDC_PERPS_FUN_MAINNET_DEPOSIT = createPath({
1605
- targetChain: import_chains2.mainnet.id.toString(),
1606
- targetAsset: tokenAddresses.USDC[import_chains2.mainnet.id],
1672
+ targetChain: import_chains3.mainnet.id.toString(),
1673
+ targetAsset: tokenAddresses.USDC[import_chains3.mainnet.id],
1607
1674
  targetAssetTicker: USDC_PERPS_SYMBOL,
1608
1675
  iconSrc: ASSET_LOGO_SRCS.USDC,
1609
1676
  generateActionsParams: (address) => async (_finalTargetAssetAmount, outputConfig) => {
1610
1677
  if (!outputConfig) {
1611
1678
  return [];
1612
1679
  }
1613
- if (outputConfig.targetChain !== import_chains2.mainnet.id.toString()) {
1680
+ if (outputConfig.targetChain !== import_chains3.mainnet.id.toString()) {
1614
1681
  return [];
1615
1682
  }
1616
1683
  return generateLighterMainnetDepositActions({
@@ -1621,15 +1688,15 @@ var LIGHTER_USDC_PERPS_FUN_MAINNET_DEPOSIT = createPath({
1621
1688
  }
1622
1689
  });
1623
1690
  var LIGHTER_ETH_SPOT_FUN_MAINNET_DEPOSIT = createPath({
1624
- targetChain: import_chains2.mainnet.id.toString(),
1625
- targetAsset: tokenAddresses.WETH[import_chains2.mainnet.id],
1691
+ targetChain: import_chains3.mainnet.id.toString(),
1692
+ targetAsset: tokenAddresses.WETH[import_chains3.mainnet.id],
1626
1693
  targetAssetTicker: ETH_SPOT_SYMBOL,
1627
1694
  iconSrc: ASSET_LOGO_SRCS.ETH,
1628
1695
  generateActionsParams: (address) => async (_finalTargetAssetAmount, outputConfig) => {
1629
1696
  if (!outputConfig) {
1630
1697
  return [];
1631
1698
  }
1632
- if (outputConfig.targetChain !== import_chains2.mainnet.id.toString()) {
1699
+ if (outputConfig.targetChain !== import_chains3.mainnet.id.toString()) {
1633
1700
  return [];
1634
1701
  }
1635
1702
  return generateLighterMainnetDepositActions({
@@ -1639,6 +1706,101 @@ var LIGHTER_ETH_SPOT_FUN_MAINNET_DEPOSIT = createPath({
1639
1706
  });
1640
1707
  }
1641
1708
  });
1709
+ var LIGHTER_LINK_SPOT_FUN_MAINNET_DEPOSIT = createPath({
1710
+ targetChain: import_chains3.mainnet.id.toString(),
1711
+ targetAsset: tokenAddresses.LINK[import_chains3.mainnet.id],
1712
+ targetAssetTicker: LINK_SPOT_SYMBOL,
1713
+ iconSrc: ASSET_LOGO_SRCS.LINK,
1714
+ generateActionsParams: (address) => async (_finalTargetAssetAmount, outputConfig) => {
1715
+ if (!outputConfig) {
1716
+ return [];
1717
+ }
1718
+ if (outputConfig.targetChain !== import_chains3.mainnet.id.toString()) {
1719
+ return [];
1720
+ }
1721
+ return generateLighterMainnetDepositActions({
1722
+ address,
1723
+ assetIndex: 5 /* LINK */,
1724
+ routeType: 1 /* Spot */
1725
+ });
1726
+ }
1727
+ });
1728
+ var LIGHTER_SKY_SPOT_FUN_MAINNET_DEPOSIT = createPath({
1729
+ targetChain: import_chains3.mainnet.id.toString(),
1730
+ targetAsset: tokenAddresses.SKY[import_chains3.mainnet.id],
1731
+ targetAssetTicker: SKY_SPOT_SYMBOL,
1732
+ iconSrc: ASSET_LOGO_SRCS.SKY,
1733
+ generateActionsParams: (address) => async (_finalTargetAssetAmount, outputConfig) => {
1734
+ if (!outputConfig) {
1735
+ return [];
1736
+ }
1737
+ if (outputConfig.targetChain !== import_chains3.mainnet.id.toString()) {
1738
+ return [];
1739
+ }
1740
+ return generateLighterMainnetDepositActions({
1741
+ address,
1742
+ assetIndex: 8 /* SKY */,
1743
+ routeType: 1 /* Spot */
1744
+ });
1745
+ }
1746
+ });
1747
+ var LIGHTER_UNI_SPOT_FUN_MAINNET_DEPOSIT = createPath({
1748
+ targetChain: import_chains3.mainnet.id.toString(),
1749
+ targetAsset: tokenAddresses.UNI[import_chains3.mainnet.id],
1750
+ targetAssetTicker: UNI_SPOT_SYMBOL,
1751
+ iconSrc: ASSET_LOGO_SRCS.UNI,
1752
+ generateActionsParams: (address) => async (_finalTargetAssetAmount, outputConfig) => {
1753
+ if (!outputConfig) {
1754
+ return [];
1755
+ }
1756
+ if (outputConfig.targetChain !== import_chains3.mainnet.id.toString()) {
1757
+ return [];
1758
+ }
1759
+ return generateLighterMainnetDepositActions({
1760
+ address,
1761
+ assetIndex: 6 /* UNI */,
1762
+ routeType: 1 /* Spot */
1763
+ });
1764
+ }
1765
+ });
1766
+ var LIGHTER_AAVE_SPOT_FUN_MAINNET_DEPOSIT = createPath({
1767
+ targetChain: import_chains3.mainnet.id.toString(),
1768
+ targetAsset: tokenAddresses.AAVE[import_chains3.mainnet.id],
1769
+ targetAssetTicker: AAVE_SPOT_SYMBOL,
1770
+ iconSrc: ASSET_LOGO_SRCS.AAVE,
1771
+ generateActionsParams: (address) => async (_finalTargetAssetAmount, outputConfig) => {
1772
+ if (!outputConfig) {
1773
+ return [];
1774
+ }
1775
+ if (outputConfig.targetChain !== import_chains3.mainnet.id.toString()) {
1776
+ return [];
1777
+ }
1778
+ return generateLighterMainnetDepositActions({
1779
+ address,
1780
+ assetIndex: 7 /* AAVE */,
1781
+ routeType: 1 /* Spot */
1782
+ });
1783
+ }
1784
+ });
1785
+ var LIGHTER_LDO_SPOT_FUN_MAINNET_DEPOSIT = createPath({
1786
+ targetChain: import_chains3.mainnet.id.toString(),
1787
+ targetAsset: tokenAddresses.LDO[import_chains3.mainnet.id],
1788
+ targetAssetTicker: LDO_SPOT_SYMBOL,
1789
+ iconSrc: ASSET_LOGO_SRCS.LDO,
1790
+ generateActionsParams: (address) => async (_finalTargetAssetAmount, outputConfig) => {
1791
+ if (!outputConfig) {
1792
+ return [];
1793
+ }
1794
+ if (outputConfig.targetChain !== import_chains3.mainnet.id.toString()) {
1795
+ return [];
1796
+ }
1797
+ return generateLighterMainnetDepositActions({
1798
+ address,
1799
+ assetIndex: 9 /* LDO */,
1800
+ routeType: 1 /* Spot */
1801
+ });
1802
+ }
1803
+ });
1642
1804
  var LIGHTER_DYNAMIC_ROUTES = [
1643
1805
  createRoute({
1644
1806
  id: "LIGHTER_ETH_SPOT",
@@ -1681,6 +1843,37 @@ var LIGHTER_DYNAMIC_ROUTES = [
1681
1843
  paths: {
1682
1844
  FUN_MAINNET_DEPOSIT: LIGHTER_ETH_SPOT_FUN_MAINNET_DEPOSIT
1683
1845
  }
1846
+ }),
1847
+ // LINK, UNI, AAVE, SKY, LDO tokens
1848
+ createRoute({
1849
+ id: "LIGHTER_LINK_SPOT_NEW_USER",
1850
+ paths: {
1851
+ FUN_MAINNET_DEPOSIT: LIGHTER_LINK_SPOT_FUN_MAINNET_DEPOSIT
1852
+ }
1853
+ }),
1854
+ createRoute({
1855
+ id: "LIGHTER_SKY_SPOT_NEW_USER",
1856
+ paths: {
1857
+ FUN_MAINNET_DEPOSIT: LIGHTER_SKY_SPOT_FUN_MAINNET_DEPOSIT
1858
+ }
1859
+ }),
1860
+ createRoute({
1861
+ id: "LIGHTER_UNI_SPOT_NEW_USER",
1862
+ paths: {
1863
+ FUN_MAINNET_DEPOSIT: LIGHTER_UNI_SPOT_FUN_MAINNET_DEPOSIT
1864
+ }
1865
+ }),
1866
+ createRoute({
1867
+ id: "LIGHTER_AAVE_SPOT_NEW_USER",
1868
+ paths: {
1869
+ FUN_MAINNET_DEPOSIT: LIGHTER_AAVE_SPOT_FUN_MAINNET_DEPOSIT
1870
+ }
1871
+ }),
1872
+ createRoute({
1873
+ id: "LIGHTER_LDO_SPOT_NEW_USER",
1874
+ paths: {
1875
+ FUN_MAINNET_DEPOSIT: LIGHTER_LDO_SPOT_FUN_MAINNET_DEPOSIT
1876
+ }
1684
1877
  })
1685
1878
  ];
1686
1879