@etherisc/gif-next 3.0.0-1b49bd6-565 → 3.0.0-1bd1936-188
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.dbg.json +1 -1
- package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.json +72 -139
- package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +116 -110
- package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.dbg.json +1 -1
- package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.json +33 -72
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +66 -89
- package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.json +101 -122
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +65 -20
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +55 -31
- package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +1 -1
- package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +1 -1
- package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +10 -20
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +1 -1
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +1 -1
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +42 -18
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +75 -126
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +65 -41
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +57 -72
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +139 -198
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +150 -140
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +56 -84
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +32 -71
- package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +104 -166
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +65 -41
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +138 -200
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +65 -41
- package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +1 -1
- package/artifacts/contracts/examples/flight/FlightLib.sol/FlightLib.dbg.json +1 -1
- package/artifacts/contracts/examples/flight/FlightLib.sol/FlightLib.json +60 -30
- package/artifacts/contracts/examples/flight/FlightMessageVerifier.sol/FlightMessageVerifier.dbg.json +1 -1
- package/artifacts/contracts/examples/flight/FlightOracle.sol/FlightOracle.dbg.json +1 -1
- package/artifacts/contracts/examples/flight/FlightOracle.sol/FlightOracle.json +152 -173
- package/artifacts/contracts/examples/flight/FlightOracleAuthorization.sol/FlightOracleAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/flight/FlightOracleAuthorization.sol/FlightOracleAuthorization.json +65 -41
- package/artifacts/contracts/examples/flight/FlightPool.sol/FlightPool.dbg.json +1 -1
- package/artifacts/contracts/examples/flight/FlightPool.sol/FlightPool.json +108 -170
- package/artifacts/contracts/examples/flight/FlightPoolAuthorization.sol/FlightPoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/flight/FlightPoolAuthorization.sol/FlightPoolAuthorization.json +65 -41
- package/artifacts/contracts/examples/flight/FlightProduct.sol/FlightProduct.dbg.json +1 -1
- package/artifacts/contracts/examples/flight/FlightProduct.sol/FlightProduct.json +164 -211
- package/artifacts/contracts/examples/flight/FlightProductAuthorization.sol/FlightProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/flight/FlightProductAuthorization.sol/FlightProductAuthorization.json +65 -41
- package/artifacts/contracts/examples/flight/FlightUSD.sol/FlightUSD.dbg.json +1 -1
- package/artifacts/contracts/examples/flight/originalV1.sol/FlightDelayChainlink.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +102 -159
- package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +65 -41
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +106 -163
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +120 -177
- package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +65 -41
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +114 -171
- package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +65 -41
- package/artifacts/contracts/instance/BaseStore.sol/BaseStore.dbg.json +1 -1
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +54 -49
- package/artifacts/contracts/instance/IBaseStore.sol/IBaseStore.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +25 -77
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +44 -83
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +50 -144
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +147 -169
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +67 -43
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +36 -36
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +75 -138
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +112 -104
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +2 -2
- package/artifacts/contracts/instance/ProductStore.sol/ProductStore.dbg.json +1 -1
- package/artifacts/contracts/instance/ProductStore.sol/ProductStore.json +2 -2
- package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +1 -1
- package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +58 -53
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
- package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
- package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.json +1 -1
- package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
- package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +2 -2
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +8 -3
- package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.json +2 -2
- package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
- package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +81 -132
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +65 -41
- package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
- package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +66 -94
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +83 -80
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +67 -82
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +148 -149
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +129 -111
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +73 -88
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +65 -41
- package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +117 -176
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +139 -129
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +32 -71
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +72 -100
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +86 -94
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +73 -88
- package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +247 -24
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +165 -233
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +130 -140
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +63 -138
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +112 -110
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +57 -72
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +65 -41
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +115 -182
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +138 -132
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +32 -71
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +32 -71
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +64 -82
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +43 -82
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +56 -84
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +1 -1
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.json +36 -75
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +127 -173
- package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.json +2 -2
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +128 -122
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +94 -161
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +122 -116
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/product/Product.sol/Product.json +57 -72
- package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +1 -1
- package/artifacts/contracts/product/RiskService.sol/RiskService.json +63 -146
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +107 -109
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +56 -155
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +216 -202
- package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +1 -1
- package/artifacts/contracts/registry/IRelease.sol/IRelease.json +15 -1
- package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
- package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
- package/artifacts/contracts/registry/Registry.sol/Registry.json +96 -314
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +142 -163
- package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.json +77 -57
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +244 -285
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +110 -115
- package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +150 -159
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +2 -2
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +185 -127
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +56 -32
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +29 -13
- package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
- package/artifacts/contracts/shared/Component.sol/Component.json +39 -84
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +320 -164
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +141 -115
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +1 -1
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +169 -421
- package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +4 -0
- package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.json +24 -0
- package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +1 -1
- package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.dbg.json +4 -0
- package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.json +40 -0
- package/artifacts/contracts/shared/IAuthorizedComponent.sol/IAuthorizedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IAuthorizedComponent.sol/IAuthorizedComponent.json +38 -96
- package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponent.sol/IComponent.json +38 -96
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +226 -82
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +56 -84
- package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +28 -1
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +12 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +25 -77
- package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.json +12 -1
- package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
- package/artifacts/contracts/shared/IService.sol/IService.json +32 -71
- package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +1 -1
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +57 -72
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +1 -1
- package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +2 -2
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +34 -15
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +14 -3
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +24 -76
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +37 -3
- package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
- package/artifacts/contracts/shared/Service.sol/Service.json +31 -70
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +29 -42
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +17 -30
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +34 -34
- package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
- package/artifacts/contracts/staking/IStaking.sol/IStaking.json +56 -101
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +36 -75
- package/artifacts/contracts/staking/ITargetLimitHandler.sol/ITargetLimitHandler.dbg.json +1 -1
- package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
- package/artifacts/contracts/staking/Staking.sol/Staking.json +109 -170
- package/artifacts/contracts/staking/StakingLib.sol/StakingLib.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingLib.sol/StakingLib.json +31 -26
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +124 -112
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +22 -5
- package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingService.sol/StakingService.json +65 -132
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +111 -105
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +204 -212
- package/artifacts/contracts/staking/TargetHandler.sol/TargetHandler.dbg.json +1 -1
- package/artifacts/contracts/staking/TargetHandler.sol/TargetHandler.json +19 -27
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +16 -16
- package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
- package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
- package/artifacts/contracts/type/ChainId.sol/ChainIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/ChainId.sol/ChainIdLib.json +2 -2
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +2 -2
- package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
- package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
- package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
- package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
- package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
- package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +1 -1
- package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +2 -2
- package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/NftId.sol/NftIdLib.json +2 -2
- package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
- package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
- package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
- package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +6 -6
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +2 -2
- package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
- package/artifacts/contracts/type/Referral.sol/ReferralLib.json +2 -2
- package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +2 -2
- package/artifacts/contracts/type/RequestIdSet.sol/LibRequestIdSet.dbg.json +1 -1
- package/artifacts/contracts/type/RequestIdSet.sol/LibRequestIdSet.json +2 -2
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +2 -2
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +4 -4
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
- package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
- package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
- package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
- package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
- package/artifacts/contracts/type/Version.sol/VersionLib.json +10 -10
- package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
- package/artifacts/contracts/type/Version.sol/VersionPartLib.json +6 -19
- package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
- package/artifacts/contracts/upgradeability/{IUpgradeable.sol/IUpgradeable.json → IVersionable.sol/IVersionable.json} +4 -54
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +86 -63
- package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
- package/artifacts/contracts/upgradeability/{Upgradeable.sol/Upgradeable.json → Versionable.sol/Versionable.json} +4 -54
- package/contracts/accounting/AccountingService.sol +6 -5
- package/contracts/accounting/AccountingServiceManager.sol +6 -4
- package/contracts/accounting/IAccountingService.sol +1 -1
- package/contracts/authorization/AccessAdmin.sol +19 -22
- package/contracts/authorization/AccessAdminLib.sol +9 -12
- package/contracts/authorization/AccessManagerCloneable.sol +48 -24
- package/contracts/authorization/Authorization.sol +2 -2
- package/contracts/authorization/IAccessAdmin.sol +3 -3
- package/contracts/authorization/IServiceAuthorization.sol +1 -1
- package/contracts/authorization/ServiceAuthorization.sol +4 -4
- package/contracts/distribution/BasicDistribution.sol +2 -0
- package/contracts/distribution/BasicDistributionAuthorization.sol +4 -5
- package/contracts/distribution/Distribution.sol +2 -0
- package/contracts/distribution/DistributionService.sol +20 -24
- package/contracts/distribution/DistributionServiceManager.sol +6 -4
- package/contracts/examples/fire/FirePool.sol +4 -0
- package/contracts/examples/fire/FireProduct.sol +4 -0
- package/contracts/examples/flight/FlightLib.sol +5 -1
- package/contracts/examples/flight/FlightOracle.sol +8 -0
- package/contracts/examples/flight/FlightPool.sol +4 -0
- package/contracts/examples/flight/FlightProduct.sol +29 -4
- package/contracts/examples/unpermissioned/SimpleDistribution.sol +4 -0
- package/contracts/examples/unpermissioned/SimpleOracle.sol +4 -0
- package/contracts/examples/unpermissioned/SimplePool.sol +4 -0
- package/contracts/examples/unpermissioned/SimpleProduct.sol +4 -0
- package/contracts/instance/Instance.sol +11 -7
- package/contracts/instance/InstanceAdmin.sol +17 -10
- package/contracts/instance/InstanceAuthorizationV3.sol +2 -4
- package/contracts/instance/InstanceReader.sol +15 -15
- package/contracts/instance/InstanceService.sol +20 -18
- package/contracts/instance/InstanceServiceManager.sol +6 -4
- package/contracts/instance/base/Cloneable.sol +10 -4
- package/contracts/instance/base/ObjectSet.sol +2 -2
- package/contracts/oracle/BasicOracle.sol +2 -0
- package/contracts/oracle/BasicOracleAuthorization.sol +1 -3
- package/contracts/oracle/IOracleService.sol +4 -0
- package/contracts/oracle/Oracle.sol +4 -3
- package/contracts/oracle/OracleService.sol +67 -37
- package/contracts/oracle/OracleServiceManager.sol +6 -4
- package/contracts/pool/BasicPool.sol +4 -2
- package/contracts/pool/BasicPoolAuthorization.sol +4 -5
- package/contracts/pool/BundleService.sol +19 -25
- package/contracts/pool/BundleServiceManager.sol +7 -5
- package/contracts/pool/IPoolService.sol +6 -5
- package/contracts/pool/Pool.sol +3 -1
- package/contracts/pool/PoolLib.sol +102 -5
- package/contracts/pool/PoolService.sol +101 -67
- package/contracts/pool/PoolServiceManager.sol +6 -4
- package/contracts/product/ApplicationService.sol +34 -13
- package/contracts/product/ApplicationServiceManager.sol +6 -4
- package/contracts/product/BasicProduct.sol +2 -0
- package/contracts/product/BasicProductAuthorization.sol +4 -5
- package/contracts/product/ClaimService.sol +34 -10
- package/contracts/product/ClaimServiceManager.sol +7 -5
- package/contracts/product/IPolicyService.sol +1 -0
- package/contracts/product/PolicyService.sol +57 -44
- package/contracts/product/PolicyServiceManager.sol +6 -4
- package/contracts/product/PricingService.sol +8 -7
- package/contracts/product/PricingServiceManager.sol +6 -4
- package/contracts/product/Product.sol +2 -0
- package/contracts/product/RiskService.sol +40 -8
- package/contracts/product/RiskServiceManager.sol +6 -4
- package/contracts/registry/IRegistry.sol +14 -20
- package/contracts/registry/IRegistryService.sol +14 -10
- package/contracts/registry/IRelease.sol +3 -0
- package/contracts/registry/Registry.sol +78 -124
- package/contracts/registry/RegistryAdmin.sol +22 -11
- package/contracts/registry/RegistryAuthorization.sol +3 -4
- package/contracts/registry/RegistryService.sol +82 -99
- package/contracts/registry/RegistryServiceManager.sol +11 -4
- package/contracts/registry/ReleaseAdmin.sol +16 -9
- package/contracts/registry/ReleaseRegistry.sol +74 -64
- package/contracts/registry/ServiceAuthorizationV3.sol +3 -4
- package/contracts/registry/TokenRegistry.sol +15 -6
- package/contracts/shared/Component.sol +22 -27
- package/contracts/shared/ComponentService.sol +130 -45
- package/contracts/shared/ComponentServiceManager.sol +7 -5
- package/contracts/shared/ContractLib.sol +93 -359
- package/contracts/shared/IComponent.sol +3 -5
- package/contracts/shared/IComponentService.sol +14 -0
- package/contracts/shared/IInstanceLinkedComponent.sol +7 -3
- package/contracts/shared/INftOwnable.sol +2 -0
- package/contracts/shared/IRegisterable.sol +3 -14
- package/contracts/shared/IRegistryLinked.sol +3 -1
- package/contracts/shared/IService.sol +2 -2
- package/contracts/shared/InstanceLinkedComponent.sol +64 -29
- package/contracts/shared/NftOwnable.sol +22 -9
- package/contracts/shared/PolicyHolder.sol +4 -2
- package/contracts/shared/Registerable.sol +20 -37
- package/contracts/shared/RegistryLinked.sol +23 -4
- package/contracts/shared/Service.sol +9 -8
- package/contracts/shared/TokenHandler.sol +1 -4
- package/contracts/staking/IStaking.sol +2 -2
- package/contracts/staking/Staking.sol +33 -28
- package/contracts/staking/StakingLib.sol +1 -3
- package/contracts/staking/StakingManager.sol +6 -3
- package/contracts/staking/StakingReader.sol +17 -9
- package/contracts/staking/StakingService.sol +13 -16
- package/contracts/staking/StakingServiceManager.sol +8 -4
- package/contracts/staking/StakingStore.sol +8 -8
- package/contracts/staking/TargetHandler.sol +5 -4
- package/contracts/type/Version.sol +16 -15
- package/contracts/upgradeability/{IUpgradeable.sol → IVersionable.sol} +19 -13
- package/contracts/upgradeability/ProxyManager.sol +54 -46
- package/contracts/upgradeability/{Upgradeable.sol → Versionable.sol} +14 -25
- package/package.json +1 -1
- package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
- package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +0 -74
- package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
- package/artifacts/contracts/shared/Versionable.sol/Versionable.json +0 -74
- package/artifacts/contracts/upgradeability/IUpgradeable.sol/IUpgradeable.dbg.json +0 -4
- package/artifacts/contracts/upgradeability/Upgradeable.sol/Upgradeable.dbg.json +0 -4
- package/contracts/shared/IVersionable.sol +0 -19
- package/contracts/shared/Versionable.sol +0 -47
| @@ -2,7 +2,7 @@ | |
| 2 2 | 
             
            pragma solidity ^0.8.20;
         | 
