If i use UUPS upgradeable pattern and i define a couple of constants, enums and structs at the contract level, will those values still be available after an upgrade?
I have 3 contracts and all 3 are upgradable. In contract 1 i have a couple of constants, enum and struct which are used in both contract 2 and 3.
I noticed that the contract size is way smaller if i define these at contract level and use those as it is, instead of the generated public getters. However i am not sure if these values still going to be available after an upgrade on any of my contracts.
Contract 1:
uint256 constant CONSTANT_ONE = 1;
uint256 constant CONSTANT_TWO = 2;
enum Tiers {
Hey,
Howdy,
Hello
}
struct MyStruct {
uint256 myUint256;
}
contract Contrcat1 is Initializable, ERC1155Upgradeable, AccessControlUpgradeable, UUPSUpgradeable {
// constants enum and struct used here
}
Contract 2
import "./Contract1.sol";
contract Contract2 is Initializable, AccessControlUpgradeable, UUPSUpgradeable {
// use the constants, enum and struct here from Contract 1
}
Contract 3
import "./Contract1.sol";
contract Contract3 is Initializable, AccessControlUpgradeable, UUPSUpgradeable {
// use the constants, enum and struct here from Contract 1
}
So my question is if these file level definitions are compatible with upgrades or not?
Thank you in advance