Files
smom-dbis-138/script/deploy/vault/ImportGruVaultRecord138.s.sol

67 lines
2.1 KiB
Solidity
Raw Normal View History

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;
import {Script, console2} from "forge-std/Script.sol";
import {GRUVaultIndex} from "../../../contracts/vault/GRUVaultIndex.sol";
interface IGRUVaultIndexLegacy {
function allVaults(uint256 index) external view returns (address);
function vaults(address vault)
external
view
returns (
address entity,
address baseToken,
address depositToken,
address debtToken,
uint8 gruTier,
bytes32 ibanHash,
bytes32 policyProfileKey,
uint256 recordedAt,
bool active
);
}
/// @notice Import one legacy vault record into new GRUVaultIndex (use GRU_MIGRATE_INDEX).
contract ImportGruVaultRecord138 is Script {
function run() external {
uint256 pk = vm.envUint("PRIVATE_KEY");
address oldIndex = vm.envAddress("OLD_GRU_VAULT_INDEX");
address newIndex = vm.envAddress("NEW_GRU_VAULT_INDEX");
bytes32 policyKey = vm.envBytes32("GRU_POLICY_PROFILE_KEY");
uint256 idx = vm.envUint("GRU_MIGRATE_INDEX");
IGRUVaultIndexLegacy legacy = IGRUVaultIndexLegacy(oldIndex);
GRUVaultIndex target = GRUVaultIndex(newIndex);
address vault;
try legacy.allVaults(idx) returns (address v) {
vault = v;
} catch {
revert("ImportGruVaultRecord138: index out of range");
}
(
address entity,
address baseToken,
address depositToken,
address debtToken,
uint8 gruTier,
bytes32 ibanHash,
bytes32 existingKey,
uint256 recordedAt,
bool active
) = legacy.vaults(vault);
require(active, "ImportGruVaultRecord138: inactive");
bytes32 key = existingKey == bytes32(0) ? policyKey : existingKey;
vm.startBroadcast(pk);
target.importVault(
vault, entity, baseToken, depositToken, debtToken, gruTier, ibanHash, key, recordedAt
);
vm.stopBroadcast();
console2.log("Imported", vault, "policy", vm.toString(key));
}
}