classDiagram
direction TB
namespace Metalex {
class CertificateUriBuilder {
<<UUPSUpgradeable>>
+upgradeToAndCall()
}
class CyberAgreementRegistry {
<<UUPSUpgradeable>>
+upgradeToAndCall()
}
class CyberCorpFactory {
<<UUPSUpgradeable>>
+upgradeToAndCall()
}
class RoundManagerFactory {
<<UUPSUpgradeable>>
+upgradeToAndCall()
+setRefImplementation()
}
class CyberCorpSingleFactory {
<<UUPSUpgradeable>>
+upgradeToAndCall()
+setRefImplementation()
}
class IssuanceManagerFactory {
<<UUPSUpgradeable>>
+upgradeToAndCall()
+setRefImplementation()
+setCyberCertPrinterRefImplementation()
+setCyberScripRefImplementation()
}
class DealManagerFactory {
<<UUPSUpgradeable>>
+upgradeToAndCall()
+setRefImplementation()
}
class LegacyCyberCorpSingleFactory {
+upgradeImplementation()
}
class LegacyDealManagerFactory {
+upgradeImplementation()
}
class LegacyIssuanceManagerFactory {
+upgradeImplementation()
}
}
namespace ReleaseV3 {
class CyberCorpImplV3
class IssuanceManagerImplV3
class DealManagerImplV3
class RoundManagerImplV3
class CyberCertPrinterImplV3
class CyberScripImplV3
}
namespace CorpA_deployed_after_v3 {
class CyberCorpA {
<<UUPSUpgradeable>>
+upgradeToAndCall()
}
class IssuanceManagerA {
<<UUPSUpgradeable>>
+upgradeToAndCall()
+upgradeCertPrinterBeaconImplementation()
+upgradeScripBeaconImplementation()
}
class CyberCertPrinterBeaconA {
<<UpgradeableBeacon>>
+upgradeTo()
}
class CyberScripBeaconA {
<<UpgradeableBeacon>>
+upgradeTo()
}
class DealManagerA {
<<UUPSUpgradeable>>
+upgradeToAndCall()
}
class RoundManagerA {
<<UUPSUpgradeable>>
+upgradeToAndCall()
}
class CyberCertPrinterA1 {
<<BeaconProxy>>
}
class CyberCertPrinterA2 {
<<BeaconProxy>>
}
class CyberScripA1 {
<<BeaconProxy>>
}
}
namespace MetalexLegacyBeacons {
class LegacyCyberCorpBeacon {
<<UpgradeableBeacon>>
+upgradeTo()
}
class LegacyDealManagerBeacon {
<<UpgradeableBeacon>>
+upgradeTo()
}
class LegacyIssuanceManagerBeacon {
<<UpgradeableBeacon>>
+upgradeTo()
}
}
namespace LegacyCorpB_migrated_after_v3 {
class CyberCorpB {
<<BeaconProxy>>
}
class IssuanceManagerB {
<<BeaconProxy>>
+upgradeCertPrinterBeaconImplementation()
+upgradeScripBeaconImplementation()
}
class DealManagerB {
<<BeaconProxy>>
}
class RoundManagerB {
<<UUPSUpgradeable>>
+upgradeToAndCall()
}
class CyberCertPrinterBeaconB {
<<UpgradeableBeacon>>
+upgradeTo()
}
class CyberCertPrinterB1 {
<<BeaconProxy>>
}
class CyberScripBeaconB {
<<UpgradeableBeacon>>
+upgradeTo()
}
}
%% Metalex
CyberCorpFactory --> CyberAgreementRegistry : depend on
CyberCorpFactory --> CertificateUriBuilder : depend on
CyberCorpFactory --> CyberCorpSingleFactory : depend on
CyberCorpFactory --> DealManagerFactory : depend on
CyberCorpFactory --> IssuanceManagerFactory : depend on
CyberCorpFactory --> RoundManagerFactory : depend on
CyberCorpSingleFactory --> CyberCorpImplV3 : refImplementation
IssuanceManagerFactory --> IssuanceManagerImplV3: refImplementation
IssuanceManagerFactory --> CyberCertPrinterImplV3: cyberCertPrinterRefImplementation
IssuanceManagerFactory --> CyberScripImplV3: cyberScripRefImplementation
DealManagerFactory --> DealManagerImplV3: refImplementation
RoundManagerFactory --> RoundManagerImplV3: refImplementation
%% CorpA_deployed_after_v3
CyberCorpImplV3 <-- CyberCorpA : implementation
IssuanceManagerImplV3 <-- IssuanceManagerA : implementation
IssuanceManagerA <-- CyberCertPrinterBeaconA : owned by
IssuanceManagerA <-- CyberScripBeaconA : owned by
CyberCertPrinterImplV3 <-- CyberCertPrinterBeaconA : implementation
CyberScripImplV3 <-- CyberScripBeaconA : implementation
DealManagerImplV3 <-- DealManagerA : implementation
CyberCertPrinterBeaconA <-- CyberCertPrinterA1: beacon
CyberCertPrinterBeaconA <-- CyberCertPrinterA2: beacon
CyberScripBeaconA <-- CyberScripA1: beacon
RoundManagerImplV3 <-- RoundManagerA : implementation
%% LegacyMetalex
LegacyCyberCorpSingleFactory <-- LegacyCyberCorpBeacon: owned by
LegacyDealManagerFactory <-- LegacyDealManagerBeacon: owned by
LegacyIssuanceManagerFactory <-- LegacyIssuanceManagerBeacon: owned by
CyberCorpImplV3 <-- LegacyCyberCorpBeacon : implementation
DealManagerImplV3 <-- LegacyDealManagerBeacon : implementation
IssuanceManagerImplV3 <-- LegacyIssuanceManagerBeacon : implementation
%% LegacyCorpB_migrated_after_v3
LegacyCyberCorpBeacon <-- CyberCorpB : beacon
LegacyIssuanceManagerBeacon <-- IssuanceManagerB : beacon
IssuanceManagerB <-- CyberCertPrinterBeaconB : owned by
IssuanceManagerB <-- CyberScripBeaconB : owned by
LegacyDealManagerBeacon <-- DealManagerB : beacon
CyberCertPrinterImplV3 <-- CyberCertPrinterBeaconB : implementation
CyberCertPrinterBeaconB <-- CyberCertPrinterB1: beacon
CyberScripImplV3 <-- CyberScripBeaconB : implementation
RoundManagerImplV3 <-- RoundManagerB : implementation