// SPDX-License-Identifier: MIT pragma solidity 0.8.35; import {Test} from "forge-std/Test.sol"; import {Upgrades} from "openzeppelin-foundry-upgrades/Upgrades.sol"; import {BankV1} from "../../src/BankV1.sol"; import {MockUSDC} from "../../src/MockUSDC.sol"; abstract contract BankTestBase is Test { address internal owner; address internal alice; address internal bob; address internal stranger; MockUSDC internal token; address internal proxy; address internal implementation; BankV1 internal bank; function setUp() public virtual { owner = makeAddr("owner"); alice = makeAddr("alice"); bob = makeAddr("bob"); stranger = makeAddr("stranger"); token = new MockUSDC(owner); proxy = Upgrades.deployUUPSProxy("BankV1.sol:BankV1", abi.encodeCall(BankV1.initialize, (address(token), owner))); bank = BankV1(proxy); implementation = Upgrades.getImplementationAddress(proxy); } }