| 3 3 |  | 
| 4 4 | 
             
            import {AccountingService} from "./AccountingService.sol";
         | 
| 5 | 
            -
            import { | 
| 5 | 
            +
            import {IVersionable} from "../upgradeability/IVersionable.sol";
         | 
| 6 6 | 
             
            import {ProxyManager} from "../upgradeability/ProxyManager.sol";
         | 
| 7 7 |  | 
| 8 8 | 
             
            contract AccountingServiceManager is ProxyManager {
         | 
| @@ -12,17 +12,19 @@ contract AccountingServiceManager is ProxyManager { | |
| 12 12 | 
             
                /// @dev initializes proxy manager with service implementation 
         | 
| 13 13 | 
             
                constructor(
         | 
| 14 14 | 
             
                    address authority, 
         | 
| 15 | 
            +
                    address registry,
         | 
| 15 16 | 
             
                    bytes32 salt
         | 
| 16 17 | 
             
                )
         | 
| 17 18 | 
             
                {
         | 
| 18 19 | 
             
                    AccountingService svc = new AccountingService();
         | 
| 19 | 
            -
                    bytes memory data = abi.encode(authority);
         | 
| 20 | 
            -
                     | 
| 20 | 
            +
                    bytes memory data = abi.encode(authority, registry);
         | 
| 21 | 
            +
                    IVersionable versionable = initialize(
         | 
| 22 | 
            +
                        registry,
         | 
| 21 23 | 
             
                        address(svc), 
         | 
| 22 24 | 
             
                        data,
         | 
| 23 25 | 
             
                        salt);
         | 
| 24 26 |  | 
| 25 | 
            -
                    _accountingService = AccountingService(address( | 
| 27 | 
            +
                    _accountingService = AccountingService(address(versionable));
         | 
| 26 28 | 
             
                }
         | 
| 27 29 |  | 
| 28 30 | 
             
                //--- view functions ----------------------------------------------------//
         | 
| @@ -7,20 +7,20 @@ import {EnumerableSet} from "@openzeppelin/contracts/utils/structs/EnumerableSet | |
| 7 7 | 
             
            import {IAccess} from "./IAccess.sol";
         | 
| 8 8 | 
             
            import {IAccessAdmin} from "./IAccessAdmin.sol";
         | 
| 9 9 | 
             
            import {IAuthorization} from "./IAuthorization.sol";
         | 
| 10 | 
            +
            import {IRegistry} from "../registry/IRegistry.sol";
         | 
| 10 11 | 
             
            import {IServiceAuthorization} from "./IServiceAuthorization.sol";
         | 
| 11 12 |  | 
| 12 13 | 
             
            import {AccessAdminLib} from "./AccessAdminLib.sol";
         | 
| 13 14 | 
             
            import {AccessManagerCloneable} from "./AccessManagerCloneable.sol";
         | 
| 14 15 | 
             
            import {Blocknumber, BlocknumberLib} from "../type/Blocknumber.sol";
         | 
| 15 16 | 
             
            import {ContractLib} from "../shared/ContractLib.sol";
         | 
| 16 | 
            -
            import {NftId} from "../type/NftId.sol";
         | 
| 17 | 
            +
            import {NftId, NftIdLib} from "../type/NftId.sol";
         | 
| 17 18 | 
             
            import {ObjectType} from "../type/ObjectType.sol";
         | 
| 18 19 | 
             
            import {RoleId, RoleIdLib, ADMIN_ROLE, PUBLIC_ROLE} from "../type/RoleId.sol";
         | 
| 19 | 
            -
            import {RegistryLinked} from "../shared/RegistryLinked.sol";
         | 
| 20 20 | 
             
            import {Selector, SelectorSetLib} from "../type/Selector.sol";
         | 
| 21 21 | 
             
            import {Str, StrLib} from "../type/String.sol";
         | 
| 22 22 | 
             
            import {TimestampLib} from "../type/Timestamp.sol";
         | 
| 23 | 
            -
            import { | 
| 23 | 
            +
            import {VersionPart} from "../type/Version.sol";
         | 
| 24 24 |  | 
| 25 25 |  | 
| 26 26 | 
             
            /**
         | 
| @@ -30,7 +30,6 @@ import {VersionPartLib, VersionPart} from "../type/Version.sol"; | |
| 30 30 | 
             
             */ 
         | 
| 31 31 | 
             
            contract AccessAdmin is
         | 
| 32 32 | 
             
                AccessManagedUpgradeable,
         | 
| 33 | 
            -
                RegistryLinked,
         | 
| 34 33 | 
             
                IAccessAdmin
         | 
| 35 34 | 
             
            {
         | 
| 36 35 | 
             
                using EnumerableSet for EnumerableSet.AddressSet;
         | 
| @@ -92,16 +91,12 @@ contract AccessAdmin is | |
| 92 91 | 
             
                /// Internally initializes access manager with this admin and creates basic role setup.
         | 
| 93 92 | 
             
                function initialize(
         | 
| 94 93 | 
             
                    address authority,
         | 
| 95 | 
            -
                    string memory adminName | 
| 96 | 
            -
                    VersionPart release 
         | 
| 94 | 
            +
                    string memory adminName 
         | 
| 97 95 | 
             
                )
         | 
| 98 96 | 
             
                    public
         | 
| 97 | 
            +
                    initializer()
         | 
| 99 98 | 
             
                {
         | 
| 100 | 
            -
                     | 
| 101 | 
            -
                        revert InvalidInitialization();
         | 
| 102 | 
            -
                    }
         | 
| 103 | 
            -
             | 
| 104 | 
            -
                    __AccessAdmin_init(authority, adminName, release);
         | 
| 99 | 
            +
                    __AccessAdmin_init(authority, adminName);
         | 
| 105 100 | 
             
                }
         | 
| 106 101 |  | 
| 107 102 |  | 
| @@ -111,16 +106,14 @@ contract AccessAdmin is | |
| 111 106 | 
             
                /// - this function as well as any completeSetup functions MUST be called in the same tx.
         | 
| 112 107 | 
             
                function __AccessAdmin_init(
         | 
| 113 108 | 
             
                    address authority, 
         | 
| 114 | 
            -
                    string memory adminName | 
| 115 | 
            -
                    VersionPart release
         | 
| 109 | 
            +
                    string memory adminName 
         | 
| 116 110 | 
             
                )
         | 
| 117 111 | 
             
                    internal
         | 
| 118 | 
            -
                     | 
| 112 | 
            +
                    onlyInitializing()
         | 
| 119 113 | 
             
                {
         | 
| 120 114 | 
             
                    AccessAdminLib.checkInitParameters(authority, adminName);
         | 
| 121 | 
            -
             | 
| 122 115 | 
             
                    _authority = AccessManagerCloneable(authority);
         | 
| 123 | 
            -
                    _authority.initialize(address(this) | 
| 116 | 
            +
                    _authority.initialize(address(this));
         | 
| 124 117 |  | 
| 125 118 | 
             
                    // delayed additional check for authority after its initialization
         | 
| 126 119 | 
             
                    if (!ContractLib.isAuthority(authority)) {
         | 
| @@ -128,7 +121,7 @@ contract AccessAdmin is | |
| 128 121 | 
             
                    }
         | 
| 129 122 |  | 
| 130 123 | 
             
                    // effects
         | 
| 131 | 
            -
                    // set and initialize this contract as
         | 
| 124 | 
            +
                    // set and initialize this access manager contract as
         | 
| 132 125 | 
             
                    // the admin (ADMIN_ROLE) of the provided authority
         | 
| 133 126 | 
             
                    __AccessManaged_init(authority);
         | 
| 134 127 |  | 
| @@ -136,7 +129,7 @@ contract AccessAdmin is | |
| 136 129 | 
             
                    _adminName = adminName;
         | 
| 137 130 |  | 
| 138 131 | 
             
                    // set initial linked NFT ID to zero
         | 
| 139 | 
            -
                     | 
| 132 | 
            +
                    _linkedNftId = NftIdLib.zero();
         | 
| 140 133 |  | 
| 141 134 | 
             
                    // setup admin role
         | 
| 142 135 | 
             
                    _createRoleUnchecked(
         | 
| @@ -156,7 +149,12 @@ contract AccessAdmin is | |
| 156 149 | 
             
                //--- view functions for access admin ---------------------------------------//
         | 
| 157 150 |  | 
| 158 151 | 
             
                function getRelease() public view virtual returns (VersionPart release) {
         | 
| 159 | 
            -
                    return  | 
| 152 | 
            +
                    return _authority.getRelease();
         | 
| 153 | 
            +
                }
         | 
| 154 | 
            +
             | 
| 155 | 
            +
             | 
| 156 | 
            +
                function getRegistry() public view returns (IRegistry registry) {
         | 
| 157 | 
            +
                    return _authority.getRegistry();
         | 
| 160 158 | 
             
                }
         | 
| 161 159 |  | 
| 162 160 |  | 
| @@ -299,12 +297,11 @@ contract AccessAdmin is | |
| 299 297 | 
             
                //--- internal/private functions -------------------------------------------------//
         | 
| 300 298 |  | 
| 301 299 | 
             
                function _linkToNftOwnable(address registerable) internal {
         | 
| 302 | 
            -
                     | 
| 303 | 
            -
                    if (nftId.eqz()) {
         | 
| 300 | 
            +
                    if (!getRegistry().isRegistered(registerable)) {
         | 
| 304 301 | 
             
                        revert ErrorAccessAdminNotRegistered(registerable);
         | 
| 305 302 | 
             
                    }
         | 
| 306 303 |  | 
| 307 | 
            -
                    _linkedNftId =  | 
| 304 | 
            +
                    _linkedNftId = getRegistry().getNftIdForAddress(registerable);
         | 
| 308 305 | 
             
                }
         | 
| 309 306 |  | 
| 310 307 |  | 
| @@ -335,9 +335,9 @@ library AccessAdminLib { // ACCESS_ADMIN_LIB | |
| 335 335 | 
             
                    view
         | 
| 336 336 | 
             
                    returns (IAuthorization componentAuthorization)
         | 
| 337 337 | 
             
                {
         | 
| 338 | 
            -
                     | 
| 339 | 
            -
                    checkIsRegistered(componentAddress, expectedType, expecteRelease);
         | 
| 338 | 
            +
                    checkIsRegistered(address(accessAdmin.getRegistry()), componentAddress, expectedType);
         | 
| 340 339 |  | 
| 340 | 
            +
                    VersionPart expecteRelease = accessAdmin.getRelease();
         | 
| 341 341 | 
             
                    IAuthorizedComponent component = IAuthorizedComponent(componentAddress);
         | 
| 342 342 | 
             
                    componentAuthorization = component.getAuthorization();
         | 
| 343 343 |  | 
| @@ -435,25 +435,22 @@ library AccessAdminLib { // ACCESS_ADMIN_LIB | |
| 435 435 |  | 
| 436 436 |  | 
| 437 437 | 
             
                function checkIsRegistered( 
         | 
| 438 | 
            +
                    address registry,
         | 
| 438 439 | 
             
                    address target,
         | 
| 439 | 
            -
                    ObjectType expectedType | 
| 440 | 
            -
                    VersionPart expectedRelease
         | 
| 440 | 
            +
                    ObjectType expectedType
         | 
| 441 441 | 
             
                )
         | 
| 442 442 | 
             
                    public
         | 
| 443 443 | 
             
                    view 
         | 
| 444 444 | 
             
                {
         | 
| 445 | 
            -
                     | 
| 445 | 
            +
                    checkRegistry(registry);
         | 
| 446 446 |  | 
| 447 | 
            -
                     | 
| 447 | 
            +
                    ObjectType tagetType = IRegistry(registry).getObjectInfo(target).objectType;
         | 
| 448 | 
            +
                    if (tagetType.eqz()) {
         | 
| 448 449 | 
             
                        revert IAccessAdmin.ErrorAccessAdminNotRegistered(target);
         | 
| 449 450 | 
             
                    }
         | 
| 450 451 |  | 
| 451 | 
            -
                    if ( | 
| 452 | 
            -
                        revert IAccessAdmin.ErrorAccessAdminTargetTypeMismatch(target, expectedType,  | 
| 453 | 
            -
                    }
         | 
| 454 | 
            -
             | 
| 455 | 
            -
                    if (info.release != expectedRelease) {
         | 
| 456 | 
            -
                        revert IAccessAdmin.ErrorAccessAdminTargetReleaseMismatch(target, expectedRelease, info.release);
         | 
| 452 | 
            +
                    if (tagetType != expectedType) {
         | 
| 453 | 
            +
                        revert IAccessAdmin.ErrorAccessAdminTargetTypeMismatch(target, expectedType, tagetType);
         | 
| 457 454 | 
             
                    }
         | 
| 458 455 | 
             
                }
         | 
| 459 456 |  | 
| @@ -4,9 +4,9 @@ pragma solidity ^0.8.20; | |
| 4 4 | 
             
            import {AccessManagerUpgradeable} from "@openzeppelin/contracts-upgradeable/access/manager/AccessManagerUpgradeable.sol";
         | 
| 5 5 | 
             
            import {IAccessManager} from "@openzeppelin/contracts/access/manager/IAccessManager.sol";
         | 
| 6 6 |  | 
| 7 | 
            -
            import {IAccessAdmin} from "./IAccessAdmin.sol";
         | 
| 8 7 | 
             
            import {InitializableERC165} from "../shared/InitializableERC165.sol";
         | 
| 9 | 
            -
            import { | 
| 8 | 
            +
            import {RegistryLinked} from "../shared/RegistryLinked.sol";
         | 
| 9 | 
            +
            import {VersionPart} from "../type/Version.sol";
         | 
| 10 10 |  | 
| 11 11 |  | 
| 12 12 | 
             
            /// @dev An AccessManager based on OpenZeppelin that is cloneable and has a central lock property.
         | 
| @@ -14,7 +14,8 @@ import {VersionPartLib, VersionPart} from "../type/Version.sol"; | |
| 14 14 | 
             
            /// Cloned by upon release preparation and instance cloning.
         | 
| 15 15 | 
             
            contract AccessManagerCloneable is
         | 
| 16 16 | 
             
                AccessManagerUpgradeable,
         | 
| 17 | 
            -
                InitializableERC165
         | 
| 17 | 
            +
                InitializableERC165,
         | 
| 18 | 
            +
                RegistryLinked
         | 
| 18 19 | 
             
            {
         | 
| 19 20 | 
             
                error ErrorAccessManagerCallerNotAdmin(address caller);
         | 
| 20 21 | 
             
                error ErrorAccessManagerRegistryAlreadySet(address registry);
         | 
| @@ -23,6 +24,7 @@ contract AccessManagerCloneable is | |
| 23 24 | 
             
                error ErrorAccessManagerTargetAdminLocked(address target);
         | 
| 24 25 | 
             
                error ErrorAccessManagerCallerAdminLocked(address caller);
         | 
| 25 26 |  | 
| 27 | 
            +
                VersionPart private _release;
         | 
| 26 28 | 
             
                bool private _isLocked;
         | 
| 27 29 |  | 
| 28 30 |  | 
| @@ -34,36 +36,34 @@ contract AccessManagerCloneable is | |
| 34 36 | 
             
                    _;
         | 
| 35 37 | 
             
                }
         | 
| 36 38 |  | 
| 37 | 
            -
                function initialize(address adminAddress, VersionPart release)
         | 
| 38 | 
            -
                    public
         | 
| 39 39 |  | 
| 40 | 
            +
                function initialize(address admin)
         | 
| 41 | 
            +
                    public
         | 
| 42 | 
            +
                    initializer()
         | 
| 40 43 | 
             
                {
         | 
| 41 | 
            -
                     | 
| 42 | 
            -
             | 
| 43 | 
            -
                    }
         | 
| 44 | 
            +
                    __ERC165_init();
         | 
| 45 | 
            +
                    __AccessManager_init(admin);
         | 
| 44 46 |  | 
| 45 | 
            -
                     | 
| 47 | 
            +
                    _registerInterface(type(IAccessManager).interfaceId);
         | 
| 46 48 | 
             
                }
         | 
| 47 49 |  | 
| 48 | 
            -
             | 
| 49 | 
            -
             | 
| 50 | 
            +
             | 
| 51 | 
            +
                /// @dev Completes the setup of the access manager.
         | 
| 52 | 
            +
                /// Links the access manager to the registry and sets the release version.
         | 
| 53 | 
            +
                function completeSetup(
         | 
| 54 | 
            +
                    address registry, 
         | 
| 50 55 | 
             
                    VersionPart release
         | 
| 51 56 | 
             
                )
         | 
| 52 | 
            -
                     | 
| 53 | 
            -
                     | 
| 57 | 
            +
                    external
         | 
| 58 | 
            +
                    onlyAdminRole
         | 
| 59 | 
            +
                    reinitializer(uint64(release.toInt()))
         | 
| 54 60 | 
             
                {
         | 
| 55 | 
            -
                     | 
| 56 | 
            -
             | 
| 57 | 
            -
                    }
         | 
| 58 | 
            -
             | 
| 59 | 
            -
                    __ERC165_init();
         | 
| 60 | 
            -
                    __AccessManager_init(admin);
         | 
| 61 | 
            -
             | 
| 62 | 
            -
                    _registerInterface(type(IAccessManager).interfaceId);
         | 
| 61 | 
            +
                    _checkAndSetRegistry(registry);
         | 
| 62 | 
            +
                    _checkAndSetRelease(release);
         | 
| 63 63 | 
             
                }
         | 
| 64 64 |  | 
| 65 65 | 
             
                /// @dev Returns true if the caller is authorized to call the target with the given selector and the manager lock is not set to locked.
         | 
| 66 | 
            -
                ///  | 
| 66 | 
            +
                /// Feturn values as in OpenZeppelin AccessManager.
         | 
| 67 67 | 
             
                /// For a locked manager the function reverts with ErrorAccessManagerTargetAdminLocked.
         | 
| 68 68 | 
             
                function canCall(
         | 
| 69 69 | 
             
                    address caller,
         | 
| @@ -101,10 +101,10 @@ contract AccessManagerCloneable is | |
| 101 101 | 
             
                /// For the registry admin release 3 is returned.
         | 
| 102 102 | 
             
                /// For the release admin and the instance admin the actual release version is returned.
         | 
| 103 103 | 
             
                function getRelease() external view returns (VersionPart release) {
         | 
| 104 | 
            -
                    return  | 
| 105 | 
            -
                        uint8(_getInitializedVersion()));
         | 
| 104 | 
            +
                    return _release;
         | 
| 106 105 | 
             
                }
         | 
| 107 106 |  | 
| 107 | 
            +
             | 
| 108 108 | 
             
                /// @dev Returns true iff all contracts of this access manager are locked.
         | 
| 109 109 | 
             
                function isLocked()
         | 
| 110 110 | 
             
                    public
         | 
| @@ -113,4 +113,28 @@ contract AccessManagerCloneable is | |
| 113 113 | 
             
                {
         | 
| 114 114 | 
             
                    return _isLocked;
         | 
| 115 115 | 
             
                }
         | 
| 116 | 
            +
             | 
| 117 | 
            +
             | 
| 118 | 
            +
                function _checkAndSetRelease(VersionPart release)
         | 
| 119 | 
            +
                    internal
         | 
| 120 | 
            +
                {
         | 
| 121 | 
            +
                    if (!release.isValidRelease()) {
         | 
| 122 | 
            +
                        revert ErrorAccessManagerInvalidRelease(release);
         | 
| 123 | 
            +
                    }
         | 
| 124 | 
            +
             | 
| 125 | 
            +
                    _release = release;
         | 
| 126 | 
            +
                }
         | 
| 127 | 
            +
             | 
| 128 | 
            +
             | 
| 129 | 
            +
                function _checkAndSetRegistry(address registry)
         | 
| 130 | 
            +
                    internal
         | 
| 131 | 
            +
                {
         | 
| 132 | 
            +
                    // checks
         | 
| 133 | 
            +
                    if(address(getRegistry()) != address(0)) {
         | 
| 134 | 
            +
                        revert ErrorAccessManagerRegistryAlreadySet(address(getRegistry()) );
         | 
| 135 | 
            +
                    }
         | 
| 136 | 
            +
             | 
| 137 | 
            +
                    // effects
         | 
| 138 | 
            +
                    __RegistryLinked_init(registry);
         | 
| 139 | 
            +
                }
         | 
| 116 140 | 
             
            }
         | 
| @@ -9,7 +9,7 @@ import {ObjectType} from "../type/ObjectType.sol"; | |
| 9 9 | 
             
            import {RoleId, RoleIdLib} from "../type/RoleId.sol";
         | 
| 10 10 | 
             
            import {ServiceAuthorization} from "../authorization/ServiceAuthorization.sol";
         | 
| 11 11 | 
             
            import {Str, StrLib} from "../type/String.sol";
         | 
| 12 | 
            -
             | 
| 12 | 
            +
             | 
| 13 13 |  | 
| 14 14 | 
             
            contract Authorization is
         | 
| 15 15 | 
             
                ServiceAuthorization,
         | 
| @@ -30,7 +30,7 @@ contract Authorization is | |
| 30 30 | 
             
                constructor(
         | 
| 31 31 | 
             
                    string memory mainTargetName, 
         | 
| 32 32 | 
             
                    ObjectType domain,
         | 
| 33 | 
            -
                     | 
| 33 | 
            +
                    uint8 release,
         | 
| 34 34 | 
             
                    string memory commitHash,
         | 
| 35 35 | 
             
                    IAccess.TargetType targetType,
         | 
| 36 36 | 
             
                    bool includeTokenHandler
         | 
| @@ -6,6 +6,7 @@ import {IAccessManaged} from "@openzeppelin/contracts/access/manager/IAccessMana | |
| 6 6 | 
             
            import {IAccess} from "./IAccess.sol";
         | 
| 7 7 | 
             
            import {IAuthorization} from "./IAuthorization.sol";
         | 
| 8 8 | 
             
            import {IRegistryLinked} from "../shared/IRegistryLinked.sol";
         | 
| 9 | 
            +
            import {IRelease} from "../registry/IRelease.sol";
         | 
| 9 10 |  | 
| 10 11 | 
             
            import {Blocknumber} from "../type/Blocknumber.sol";
         | 
| 11 12 | 
             
            import {NftId} from "../type/NftId.sol";
         | 
| @@ -18,7 +19,8 @@ import {VersionPart} from "../type/Version.sol"; | |
| 18 19 | 
             
            interface IAccessAdmin is 
         | 
| 19 20 | 
             
                IAccessManaged,
         | 
| 20 21 | 
             
                IAccess,
         | 
| 21 | 
            -
                IRegistryLinked
         | 
| 22 | 
            +
                IRegistryLinked,
         | 
| 23 | 
            +
                IRelease
         | 
| 22 24 | 
             
            {
         | 
| 23 25 |  | 
| 24 26 | 
             
                // roles, targets and functions
         | 
| @@ -57,7 +59,6 @@ interface IAccessAdmin is | |
| 57 59 | 
             
                error ErrorAccessAdminTargetNotCreated(address target);
         | 
| 58 60 | 
             
                error ErrorAccessAdminTargetNotRegistered(address target);
         | 
| 59 61 | 
             
                error ErrorAccessAdminTargetTypeMismatch(address target, ObjectType expectedType, ObjectType actualType);
         | 
| 60 | 
            -
                error ErrorAccessAdminTargetReleaseMismatch(address target, VersionPart expectedRelease, VersionPart actualRelease);
         | 
| 61 62 |  | 
| 62 63 | 
             
                // check authorization
         | 
| 63 64 | 
             
                error ErrorAccessAdminAlreadyInitialized(address authorization);
         | 
| @@ -138,5 +139,4 @@ interface IAccessAdmin is | |
| 138 139 |  | 
| 139 140 | 
             
                function authorizedFunctions(address target) external view returns (uint256 numberOfFunctions);
         | 
| 140 141 | 
             
                function getAuthorizedFunction(address target, uint256 idx) external view returns (FunctionInfo memory func, RoleId roleId);
         | 
| 141 | 
            -
                    function getRelease() external view returns (VersionPart);
         | 
| 142 142 | 
             
            }
         | 
| @@ -16,7 +16,7 @@ interface IServiceAuthorization is | |
| 16 16 |  | 
| 17 17 | 
             
                 error ErrorAuthorizationMainTargetNameEmpty();
         | 
| 18 18 | 
             
                 error ErrorAuthorizationTargetDomainZero();
         | 
| 19 | 
            -
                 error ErrorAuthorizationReleaseInvalid( | 
| 19 | 
            +
                 error ErrorAuthorizationReleaseInvalid(uint8 release);
         | 
| 20 20 | 
             
                 error ErrorAuthorizationCommitHashInvalid(string commitHash);
         | 
| 21 21 |  | 
| 22 22 | 
             
                 /// @dev Returns the main domain of the authorization.
         | 
| @@ -30,7 +30,7 @@ contract ServiceAuthorization is | |
| 30 30 | 
             
                 string public constant ROLE_NAME_SUFFIX = "_Role";
         | 
| 31 31 |  | 
| 32 32 | 
             
                 ObjectType public immutable DOMAIN;
         | 
| 33 | 
            -
                  | 
| 33 | 
            +
                 uint256 internal immutable _release;
         | 
| 34 34 | 
             
                 string internal _commitHash;
         | 
| 35 35 |  | 
| 36 36 | 
             
                 string internal _mainTargetName;
         | 
| @@ -55,7 +55,7 @@ contract ServiceAuthorization is | |
| 55 55 | 
             
                 constructor(
         | 
| 56 56 | 
             
                      string memory mainTargetName, 
         | 
| 57 57 | 
             
                      ObjectType domain,
         | 
| 58 | 
            -
                       | 
| 58 | 
            +
                      uint8 release,
         | 
| 59 59 | 
             
                      string memory commitHash
         | 
| 60 60 | 
             
                 )
         | 
| 61 61 | 
             
                 {
         | 
| @@ -68,7 +68,7 @@ contract ServiceAuthorization is | |
| 68 68 | 
             
                           revert ErrorAuthorizationTargetDomainZero();
         | 
| 69 69 | 
             
                      }
         | 
| 70 70 |  | 
| 71 | 
            -
                      if ( | 
| 71 | 
            +
                      if (release < VersionPartLib.releaseMin().toInt() || release >= VersionPartLib.releaseMax().toInt()) {
         | 
| 72 72 | 
             
                           revert ErrorAuthorizationReleaseInvalid(release);
         | 
| 73 73 | 
             
                      }
         | 
| 74 74 |  | 
| @@ -103,7 +103,7 @@ contract ServiceAuthorization is | |
| 103 103 |  | 
| 104 104 | 
             
                 /// @inheritdoc IServiceAuthorization
         | 
| 105 105 | 
             
                 function getRelease() public view returns(VersionPart release) {
         | 
| 106 | 
            -
                      return _release;
         | 
| 106 | 
            +
                      return VersionPartLib.toVersionPart(_release);
         | 
| 107 107 | 
             
                 }
         | 
| 108 108 |  | 
| 109 109 | 
             
                 /// @inheritdoc IServiceAuthorization
         | 
| @@ -119,6 +119,7 @@ contract BasicDistribution is | |
| 119 119 | 
             
                }
         | 
| 120 120 |  | 
| 121 121 | 
             
                function _initializeBasicDistribution(
         | 
| 122 | 
            +
                    address registry,
         | 
| 122 123 | 
             
                    NftId instanceNftId,
         | 
| 123 124 | 
             
                    IAuthorization authorization, 
         | 
| 124 125 | 
             
                    address initialOwner,
         | 
| @@ -129,6 +130,7 @@ contract BasicDistribution is | |
| 129 130 | 
             
                    onlyInitializing()
         | 
| 130 131 | 
             
                {
         | 
| 131 132 | 
             
                    __Distribution_init(
         | 
| 133 | 
            +
                        registry, 
         | 
| 132 134 | 
             
                        instanceNftId, 
         | 
| 133 135 | 
             
                        authorization,
         | 
| 134 136 | 
             
                        false,
         | 
| @@ -2,16 +2,15 @@ | |
| 2 2 | 
             
            pragma solidity ^0.8.20;
         | 
| 3 3 |  | 
| 4 4 | 
             
            import {IAccess} from "../authorization/IAccess.sol";
         | 
| 5 | 
            -
            import { | 
| 5 | 
            +
            import {IInstanceLinkedComponent} from "../shared/IInstanceLinkedComponent.sol";
         | 
| 6 6 |  | 
| 7 7 | 
             
            import {Authorization} from "../authorization/Authorization.sol";
         | 
| 8 8 | 
             
            import {BasicDistribution} from "./BasicDistribution.sol"; 
         | 
| 9 9 | 
             
            import {Distribution} from "./Distribution.sol";
         | 
| 10 10 | 
             
            import {COMPONENT, DISTRIBUTION} from "../type/ObjectType.sol";
         | 
| 11 11 | 
             
            import {PUBLIC_ROLE} from "../type/RoleId.sol";
         | 
| 12 | 
            -
            import {GIF_INITIAL_RELEASE} from "../registry/Registry.sol";
         | 
| 13 12 | 
             
            import {TokenHandler} from "../shared/TokenHandler.sol";
         | 
| 14 | 
            -
             | 
| 13 | 
            +
             | 
| 15 14 |  | 
| 16 15 | 
             
            contract BasicDistributionAuthorization
         | 
| 17 16 | 
             
                 is Authorization
         | 
| @@ -21,7 +20,7 @@ contract BasicDistributionAuthorization | |
| 21 20 | 
             
                      Authorization(
         | 
| 22 21 | 
             
                           distributionName, 
         | 
| 23 22 | 
             
                           DISTRIBUTION(), 
         | 
| 24 | 
            -
                            | 
| 23 | 
            +
                           3,
         | 
| 25 24 | 
             
                           COMMIT_HASH,
         | 
| 26 25 | 
             
                           TargetType.Component, 
         | 
| 27 26 | 
             
                           true)
         | 
| @@ -61,7 +60,7 @@ contract BasicDistributionAuthorization | |
| 61 60 | 
             
                      _authorize(functions, BasicDistribution.changeDistributorType.selector, "changeDistributorType");
         | 
| 62 61 | 
             
                      _authorize(functions, BasicDistribution.createReferral.selector, "createReferral");
         | 
| 63 62 |  | 
| 64 | 
            -
                      _authorize(functions,  | 
| 63 | 
            +
                      _authorize(functions, IInstanceLinkedComponent.withdrawFees.selector, "withdrawFees");
         | 
| 65 64 | 
             
                      _authorize(functions, Distribution.withdrawCommission.selector, "withdrawCommission");
         | 
| 66 65 | 
             
                 }
         | 
| 67 66 | 
             
            }
         | 
| @@ -104,6 +104,7 @@ abstract contract Distribution is | |
| 104 104 |  | 
| 105 105 |  | 
| 106 106 | 
             
                function __Distribution_init(
         | 
| 107 | 
            +
                    address registry,
         | 
| 107 108 | 
             
                    NftId productNftId,
         | 
| 108 109 | 
             
                    IAuthorization authorization, 
         | 
| 109 110 | 
             
                    bool isInterceptor,
         | 
| @@ -115,6 +116,7 @@ abstract contract Distribution is | |
| 115 116 | 
             
                    onlyInitializing()
         | 
| 116 117 | 
             
                {
         | 
| 117 118 | 
             
                    __InstanceLinkedComponent_init(
         | 
| 119 | 
            +
                        registry, 
         | 
| 118 120 | 
             
                        productNftId, 
         | 
| 119 121 | 
             
                        name, 
         | 
| 120 122 | 
             
                        DISTRIBUTION(), 
         | 
| @@ -20,6 +20,8 @@ import {KEEP_STATE} from "../type/StateId.sol"; | |
| 20 20 | 
             
            import {ObjectType, ACCOUNTING, COMPONENT, DISTRIBUTION, INSTANCE, DISTRIBUTION, DISTRIBUTOR, REGISTRY} from "../type/ObjectType.sol";
         | 
| 21 21 | 
             
            import {InstanceReader} from "../instance/InstanceReader.sol";
         | 
| 22 22 | 
             
            import {InstanceStore} from "../instance/InstanceStore.sol";
         | 
| 23 | 
            +
            // TODO PoolLib feels wrong, should likely go in a component type independent lib
         | 
| 24 | 
            +
            import {PoolLib} from "../pool/PoolLib.sol";
         | 
| 23 25 | 
             
            import {ReferralId, ReferralStatus, ReferralLib, REFERRAL_OK, REFERRAL_ERROR_UNKNOWN, REFERRAL_ERROR_EXPIRED, REFERRAL_ERROR_EXHAUSTED} from "../type/Referral.sol";
         | 
| 24 26 | 
             
            import {Seconds} from "../type/Seconds.sol";
         | 
| 25 27 | 
             
            import {Service} from "../shared/Service.sol";
         | 
| @@ -42,13 +44,14 @@ contract DistributionService is | |
| 42 44 | 
             
                )
         | 
| 43 45 | 
             
                    internal
         | 
| 44 46 | 
             
                    virtual override
         | 
| 45 | 
            -
                     | 
| 47 | 
            +
                    initializer()
         | 
| 46 48 | 
             
                {
         | 
| 47 49 | 
             
                    (
         | 
| 48 | 
            -
                        address authority
         | 
| 49 | 
            -
             | 
| 50 | 
            +
                        address authority,
         | 
| 51 | 
            +
                        address registry
         | 
| 52 | 
            +
                    ) = abi.decode(data, (address, address));
         | 
| 50 53 |  | 
| 51 | 
            -
                    __Service_init(authority, owner);
         | 
| 54 | 
            +
                    __Service_init(authority, registry, owner);
         | 
| 52 55 |  | 
| 53 56 | 
             
                    _accountingService = IAccountingService(_getServiceAddress(ACCOUNTING()));
         | 
| 54 57 | 
             
                    _componentService = IComponentService(_getServiceAddress(COMPONENT()));
         | 
| @@ -78,7 +81,7 @@ contract DistributionService is | |
| 78 81 | 
             
                    (NftId distributionNftId, IInstance instance) = _getAndVerifyActiveDistribution();
         | 
| 79 82 |  | 
| 80 83 | 
             
                    {
         | 
| 81 | 
            -
                        NftId productNftId =  | 
| 84 | 
            +
                        NftId productNftId = getRegistry().getParentNftId(distributionNftId);
         | 
| 82 85 | 
             
                        IComponents.FeeInfo memory feeInfo = instance.getInstanceReader().getFeeInfo(productNftId);
         | 
| 83 86 |  | 
| 84 87 | 
             
                        UFixed variableDistributionFees = feeInfo.distributionFee.fractionalFee;
         | 
| @@ -131,12 +134,11 @@ contract DistributionService is | |
| 131 134 | 
             
                            NftIdLib.zero(), 
         | 
| 132 135 | 
             
                            distributionNftId,
         | 
| 133 136 | 
             
                            DISTRIBUTOR(),
         | 
| 134 | 
            -
                            getRelease(),
         | 
| 135 137 | 
             
                            true, // intercepting property for bundles is defined on pool
         | 
| 136 | 
            -
                            address(0) | 
| 137 | 
            -
             | 
| 138 | 
            -
             | 
| 139 | 
            -
             | 
| 138 | 
            +
                            address(0),
         | 
| 139 | 
            +
                            distributor,
         | 
| 140 | 
            +
                            ""
         | 
| 141 | 
            +
                        ));
         | 
| 140 142 |  | 
| 141 143 | 
             
                    IDistribution.DistributorInfo memory info = IDistribution.DistributorInfo({
         | 
| 142 144 | 
             
                        distributorType: distributorType,
         | 
| @@ -195,11 +197,9 @@ contract DistributionService is | |
| 195 197 | 
             
                        revert ErrorDistributionServiceExpirationInvalid(expiryAt);
         | 
| 196 198 | 
             
                    }
         | 
| 197 199 |  | 
| 198 | 
            -
                     | 
| 199 | 
            -
             | 
| 200 | 
            -
                         | 
| 201 | 
            -
                            revert ErrorDistributionServiceDistributorDistributionMismatch(distributorNftId, distributorDistributionNftId, distributionNftId);
         | 
| 202 | 
            -
                        }
         | 
| 200 | 
            +
                    NftId distributorDistributionNftId = getRegistry().getParentNftId(distributorNftId);
         | 
| 201 | 
            +
                    if (distributorDistributionNftId != distributionNftId) {
         | 
| 202 | 
            +
                        revert ErrorDistributionServiceDistributorDistributionMismatch(distributorNftId, distributorDistributionNftId, distributionNftId);
         | 
| 203 203 | 
             
                    }
         | 
| 204 204 |  | 
| 205 205 | 
             
                    {
         | 
| @@ -251,7 +251,7 @@ contract DistributionService is | |
| 251 251 | 
             
                    onlyNftOfType(distributionNftId, DISTRIBUTION())
         | 
| 252 252 | 
             
                {
         | 
| 253 253 | 
             
                    if (referralIsValid(distributionNftId, referralId)) {
         | 
| 254 | 
            -
                        IInstance instance = IInstance(ContractLib.getInstanceForComponent(distributionNftId));
         | 
| 254 | 
            +
                        IInstance instance = IInstance(ContractLib.getInstanceForComponent(getRegistry(), distributionNftId));
         | 
| 255 255 |  | 
| 256 256 | 
             
                        // update book keeping for referral info
         | 
| 257 257 | 
             
                        IDistribution.ReferralInfo memory referralInfo = instance.getInstanceReader().getReferralInfo(referralId);
         | 
| @@ -272,7 +272,7 @@ contract DistributionService is | |
| 272 272 | 
             
                    restricted()
         | 
| 273 273 | 
             
                    onlyNftOfType(distributionNftId, DISTRIBUTION())
         | 
| 274 274 | 
             
                {
         | 
| 275 | 
            -
                    IInstance instance = IInstance(ContractLib.getInstanceForComponent(distributionNftId));
         | 
| 275 | 
            +
                    IInstance instance = IInstance(ContractLib.getInstanceForComponent(getRegistry(), distributionNftId));
         | 
| 276 276 | 
             
                    InstanceReader reader = instance.getInstanceReader();
         | 
| 277 277 | 
             
                    InstanceStore store = instance.getInstanceStore();
         | 
| 278 278 |  | 
| @@ -340,7 +340,7 @@ contract DistributionService is | |
| 340 340 |  | 
| 341 341 | 
             
                    // transfer amount to distributor
         | 
| 342 342 | 
             
                    {
         | 
| 343 | 
            -
                        address distributor =  | 
| 343 | 
            +
                        address distributor = getRegistry().ownerOf(distributorNftId);
         | 
| 344 344 | 
             
                        emit LogDistributionServiceCommissionWithdrawn(distributorNftId, distributor, address(distributionInfo.tokenHandler.TOKEN()), withdrawnAmount);
         | 
| 345 345 | 
             
                        distributionInfo.tokenHandler.pushToken(distributor, withdrawnAmount);
         | 
| 346 346 | 
             
                    }
         | 
| @@ -357,7 +357,7 @@ contract DistributionService is | |
| 357 357 | 
             
                        return false;
         | 
| 358 358 | 
             
                    }
         | 
| 359 359 |  | 
| 360 | 
            -
                    IInstance instance = IInstance(ContractLib.getInstanceForComponent(distributionNftId));
         | 
| 360 | 
            +
                    IInstance instance = IInstance(ContractLib.getInstanceForComponent(getRegistry(), distributionNftId));
         | 
| 361 361 | 
             
                    IDistribution.ReferralInfo memory info = instance.getInstanceReader().getReferralInfo(referralId);
         | 
| 362 362 |  | 
| 363 363 | 
             
                    if (info.distributorNftId.eqz()) {
         | 
| @@ -438,11 +438,7 @@ contract DistributionService is | |
| 438 438 | 
             
                        IInstance instance
         | 
| 439 439 | 
             
                    )
         | 
| 440 440 | 
             
                {
         | 
| 441 | 
            -
                    ( | 
| 442 | 
            -
                        msg.sender, 
         | 
| 443 | 
            -
                        DISTRIBUTION(), 
         | 
| 444 | 
            -
                        getRelease(), 
         | 
| 445 | 
            -
                        true);
         | 
| 441 | 
            +
                    return PoolLib.getAndVerifyActiveComponent(getRegistry(), msg.sender, DISTRIBUTION());
         | 
| 446 442 | 
             
                }
         | 
| 447 443 |  | 
| 448 444 |  | 
| @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            // SPDX-License-Identifier: Apache-2.0
         | 
| 2 2 | 
             
            pragma solidity ^0.8.20;
         | 
| 3 3 |  | 
| 4 | 
            -
            import { | 
| 4 | 
            +
            import {IVersionable} from "../upgradeability/IVersionable.sol";
         | 
| 5 5 | 
             
            import {ProxyManager} from "../upgradeability/ProxyManager.sol";
         | 
| 6 6 | 
             
            import {DistributionService} from "./DistributionService.sol";
         | 
| 7 7 |  | 
| @@ -12,17 +12,19 @@ contract DistributionServiceManager is ProxyManager { | |
| 12 12 | 
             
                /// @dev initializes proxy manager with distribution service implementation and deploys instance
         | 
| 13 13 | 
             
                constructor(
         | 
| 14 14 | 
             
                    address authority, 
         | 
| 15 | 
            +
                    address registry,
         | 
| 15 16 | 
             
                    bytes32 salt
         | 
| 16 17 | 
             
                ) 
         | 
| 17 18 | 
             
                {
         | 
| 18 19 | 
             
                    DistributionService svc = new DistributionService{salt: salt}();
         | 
| 19 | 
            -
                    bytes memory data = abi.encode(authority);
         | 
| 20 | 
            -
                     | 
| 20 | 
            +
                    bytes memory data = abi.encode(authority, registry);
         | 
| 21 | 
            +
                    IVersionable versionable = initialize(
         | 
| 22 | 
            +
                        registry,
         | 
| 21 23 | 
             
                        address(svc), 
         | 
| 22 24 | 
             
                        data,
         | 
| 23 25 | 
             
                        salt);
         | 
| 24 26 |  | 
| 25 | 
            -
                    _distributionService = DistributionService(address( | 
| 27 | 
            +
                    _distributionService = DistributionService(address(versionable));
         | 
| 26 28 | 
             
                }
         | 
| 27 29 |  | 
| 28 30 | 
             
                //--- view functions ----------------------------------------------------//
         |