Quantillon Protocol

stQEUROFactory

Git Source

Inherits: Initializable, AccessControlUpgradeable, SecureUpgradeable

Title: stQEUROFactory

Deploys and registers one stQEURO token proxy per staking vault.

State Variables

GOVERNANCE_ROLE

bytes32 public constant GOVERNANCE_ROLE = keccak256("GOVERNANCE_ROLE")

VAULT_FACTORY_ROLE

bytes32 public constant VAULT_FACTORY_ROLE = keccak256("VAULT_FACTORY_ROLE")

tokenImplementation

stQEUROToken implementation used by newly deployed ERC1967 proxies.

address public tokenImplementation

qeuro

address public qeuro

yieldShift

address public yieldShift

usdc

address public usdc

treasury

address public treasury

oracle

address public oracle

tokenAdmin

address public tokenAdmin

stQEUROByVaultId

mapping(uint256 => address) public stQEUROByVaultId

stQEUROByVault

mapping(address => address) public stQEUROByVault

vaultById

mapping(uint256 => address) public vaultById

vaultIdByStQEURO

mapping(address => uint256) public vaultIdByStQEURO

_vaultNamesById

mapping(uint256 => string) private _vaultNamesById

_vaultNameHashUsed

mapping(bytes32 => bool) private _vaultNameHashUsed

Functions

constructor

constructor() ;

initialize

function initialize(
    address admin,
    address _tokenImplementation,
    address _qeuro,
    address _yieldShift,
    address _usdc,
    address _treasury,
    address _timelock,
    address _oracle
) external initializer;

registerVault

Strict self-registration entrypoint. Caller vault deploys its own stQEURO.

function registerVault(uint256 vaultId, string calldata vaultName)
    external
    onlyRole(VAULT_FACTORY_ROLE)
    returns (address stQEUROToken_);

getStQEUROByVaultId

function getStQEUROByVaultId(uint256 vaultId) external view returns (address stQEUROToken_);

getStQEUROByVault

function getStQEUROByVault(address vault) external view returns (address stQEUROToken_);

getVaultById

function getVaultById(uint256 vaultId) external view returns (address vault);

getVaultIdByStQEURO

function getVaultIdByStQEURO(address stQEUROToken_) external view returns (uint256 vaultId);

getVaultName

function getVaultName(uint256 vaultId) external view returns (string memory vaultName);

updateYieldShift

function updateYieldShift(address _yieldShift) external onlyRole(GOVERNANCE_ROLE);

updateTokenImplementation

function updateTokenImplementation(address _tokenImplementation) external onlyRole(GOVERNANCE_ROLE);

updateOracle

function updateOracle(address _oracle) external onlyRole(GOVERNANCE_ROLE);

updateTreasury

function updateTreasury(address _treasury) external onlyRole(GOVERNANCE_ROLE);

updateTokenAdmin

function updateTokenAdmin(address _tokenAdmin) external onlyRole(GOVERNANCE_ROLE);

_validateVaultName

function _validateVaultName(string calldata vaultName) internal pure;

Events

VaultRegistered

event VaultRegistered(
    uint256 indexed vaultId, address indexed vault, address indexed stQEUROToken, string vaultName
);

FactoryConfigUpdated

event FactoryConfigUpdated(string indexed key, address oldValue, address newValue);