Skip to content

Commit

Permalink
refactor for MorphoScript changes
Browse files Browse the repository at this point in the history
  • Loading branch information
Hans Wang committed Sep 2, 2024
1 parent 7dbbc09 commit 7da9452
Show file tree
Hide file tree
Showing 11 changed files with 64 additions and 72 deletions.
2 changes: 1 addition & 1 deletion src/builder/Accounts.sol
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ library Accounts {
AssetPositions[] assetPositionsList;
CometPositions[] cometPositions;
MorphoPositions[] morphoPositions;
MorphoVaultPosition[] morphoVaultPositions;
MorphoVaultPositions[] morphoVaultPositions;
}

// We map this to the Portfolio data structure that the client will already have.
Expand Down
30 changes: 11 additions & 19 deletions src/builder/Actions.sol
Original file line number Diff line number Diff line change
Expand Up @@ -369,7 +369,7 @@ library Actions {
uint256 price;
address token;
}

struct MorphoVaultWithdrawContext {
uint256 amount;
string assetSymbol;
Expand Down Expand Up @@ -1104,11 +1104,11 @@ library Actions {
return (quarkOperation, action);
}

function morphoVaultWithdraw(
MorphoVaultWithdraw memory vaultWithdraw,
PaymentInfo.Payment memory payment,
bool withdrawMax
) internal pure returns (IQuarkWallet.QuarkOperation memory, Action memory) {
function morphoVaultWithdraw(MorphoVaultWithdraw memory vaultWithdraw, PaymentInfo.Payment memory payment)
internal
pure
returns (IQuarkWallet.QuarkOperation memory, Action memory)
{
bytes[] memory scriptSources = new bytes[](1);
scriptSources[0] = type(MorphoVaultActions).creationCode;

Expand All @@ -1121,19 +1121,11 @@ library Actions {
Accounts.QuarkState memory accountState =
Accounts.findQuarkState(vaultWithdraw.withdrawer, accounts.quarkStates);

bytes memory scriptCalldata;
if (withdrawMax) {
scriptCalldata = abi.encodeWithSelector(
MorphoVaultActions.redeemAll.selector,
MorphoInfo.getMorphoVaultAddress(vaultWithdraw.chainId, vaultWithdraw.assetSymbol)
);
} else {
scriptCalldata = abi.encodeWithSelector(
MorphoVaultActions.withdraw.selector,
MorphoInfo.getMorphoVaultAddress(vaultWithdraw.chainId, vaultWithdraw.assetSymbol),
vaultWithdraw.amount
);
}
bytes memory scriptCalldata = abi.encodeWithSelector(
MorphoVaultActions.withdraw.selector,
MorphoInfo.getMorphoVaultAddress(vaultWithdraw.chainId, vaultWithdraw.assetSymbol),
vaultWithdraw.amount
);

// Construct QuarkOperation
IQuarkWallet.QuarkOperation memory quarkOperation = IQuarkWallet.QuarkOperation({
Expand Down
3 changes: 1 addition & 2 deletions src/builder/QuarkBuilder.sol
Original file line number Diff line number Diff line change
Expand Up @@ -1501,8 +1501,7 @@ contract QuarkBuilder {
chainId: withdrawIntent.chainId,
withdrawer: withdrawIntent.withdrawer
}),
payment,
isMaxWithdraw
payment
);
List.addAction(actions, cometWithdrawAction);
List.addQuarkOperation(quarkOperations, cometWithdrawQuarkOperation);
Expand Down
8 changes: 4 additions & 4 deletions test/builder/QuarkBuilderCometSupply.t.sol
Original file line number Diff line number Diff line change
Expand Up @@ -160,8 +160,8 @@ contract QuarkBuilderCometSupplyTest is Test, QuarkBuilderTest {
quarkStates: quarkStates_(address(0xa11ce), 12),
assetPositionsList: assetPositionsList_(1, address(0xa11ce), uint256(3e6)),
cometPositions: emptyCometPositions_(),
morphoPortfolios: emptyMorphoPortfolios_(),
morphoVaultPortfolios: emptyMorphoVaultPortfolios_()
morphoPositions: emptyMorphoPositions_(),
morphoVaultPositions: emptyMorphoVaultPositions_()
});

QuarkBuilder.BuilderResult memory result = builder.cometSupply(
Expand Down Expand Up @@ -265,8 +265,8 @@ contract QuarkBuilderCometSupplyTest is Test, QuarkBuilderTest {
quarkStates: quarkStates_(address(0xa11ce), 12),
assetPositionsList: assetPositionsList,
cometPositions: emptyCometPositions_(),
morphoPortfolios: emptyMorphoPortfolios_(),
morphoVaultPortfolios: emptyMorphoVaultPortfolios_()
morphoPositions: emptyMorphoPositions_(),
morphoVaultPositions: emptyMorphoVaultPositions_()
});

QuarkBuilder.BuilderResult memory result =
Expand Down
8 changes: 4 additions & 4 deletions test/builder/QuarkBuilderCometWithdraw.t.sol
Original file line number Diff line number Diff line change
Expand Up @@ -259,16 +259,16 @@ contract QuarkBuilderCometWithdrawTest is Test, QuarkBuilderTest {
quarkStates: quarkStates_(address(0xa11ce), 12),
assetPositionsList: assetPositionsList_(1, address(0xa11ce), 3e6), // 3 USDC on mainnet
cometPositions: emptyCometPositions_(),
morphoPortfolios: emptyMorphoPortfolios_(),
morphoVaultPortfolios: emptyMorphoVaultPortfolios_()
morphoPositions: emptyMorphoPositions_(),
morphoVaultPositions: emptyMorphoVaultPositions_()
});
chainAccountsList[1] = Accounts.ChainAccounts({
chainId: 8453,
quarkStates: quarkStates_(address(0xb0b), 2),
assetPositionsList: assetPositionsList_(8453, address(0xb0b), 0), // 0 USDC on base
cometPositions: emptyCometPositions_(),
morphoPortfolios: emptyMorphoPortfolios_(),
morphoVaultPortfolios: emptyMorphoVaultPortfolios_()
morphoPositions: emptyMorphoPositions_(),
morphoVaultPositions: emptyMorphoVaultPositions_()
});

QuarkBuilder.BuilderResult memory result = builder.cometWithdraw(
Expand Down
2 changes: 1 addition & 1 deletion test/builder/QuarkBuilderMorphoRepay.t.sol
Original file line number Diff line number Diff line change
Expand Up @@ -603,7 +603,7 @@ contract QuarkBuilderMorphoRepayTest is Test, QuarkBuilderTest {
nextNonce: 12,
assetSymbols: Arrays.stringArray("USDC", "USDT", "WBTC", "WETH"),
assetBalances: Arrays.uintArray(20e6, 0, 0, 0), // has 20 USDC
cometPortfolios: emptyCometPortfolios_(),
cometPortfolios: emptyCometPortfolios_(),
morphoPortfolios: morphoPortfolios,
morphoVaultPortfolios: emptyMorphoVaultPortfolios_()
});
Expand Down
12 changes: 6 additions & 6 deletions test/builder/QuarkBuilderMorphoVaultSupply.t.sol
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ import {CodeJarHelper} from "src/builder/CodeJarHelper.sol";
import {CometSupplyActions, TransferActions} from "src/DeFiScripts.sol";
import {Paycall} from "src/Paycall.sol";
import {MorphoInfo} from "src/builder/MorphoInfo.sol";
import {MorphoVaultActions} from "src/defi_integrations/MorphoScripts.sol";
import {MorphoVaultActions} from "src/MorphoScripts.sol";
import {Multicall} from "src/Multicall.sol";
import {Quotecall} from "src/Quotecall.sol";
import {QuarkBuilder} from "src/builder/QuarkBuilder.sol";
Expand Down Expand Up @@ -74,23 +74,23 @@ contract QuarkBuilderMorphoVaultTest is Test, QuarkBuilderTest {
quarkStates: quarkStates_(address(0xa11ce), 12),
assetPositionsList: assetPositionsList_(1, address(0xa11ce), 0e6),
cometPositions: emptyCometPositions_(),
morphoBluePositions: emptyMorphoBluePositions_(),
morphoPositions: emptyMorphoPositions_(),
morphoVaultPositions: emptyMorphoVaultPositions_()
});
chainAccountsList[1] = Accounts.ChainAccounts({
chainId: 8453,
quarkStates: quarkStates_(address(0xb0b), 2),
assetPositionsList: assetPositionsList_(8453, address(0xb0b), 0e6),
cometPositions: emptyCometPositions_(),
morphoBluePositions: emptyMorphoBluePositions_(),
morphoPositions: emptyMorphoPositions_(),
morphoVaultPositions: emptyMorphoVaultPositions_()
});
chainAccountsList[2] = Accounts.ChainAccounts({
chainId: 7777,
quarkStates: quarkStates_(address(0xc0b), 5),
assetPositionsList: assetPositionsList_(7777, address(0xc0b), 100e6),
cometPositions: emptyCometPositions_(),
morphoBluePositions: emptyMorphoBluePositions_(),
morphoPositions: emptyMorphoPositions_(),
morphoVaultPositions: emptyMorphoVaultPositions_()
});
vm.expectRevert(abi.encodeWithSelector(QuarkBuilder.FundsUnavailable.selector, "USDC", 2e6, 0));
Expand Down Expand Up @@ -192,7 +192,7 @@ contract QuarkBuilderMorphoVaultTest is Test, QuarkBuilderTest {
quarkStates: quarkStates_(address(0xa11ce), 12),
assetPositionsList: assetPositionsList_(1, address(0xa11ce), uint256(3e6)),
cometPositions: emptyCometPositions_(),
morphoBluePositions: emptyMorphoBluePositions_(),
morphoPositions: emptyMorphoPositions_(),
morphoVaultPositions: emptyMorphoVaultPositions_()
});

