@morpho-org/bundler-sdk-viem 3.0.0-next.0 → 3.0.0-next.2

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.
@@ -386,6 +386,8 @@ export var BundlerAction;
386
386
  */
387
387
  function approve2(chainId, owner, permitSingle, signature, skipRevert = true) {
388
388
  const { permit2 } = getChainAddresses(chainId);
389
+ if (permit2 == null)
390
+ throw new BundlerErrors.UnexpectedAction("approve2", chainId);
389
391
  return [
390
392
  {
391
393
  to: permit2,
@@ -411,6 +413,8 @@ export var BundlerAction;
411
413
  */
412
414
  function transferFrom2(chainId, asset, owner, amount, recipient) {
413
415
  const { permit2, bundler3: { generalAdapter1 }, } = getChainAddresses(chainId);
416
+ if (permit2 == null)
417
+ throw new BundlerErrors.UnexpectedAction("transferFrom2", chainId);
414
418
  recipient ??= generalAdapter1;
415
419
  return [
416
420
  {
package/lib/actions.js CHANGED
@@ -393,13 +393,12 @@ export const encodeOperation = (operation, dataBefore, supportsSignature = true,
393
393
  }
394
394
  case "Blue_Supply": {
395
395
  const { id, assets = 0n, shares = 0n, onBehalf, slippage = 0n, } = operation.args;
396
- const { params, totalSupplyAssets, totalSupplyShares } = dataBefore.getMarket(id);
397
- const maxSharePrice = (totalSupplyAssets * MathLib.wToRay(MathLib.WAD + slippage)) /
398
- totalSupplyShares;
396
+ const market = dataBefore.getMarket(id);
397
+ const maxSharePrice = market.toSupplyAssets(MathLib.wToRay(MathLib.WAD + slippage));
399
398
  actions.push({
400
399
  type: "morphoSupply",
401
400
  args: [
402
- params,
401
+ market.params,
403
402
  assets,
404
403
  shares,
405
404
  maxSharePrice,
@@ -411,35 +410,32 @@ export const encodeOperation = (operation, dataBefore, supportsSignature = true,
411
410
  }
412
411
  case "Blue_Withdraw": {
413
412
  const { id, assets = 0n, shares = 0n, receiver, slippage = 0n, } = operation.args;
414
- const { params, totalSupplyAssets, totalSupplyShares } = dataBefore.getMarket(id);
415
- const minSharePrice = (totalSupplyAssets * MathLib.wToRay(MathLib.WAD - slippage)) /
416
- totalSupplyShares;
413
+ const market = dataBefore.getMarket(id);
414
+ const minSharePrice = market.toSupplyAssets(MathLib.wToRay(MathLib.WAD - slippage));
417
415
  actions.push({
418
416
  type: "morphoWithdraw",
419
- args: [params, assets, shares, minSharePrice, receiver],
417
+ args: [market.params, assets, shares, minSharePrice, receiver],
420
418
  });
421
419
  break;
422
420
  }
423
421
  case "Blue_Borrow": {
424
422
  const { id, assets = 0n, shares = 0n, receiver, slippage = 0n, } = operation.args;
425
- const { params, totalBorrowAssets, totalBorrowShares } = dataBefore.getMarket(id);
426
- const minSharePrice = (totalBorrowAssets * MathLib.wToRay(MathLib.WAD - slippage)) /
427
- totalBorrowShares;
423
+ const market = dataBefore.getMarket(id);
424
+ const minSharePrice = market.toBorrowAssets(MathLib.wToRay(MathLib.WAD - slippage));
428
425
  actions.push({
429
426
  type: "morphoBorrow",
430
- args: [params, assets, shares, minSharePrice, receiver],
427
+ args: [market.params, assets, shares, minSharePrice, receiver],
431
428
  });
432
429
  break;
433
430
  }
434
431
  case "Blue_Repay": {
435
432
  const { id, assets = 0n, shares = 0n, onBehalf, slippage = 0n, } = operation.args;
436
- const { params, totalBorrowAssets, totalBorrowShares } = dataBefore.getMarket(id);
437
- const maxSharePrice = (totalBorrowAssets * MathLib.wToRay(MathLib.WAD + slippage)) /
438
- totalBorrowShares;
433
+ const market = dataBefore.getMarket(id);
434
+ const maxSharePrice = market.toBorrowAssets(MathLib.wToRay(MathLib.WAD + slippage));
439
435
  actions.push({
440
436
  type: "morphoRepay",
441
437
  args: [
442
- params,
438
+ market.params,
443
439
  assets,
444
440
  shares,
445
441
  maxSharePrice,
@@ -480,8 +476,7 @@ export const encodeOperation = (operation, dataBefore, supportsSignature = true,
480
476
  case "MetaMorpho_Deposit": {
481
477
  const { assets = 0n, shares = 0n, owner, slippage = 0n } = operation.args;
482
478
  const vault = dataBefore.getVault(address);
483
- const maxSharePrice = (vault.totalAssets * MathLib.wToRay(MathLib.WAD + slippage)) /
484
- vault.totalSupply;
479
+ const maxSharePrice = vault.toAssets(MathLib.wToRay(MathLib.WAD + slippage));
485
480
  if (shares === 0n)
486
481
  actions.push({
487
482
  type: "erc4626Deposit",
@@ -497,8 +492,7 @@ export const encodeOperation = (operation, dataBefore, supportsSignature = true,
497
492
  case "MetaMorpho_Withdraw": {
498
493
  const { assets = 0n, shares = 0n, owner, receiver, slippage = 0n, } = operation.args;
499
494
  const vault = dataBefore.getVault(address);
500
- const minSharePrice = (vault.totalAssets * MathLib.wToRay(MathLib.WAD - slippage)) /
501
- vault.totalSupply;
495
+ const minSharePrice = vault.toAssets(MathLib.wToRay(MathLib.WAD - slippage));
502
496
  if (assets > 0n)
503
497
  actions.push({
504
498
  type: "erc4626Withdraw",
package/lib/operations.js CHANGED
@@ -43,7 +43,9 @@ export const populateInputTransfer = ({ address, args: { amount, from } }, data,
43
43
  const useSimplePermit = erc2612Nonce != null &&
44
44
  (data.tryGetVault(address) != null || // MetaMorpho vaults implement EIP-2612.
45
45
  hasSimplePermit);
46
- const isPermissioned = permissionedWrapperTokens[data.chainId].has(address) ||
46
+ const useSimpleTransfer = permit2 == null ||
47
+ // Token is permissioned and Permit2 may not be authorized so Permit2 cannot be used.
48
+ permissionedWrapperTokens[data.chainId].has(address) ||
47
49
  permissionedBackedTokens[data.chainId].has(address);
48
50
  if (useSimplePermit)
49
51
  operations.push({
@@ -56,8 +58,7 @@ export const populateInputTransfer = ({ address, args: { amount, from } }, data,
56
58
  nonce: erc2612Nonce,
57
59
  },
58
60
  });
59
- // Token is permissioned and Permit2 may not be authorized so Permit2 cannot be used.
60
- else if (isPermissioned)
61
+ else if (useSimpleTransfer)
61
62
  operations.push({
62
63
  type: "Erc20_Approve",
63
64
  sender: from,
@@ -67,7 +68,7 @@ export const populateInputTransfer = ({ address, args: { amount, from } }, data,
67
68
  spender: generalAdapter1,
68
69
  },
69
70
  });
70
- if (useSimplePermit || isPermissioned)
71
+ if (useSimplePermit || useSimpleTransfer)
71
72
  operations.push({
72
73
  type: "Erc20_Transfer",
73
74
  sender: generalAdapter1,
@@ -78,7 +79,7 @@ export const populateInputTransfer = ({ address, args: { amount, from } }, data,
78
79
  to: generalAdapter1,
79
80
  },
80
81
  });
81
- // Simple permit is not supported and token is not permissioned: fallback to Permit2.
82
+ // Simple permit is not supported: fallback to Permit2.
82
83
  else {
83
84
  if (erc20Allowances.permit2 < amount)
84
85
  operations.push({
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@morpho-org/bundler-sdk-viem",
3
3
  "description": "Viem-based extension of `@morpho-org/simulation-sdk` that exports utilities to transform simple interactions on Morpho (such as `Blue_Borrow`) and Morpho Vaults (such as `MetaMorpho_Deposit`) into the required bundles (with ERC20 approvals, transfers, etc) to submit to the bundler onchain.",
4
- "version": "3.0.0-next.0",
4
+ "version": "3.0.0-next.2",
5
5
  "author": "Morpho Association <contact@morpho.org>",
6
6
  "contributors": [
7
7
  "Rubilmax <rmilon@gmail.com>"
@@ -20,10 +20,10 @@
20
20
  ],
21
21
  "peerDependencies": {
22
22
  "viem": "^2.0.0",
23
- "@morpho-org/blue-sdk": "^3.0.0-next.1",
24
- "@morpho-org/blue-sdk-viem": "^3.0.0-next.0",
25
- "@morpho-org/simulation-sdk": "^3.0.0-next.0",
26
- "@morpho-org/morpho-ts": "^2.1.0"
23
+ "@morpho-org/blue-sdk": "^2.3.1",
24
+ "@morpho-org/morpho-ts": "^2.1.0",
25
+ "@morpho-org/simulation-sdk": "^2.1.3",
26
+ "@morpho-org/blue-sdk-viem": "^2.2.2"
27
27
  },
28
28
  "devDependencies": {
29
29
  "@tanstack/query-core": "^5.62.16",
@@ -35,14 +35,14 @@
35
35
  "typescript": "^5.7.2",
36
36
  "viem": "^2.23.0",
37
37
  "vitest": "^3.0.5",
38
- "@morpho-org/blue-sdk": "^3.0.0-next.1",
39
- "@morpho-org/blue-sdk-viem": "^3.0.0-next.0",
38
+ "@morpho-org/blue-sdk": "^2.3.1",
40
39
  "@morpho-org/morpho-ts": "^2.1.0",
41
- "@morpho-org/simulation-sdk": "^3.0.0-next.0",
40
+ "@morpho-org/simulation-sdk": "^2.1.3",
42
41
  "@morpho-org/morpho-test": "^2.2.1",
43
- "@morpho-org/test": "^2.0.7-next.0",
44
- "@morpho-org/simulation-sdk-wagmi": "^3.0.0-next.0",
45
- "@morpho-org/test-wagmi": "^2.0.4"
42
+ "@morpho-org/blue-sdk-viem": "^2.2.2",
43
+ "@morpho-org/simulation-sdk-wagmi": "^2.0.5",
44
+ "@morpho-org/test-wagmi": "^2.0.4",
45
+ "@morpho-org/test": "^2.0.6"
46
46
  },
47
47
  "scripts": {
48
48
  "prepublish": "$npm_execpath build",