67 lines
2.1 KiB
Solidity
67 lines
2.1 KiB
Solidity
|
|
// 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));
|
||
|
|
}
|
||
|
|
}
|