Expand Down Expand Up @@ -301,7 +301,7 @@ contract QuarkBuilderMorphoVaultTest is Test, QuarkBuilderTest {
quarkStates: quarkStates_(address(0xa11ce), 12),
assetPositionsList: assetPositionsList,
cometPositions: emptyCometPositions_(),
morphoBluePositions: emptyMorphoBluePositions_(),
morphoPositions: emptyMorphoPositions_(),
morphoVaultPositions: emptyMorphoVaultPositions_()
});

Expand Down
12 changes: 6 additions & 6 deletions test/builder/QuarkBuilderMorphoVaultWithdraw.t.sol
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ import {CCTPBridgeActions} from "src/BridgeScripts.sol";
import {CodeJarHelper} from "src/builder/CodeJarHelper.sol";
import {CometWithdrawActions, TransferActions} from "src/DeFiScripts.sol";
import {MorphoInfo} from "src/builder/MorphoInfo.sol";
import {MorphoVaultActions} from "src/defi_integrations/MorphoScripts.sol";
import {MorphoVaultActions} from "src/MorphoScripts.sol";
import {Paycall} from "src/Paycall.sol";
import {QuarkBuilder} from "src/builder/QuarkBuilder.sol";

Expand Down Expand Up @@ -257,15 +257,15 @@ contract QuarkBuilderMorphoVaultWithdrawTest is Test, QuarkBuilderTest {
quarkStates: quarkStates_(address(0xa11ce), 12),
assetPositionsList: assetPositionsList_(1, address(0xa11ce), 3e6), // 3 USDC on mainnet
cometPositions: emptyCometPositions_(),
morphoBluePositions: emptyMorphoBluePositions_(),
morphoPositions: emptyMorphoPositions_(),
morphoVaultPositions: emptyMorphoVaultPositions_()
});
chainAccountsList[1] = Accounts.ChainAccounts({
chainId: 8453,
quarkStates: quarkStates_(address(0xb0b), 2),
assetPositionsList: assetPositionsList_(8453, address(0xb0b), 0), // 0 USDC on base
cometPositions: emptyCometPositions_(),
morphoBluePositions: emptyMorphoBluePositions_(),
morphoPositions: emptyMorphoPositions_(),
morphoVaultPositions: emptyMorphoVaultPositions_()
});

Expand Down Expand Up @@ -400,7 +400,7 @@ contract QuarkBuilderMorphoVaultWithdrawTest is Test, QuarkBuilderTest {
assetSymbols: Arrays.stringArray("USDC", "USDT", "LINK", "WETH"),
assetBalances: Arrays.uintArray(0, 0, 0, 0),
cometPortfolios: emptyCometPortfolios_(),
morphoBluePortfolios: emptyMorphoBluePortfolios_(),
morphoPortfolios: emptyMorphoPortfolios_(),
morphoVaultPortfolios: morphoVaultPortfolios
});

Expand Down Expand Up @@ -429,7 +429,7 @@ contract QuarkBuilderMorphoVaultWithdrawTest is Test, QuarkBuilderTest {
Paycall.run.selector,
morphoVaultActionsAddress,
abi.encodeWithSelector(
MorphoVaultActions.redeemAll.selector, MorphoInfo.getMorphoVaultAddress(1, "USDC")
MorphoVaultActions.withdraw.selector, MorphoInfo.getMorphoVaultAddress(1, "USDC"), type(uint256).max
),
0.1e6
),
Expand Down Expand Up @@ -487,7 +487,7 @@ contract QuarkBuilderMorphoVaultWithdrawTest is Test, QuarkBuilderTest {
assetSymbols: Arrays.stringArray("USDC", "USDT", "LINK", "WETH"),
assetBalances: Arrays.uintArray(0, 0, 0, 0),
cometPortfolios: emptyCometPortfolios_(),
morphoBluePortfolios: emptyMorphoBluePortfolios_(),
morphoPortfolios: emptyMorphoPortfolios_(),
morphoVaultPortfolios: morphoVaultPortfolios
});

Expand Down
16 changes: 8 additions & 8 deletions test/builder/QuarkBuilderSwap.t.sol
Original file line number Diff line number Diff line change
Expand Up @@ -249,8 +249,8 @@ contract QuarkBuilderSwapTest is Test, QuarkBuilderTest {
quarkStates: quarkStates_(address(0xa11ce), 12),
assetPositionsList: assetPositionsList,
cometPositions: emptyCometPositions_(),
morphoPortfolios: emptyMorphoPortfolios_(),
morphoVaultPortfolios: emptyMorphoVaultPortfolios_()
morphoPositions: emptyMorphoPositions_(),
morphoVaultPositions: emptyMorphoVaultPositions_()
});
QuarkBuilder.BuilderResult memory result = builder.swap(
buyUsdc_(1, weth_(1), 1e18, 3000e6, address(0xa11ce), BLOCK_TIMESTAMP), // swap 1 ETH on chain 1 to 3000 USDC
Expand Down Expand Up @@ -408,24 +408,24 @@ contract QuarkBuilderSwapTest is Test, QuarkBuilderTest {
quarkStates: quarkStates_(address(0xa11ce), 12),
assetPositionsList: assetPositionsList_(1, address(0xa11ce), uint256(9005e6)),
cometPositions: emptyCometPositions_(),
morphoPortfolios: emptyMorphoPortfolios_(),
morphoVaultPortfolios: emptyMorphoVaultPortfolios_()
morphoPositions: emptyMorphoPositions_(),
morphoVaultPositions: emptyMorphoVaultPositions_()
});
chainAccountsList[1] = Accounts.ChainAccounts({
chainId: 8453,
quarkStates: quarkStates_(address(0xb0b), 2),
assetPositionsList: assetPositionsList_(8453, address(0xb0b), uint256(0)),
cometPositions: emptyCometPositions_(),
morphoPortfolios: emptyMorphoPortfolios_(),
morphoVaultPortfolios: emptyMorphoVaultPortfolios_()
morphoPositions: emptyMorphoPositions_(),
morphoVaultPositions: emptyMorphoVaultPositions_()
});
chainAccountsList[2] = Accounts.ChainAccounts({
chainId: 7777,
quarkStates: quarkStates_(address(0xc0b), 5),
assetPositionsList: assetPositionsList_(7777, address(0xc0b), uint256(0)),
cometPositions: emptyCometPositions_(),
morphoPortfolios: emptyMorphoPortfolios_(),
morphoVaultPortfolios: emptyMorphoVaultPortfolios_()
morphoPositions: emptyMorphoPositions_(),
morphoVaultPositions: emptyMorphoVaultPositions_()
});

QuarkBuilder.BuilderResult memory result = builder.swap(
Expand Down
40 changes: 20 additions & 20 deletions test/builder/QuarkBuilderTransfer.t.sol
Original file line number Diff line number Diff line change
Expand Up @@ -610,8 +610,8 @@ contract QuarkBuilderTransferTest is Test, QuarkBuilderTest {
quarkStates: quarkStates_(address(0xa11ce), 12),
assetPositionsList: assetPositionsList_(1, address(0xa11ce), uint256(10e6)),
cometPositions: emptyCometPositions_(),
morphoPortfolios: emptyMorphoPortfolios_(),
morphoVaultPortfolios: emptyMorphoVaultPortfolios_()
morphoPositions: emptyMorphoPositions_(),
morphoVaultPositions: emptyMorphoVaultPositions_()
});

QuarkBuilder.BuilderResult memory result = builder.transfer(
Expand Down Expand Up @@ -688,16 +688,16 @@ contract QuarkBuilderTransferTest is Test, QuarkBuilderTest {
quarkStates: quarkStates_(address(0xa11ce), 12),
assetPositionsList: assetPositionsList_(1, address(0xa11ce), 8e6),
cometPositions: emptyCometPositions_(),
morphoPortfolios: emptyMorphoPortfolios_(),
morphoVaultPortfolios: emptyMorphoVaultPortfolios_()
morphoPositions: emptyMorphoPositions_(),
morphoVaultPositions: emptyMorphoVaultPositions_()
});
chainAccountsList[1] = Accounts.ChainAccounts({
chainId: 8453,
quarkStates: quarkStates_(address(0xb0b), 2),
assetPositionsList: assetPositionsList_(8453, address(0xb0b), 4e6),
cometPositions: emptyCometPositions_(),
morphoPortfolios: emptyMorphoPortfolios_(),
morphoVaultPortfolios: emptyMorphoVaultPortfolios_()
morphoPositions: emptyMorphoPositions_(),
morphoVaultPositions: emptyMorphoVaultPositions_()
});

QuarkBuilder.BuilderResult memory result = builder.transfer(
Expand Down Expand Up @@ -827,24 +827,24 @@ contract QuarkBuilderTransferTest is Test, QuarkBuilderTest {
quarkStates: quarkStates_(address(0xa11ce), 12),
assetPositionsList: assetPositionsList_(1, address(0xa11ce), 8e6),
cometPositions: emptyCometPositions_(),
morphoPortfolios: emptyMorphoPortfolios_(),
morphoVaultPortfolios: emptyMorphoVaultPortfolios_()
morphoPositions: emptyMorphoPositions_(),
morphoVaultPositions: emptyMorphoVaultPositions_()
});
chainAccountsList[1] = Accounts.ChainAccounts({
chainId: 8453,
quarkStates: quarkStates_(address(0xb0b), 2),
assetPositionsList: assetPositionsList_(8453, address(0xb0b), 4e6),
cometPositions: emptyCometPositions_(),
morphoPortfolios: emptyMorphoPortfolios_(),
morphoVaultPortfolios: emptyMorphoVaultPortfolios_()
morphoPositions: emptyMorphoPositions_(),
morphoVaultPositions: emptyMorphoVaultPositions_()
});
chainAccountsList[2] = Accounts.ChainAccounts({
chainId: 7777,
quarkStates: quarkStates_(address(0xfe11a), 2),
assetPositionsList: assetPositionsList_(7777, address(0xfe11a), 5e6),
cometPositions: emptyCometPositions_(),
morphoPortfolios: emptyMorphoPortfolios_(),
morphoVaultPortfolios: emptyMorphoVaultPortfolios_()
morphoPositions: emptyMorphoPositions_(),
morphoVaultPositions: emptyMorphoVaultPositions_()
});

// User has total holding of 17 USDC, but only 12 USDC is available for transfer/bridge to 8453, and missing 5 USDC stuck in random L2 so will revert with FundsUnavailable error
Expand Down Expand Up @@ -932,8 +932,8 @@ contract QuarkBuilderTransferTest is Test, QuarkBuilderTest {
quarkStates: quarkStates_(address(0xa11ce), 12),
assetPositionsList: assetPositionsList,
cometPositions: emptyCometPositions_(),
morphoPortfolios: emptyMorphoPortfolios_(),
morphoVaultPortfolios: emptyMorphoVaultPortfolios_()
morphoPositions: emptyMorphoPositions_(),
morphoVaultPositions: emptyMorphoVaultPositions_()
});

// Transfer 1.5ETH to 0xceecee on chain 1
Expand Down Expand Up @@ -1035,8 +1035,8 @@ contract QuarkBuilderTransferTest is Test, QuarkBuilderTest {
quarkStates: quarkStates_(address(0xa11ce), 12),
assetPositionsList: assetPositionsList,
cometPositions: emptyCometPositions_(),
morphoPortfolios: emptyMorphoPortfolios_(),
morphoVaultPortfolios: emptyMorphoVaultPortfolios_()
morphoPositions: emptyMorphoPositions_(),
morphoVaultPositions: emptyMorphoVaultPositions_()
});

// Transfer 1.5ETH to 0xceecee on chain 1
Expand Down Expand Up @@ -1146,8 +1146,8 @@ contract QuarkBuilderTransferTest is Test, QuarkBuilderTest {
quarkStates: quarkStates_(address(0xa11ce), 12),
assetPositionsList: assetPositionsList,
cometPositions: emptyCometPositions_(),
morphoPortfolios: emptyMorphoPortfolios_(),
morphoVaultPortfolios: emptyMorphoVaultPortfolios_()
morphoPositions: emptyMorphoPositions_(),
morphoVaultPositions: emptyMorphoVaultPositions_()
});

// Transfer max ETH to 0xceecee on chain 1
Expand Down Expand Up @@ -1258,8 +1258,8 @@ contract QuarkBuilderTransferTest is Test, QuarkBuilderTest {
quarkStates: quarkStates_(address(0xa11ce), 12),
assetPositionsList: assetPositionsList,
cometPositions: emptyCometPositions_(),
morphoPortfolios: emptyMorphoPortfolios_(),
morphoVaultPortfolios: emptyMorphoVaultPortfolios_()
morphoPositions: emptyMorphoPositions_(),
morphoVaultPositions: emptyMorphoVaultPositions_()
});

// Transfer 1.5ETH to 0xceecee on chain 1
Expand Down
Loading

0 comments on commit 7da9452

Please sign in to comment.