@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
| @@ -7,15 +7,19 @@ import {IAuthorization} from "../authorization/IAuthorization.sol"; | |
| 7 7 | 
             
            import {IInstance} from "../instance/IInstance.sol";
         | 
| 8 8 | 
             
            import {NftId} from "../type/NftId.sol";
         | 
| 9 9 | 
             
            import {ObjectType} from "../type/ObjectType.sol";
         | 
| 10 | 
            -
            import {VersionPart} from "../type/Version.sol";
         | 
| 11 10 |  | 
| 12 11 | 
             
            /// @dev component base class
         | 
| 13 12 | 
             
            /// component examples are product, distribution, pool and oracle
         | 
| 14 13 | 
             
            interface IInstanceLinkedComponent is 
         | 
| 15 14 | 
             
                IAuthorizedComponent
         | 
| 16 15 | 
             
            {
         | 
| 17 | 
            -
                error  | 
| 18 | 
            -
                error  | 
| 16 | 
            +
                error ErrorInstanceLinkedComponentTypeMismatch(ObjectType requiredType, ObjectType objectType);
         | 
| 17 | 
            +
                error ErrorInstanceLinkedComponentNotProduct(NftId nftId, ObjectType objectType);
         | 
| 18 | 
            +
             | 
| 19 | 
            +
                /// @dev Withdraw fees from the distribution component. Only component owner is allowed to withdraw fees.
         | 
| 20 | 
            +
                /// @param amount the amount to withdraw
         | 
| 21 | 
            +
                /// @return withdrawnAmount the amount that was actually withdrawn
         | 
| 22 | 
            +
                function withdrawFees(Amount amount) external returns (Amount withdrawnAmount);
         | 
| 19 23 |  | 
| 20 24 | 
             
                /// @dev defines the instance to which this component is linked to
         | 
| 21 25 | 
             
                function getInstance() external view returns (IInstance instance);
         | 
| @@ -5,6 +5,7 @@ import {IERC165} from "@openzeppelin/contracts/utils/introspection/IERC165.sol"; | |
| 5 5 |  | 
| 6 6 | 
             
            import {IRegistryLinked} from "./IRegistryLinked.sol";
         | 
| 7 7 | 
             
            import {NftId} from "../type/NftId.sol";
         | 
| 8 | 
            +
            import {ObjectType} from "../type/ObjectType.sol";
         | 
| 8 9 |  | 
| 9 10 | 
             
            interface INftOwnable is
         | 
| 10 11 | 
             
                IERC165,
         | 
| @@ -14,6 +15,7 @@ interface INftOwnable is | |
| 14 15 |  | 
| 15 16 | 
             
                error ErrorNftOwnableInitialOwnerZero();
         | 
| 16 17 | 
             
                error ErrorNftOwnableNotOwner(address account);
         | 
| 18 | 
            +
                error ErrorNftOwnableInvalidType(NftId nftId, ObjectType expectedObjectType);
         | 
| 17 19 |  | 
| 18 20 | 
             
                error ErrorNftOwnableAlreadyLinked(NftId nftId);
         | 
| 19 21 | 
             
                error ErrorNftOwnableContractNotRegistered(address contractAddress);
         | 
| @@ -4,11 +4,8 @@ pragma solidity ^0.8.20; | |
| 4 4 | 
             
            import {IAccessManaged} from "@openzeppelin/contracts/access/manager/IAccessManaged.sol";
         | 
| 5 5 |  | 
| 6 6 | 
             
            import {INftOwnable} from "./INftOwnable.sol";
         | 
| 7 | 
            +
            import {IRelease} from "../registry/IRelease.sol";
         | 
| 7 8 | 
             
            import {IRegistry} from "../registry/IRegistry.sol";
         | 
| 8 | 
            -
            import {IVersionable} from "./IVersionable.sol";
         | 
| 9 | 
            -
            import {ObjectType} from "../type/ObjectType.sol";
         | 
| 10 | 
            -
            import {NftId} from "../type/NftId.sol";
         | 
| 11 | 
            -
            import {VersionPart} from "../type/Version.sol";
         | 
| 12 9 |  | 
| 13 10 | 
             
            /// @title IRegisterable
         | 
| 14 11 | 
             
            /// @dev Marks contracts that are intended to be registered in the registry.
         | 
| @@ -16,7 +13,7 @@ import {VersionPart} from "../type/Version.sol"; | |
| 16 13 | 
             
            interface IRegisterable is
         | 
| 17 14 | 
             
                IAccessManaged,
         | 
| 18 15 | 
             
                INftOwnable,
         | 
| 19 | 
            -
                 | 
| 16 | 
            +
                IRelease
         | 
| 20 17 | 
             
            {
         | 
| 21 18 | 
             
                // __Registerable_init
         | 
| 22 19 | 
             
                error ErrorAuthorityInvalid(address authority);
         | 
| @@ -24,9 +21,6 @@ interface IRegisterable is | |
| 24 21 | 
             
                // onlyActive()
         | 
| 25 22 | 
             
                error ErrorRegisterableNotActive();
         | 
| 26 23 |  | 
| 27 | 
            -
                //_checkNftType()
         | 
| 28 | 
            -
                error ErrorRegisterableInvalidType(NftId nftId, ObjectType expectedType, VersionPart expectedRelease);
         | 
| 29 | 
            -
             | 
| 30 24 | 
             
                /// @dev Returns true iff this contract managed by its authority is active.
         | 
| 31 25 | 
             
                /// Queries the IAccessManaged.authority().
         | 
| 32 26 | 
             
                function isActive() external view returns (bool active);
         | 
| @@ -38,10 +32,5 @@ interface IRegisterable is | |
| 38 32 | 
             
                function getInitialInfo() 
         | 
| 39 33 | 
             
                    external 
         | 
| 40 34 | 
             
                    view
         | 
| 41 | 
            -
                    returns (IRegistry.ObjectInfo memory | 
| 42 | 
            -
             | 
| 43 | 
            -
                function getInitialData() 
         | 
| 44 | 
            -
                    external 
         | 
| 45 | 
            -
                    view
         | 
| 46 | 
            -
                    returns (bytes memory data);
         | 
| 35 | 
            +
                    returns (IRegistry.ObjectInfo memory);
         | 
| 47 36 | 
             
            }
         | 
| @@ -4,14 +4,14 @@ pragma solidity ^0.8.20; | |
| 4 4 | 
             
            import {IAccessManaged} from "@openzeppelin/contracts/access/manager/IAccessManaged.sol";
         | 
| 5 5 |  | 
| 6 6 | 
             
            import {IRegisterable} from "./IRegisterable.sol";
         | 
| 7 | 
            -
            import { | 
| 7 | 
            +
            import {IVersionable} from "../upgradeability/IVersionable.sol";
         | 
| 8 8 | 
             
            import {ObjectType} from "../type/ObjectType.sol";
         | 
| 9 9 | 
             
            import {RoleId} from "../type/RoleId.sol";
         | 
| 10 10 |  | 
| 11 11 | 
             
            interface IService is 
         | 
| 12 12 | 
             
                IAccessManaged,
         | 
| 13 13 | 
             
                IRegisterable,
         | 
| 14 | 
            -
                 | 
| 14 | 
            +
                IVersionable
         | 
| 15 15 | 
             
            {
         | 
| 16 16 | 
             
                /// @dev returns the domain for this service.
         | 
| 17 17 | 
             
                /// In any GIF release only one service for any given domain may be deployed.
         | 
| @@ -33,6 +33,7 @@ abstract contract InstanceLinkedComponent is | |
| 33 33 |  | 
| 34 34 | 
             
                struct InstanceLinkedComponentStorage {
         | 
| 35 35 | 
             
                    IInstance _instance; // instance for this component
         | 
| 36 | 
            +
                    InstanceReader _instanceReader; // instance reader for this component
         | 
| 36 37 | 
             
                    IAuthorization _initialAuthorization;
         | 
| 37 38 | 
             
                    IComponentService _componentService;
         | 
| 38 39 | 
             
                    IOracleService _oracleService;
         | 
| @@ -52,7 +53,16 @@ abstract contract InstanceLinkedComponent is | |
| 52 53 | 
             
                }
         | 
| 53 54 |  | 
| 54 55 |  | 
| 55 | 
            -
                 | 
| 56 | 
            +
                /// @inheritdoc IInstanceLinkedComponent
         | 
| 57 | 
            +
                function withdrawFees(Amount amount)
         | 
| 58 | 
            +
                    external
         | 
| 59 | 
            +
                    virtual
         | 
| 60 | 
            +
                    restricted()
         | 
| 61 | 
            +
                    onlyOwner()
         | 
| 62 | 
            +
                    returns (Amount withdrawnAmount)
         | 
| 63 | 
            +
                {
         | 
| 64 | 
            +
                    return _withdrawFees(amount);
         | 
| 65 | 
            +
                }
         | 
| 56 66 |  | 
| 57 67 | 
             
                //--- internal functions ------------------------------------------------//
         | 
| 58 68 |  | 
| @@ -74,7 +84,6 @@ abstract contract InstanceLinkedComponent is | |
| 74 84 | 
             
                }
         | 
| 75 85 |  | 
| 76 86 |  | 
| 77 | 
            -
             | 
| 78 87 | 
             
                function _cancelRequest(RequestId requestId)
         | 
| 79 88 | 
             
                    internal
         | 
| 80 89 | 
             
                    virtual
         | 
| @@ -99,6 +108,7 @@ abstract contract InstanceLinkedComponent is | |
| 99 108 |  | 
| 100 109 |  | 
| 101 110 | 
             
                function __InstanceLinkedComponent_init(
         | 
| 111 | 
            +
                    address registry,
         | 
| 102 112 | 
             
                    NftId parentNftId,
         | 
| 103 113 | 
             
                    string memory name,
         | 
| 104 114 | 
             
                    ObjectType componentType,
         | 
| @@ -106,25 +116,34 @@ abstract contract InstanceLinkedComponent is | |
| 106 116 | 
             
                    bool isInterceptor,
         | 
| 107 117 | 
             
                    address initialOwner
         | 
| 108 118 | 
             
                )
         | 
| 109 | 
            -
                    internal | 
| 119 | 
            +
                    internal
         | 
| 110 120 | 
             
                    virtual
         | 
| 111 121 | 
             
                    onlyInitializing()
         | 
| 112 122 | 
             
                {
         | 
| 113 | 
            -
                     | 
| 123 | 
            +
                    // validate registry, nft ids and get parent nft id
         | 
| 124 | 
            +
                    NftId instanceNftId = _checkAndGetInstanceNftId(
         | 
| 125 | 
            +
                        registry, 
         | 
| 126 | 
            +
                        parentNftId, 
         | 
| 127 | 
            +
                        componentType);
         | 
| 128 | 
            +
             | 
| 129 | 
            +
                    // set and check linked instance
         | 
| 130 | 
            +
                    InstanceLinkedComponentStorage storage $ = _getInstanceLinkedComponentStorage();
         | 
| 131 | 
            +
                    $._instance = IInstance(
         | 
| 132 | 
            +
                        IRegistry(registry).getObjectAddress(instanceNftId));
         | 
| 114 133 |  | 
| 115 134 | 
             
                    // set component specific parameters
         | 
| 116 135 | 
             
                    __Component_init(
         | 
| 117 | 
            -
                         | 
| 136 | 
            +
                        $._instance.authority(), // instance linked components need to point to instance admin
         | 
| 137 | 
            +
                        registry, 
         | 
| 118 138 | 
             
                        parentNftId, 
         | 
| 119 139 | 
             
                        name, 
         | 
| 120 | 
            -
                        componentType,
         | 
| 140 | 
            +
                        componentType, 
         | 
| 121 141 | 
             
                        isInterceptor, 
         | 
| 122 142 | 
             
                        initialOwner, 
         | 
| 123 143 | 
             
                        ""); // registry data
         | 
| 124 144 |  | 
| 125 145 | 
             
                    // set instance linked specific parameters
         | 
| 126 | 
            -
                     | 
| 127 | 
            -
                    $._instance = instance;
         | 
| 146 | 
            +
                    $._instanceReader = $._instance.getInstanceReader();
         | 
| 128 147 | 
             
                    $._initialAuthorization = authorization;
         | 
| 129 148 | 
             
                    $._componentService = IComponentService(_getServiceAddress(COMPONENT())); 
         | 
| 130 149 | 
             
                    $._oracleService = IOracleService(_getServiceAddress(ORACLE()));
         | 
| @@ -133,35 +152,44 @@ abstract contract InstanceLinkedComponent is | |
| 133 152 | 
             
                    _registerInterface(type(IInstanceLinkedComponent).interfaceId);
         | 
| 134 153 | 
             
                }
         | 
| 135 154 |  | 
| 136 | 
            -
             | 
| 155 | 
            +
             | 
| 156 | 
            +
                function _checkAndGetInstanceNftId(
         | 
| 157 | 
            +
                    address registryAddress,
         | 
| 137 158 | 
             
                    NftId parentNftId,
         | 
| 138 159 | 
             
                    ObjectType componentType
         | 
| 139 160 | 
             
                )
         | 
| 140 | 
            -
                     | 
| 161 | 
            +
                    internal
         | 
| 141 162 | 
             
                    view
         | 
| 142 | 
            -
                    returns ( | 
| 163 | 
            +
                    returns (NftId instanceNftId)
         | 
| 143 164 | 
             
                {
         | 
| 144 | 
            -
                     | 
| 145 | 
            -
                     | 
| 146 | 
            -
             | 
| 147 | 
            -
             | 
| 148 | 
            -
                        instanceNftId = parentNftId;
         | 
| 149 | 
            -
                    } else {
         | 
| 150 | 
            -
                        NftId productNftId = parentNftId;
         | 
| 151 | 
            -
                        instanceNftId = registry.getParentNftId(productNftId);
         | 
| 165 | 
            +
                    // if product, then parent is already instance
         | 
| 166 | 
            +
                    if (componentType == PRODUCT()) {
         | 
| 167 | 
            +
                        _checkAndGetRegistry(registryAddress, parentNftId, INSTANCE());
         | 
| 168 | 
            +
                        return parentNftId;
         | 
| 152 169 | 
             
                    }
         | 
| 153 170 |  | 
| 154 | 
            -
                     | 
| 171 | 
            +
                    // if not product parent is product, and parent of product is instance
         | 
| 172 | 
            +
                    IRegistry registry = _checkAndGetRegistry(registryAddress, parentNftId, PRODUCT());
         | 
| 173 | 
            +
                    return registry.getParentNftId(parentNftId);
         | 
| 174 | 
            +
                }
         | 
| 155 175 |  | 
| 156 | 
            -
             | 
| 157 | 
            -
             | 
| 158 | 
            -
             | 
| 176 | 
            +
                /// @dev checks the and gets registry.
         | 
| 177 | 
            +
                /// validates registry using a provided nft id and expected object type.
         | 
| 178 | 
            +
                function _checkAndGetRegistry(
         | 
| 179 | 
            +
                    address registryAddress,
         | 
| 180 | 
            +
                    NftId objectNftId,
         | 
| 181 | 
            +
                    ObjectType requiredType
         | 
| 182 | 
            +
                )
         | 
| 183 | 
            +
                    internal
         | 
| 184 | 
            +
                    view
         | 
| 185 | 
            +
                    returns (IRegistry registry)
         | 
| 186 | 
            +
                {
         | 
| 187 | 
            +
                    registry = IRegistry(registryAddress);
         | 
| 188 | 
            +
                    IRegistry.ObjectInfo memory info = registry.getObjectInfo(objectNftId);
         | 
| 159 189 |  | 
| 160 | 
            -
                    if(info. | 
| 161 | 
            -
                        revert  | 
| 190 | 
            +
                    if (info.objectType != requiredType) {
         | 
| 191 | 
            +
                        revert ErrorInstanceLinkedComponentTypeMismatch(requiredType, info.objectType);
         | 
| 162 192 | 
             
                    }
         | 
| 163 | 
            -
             | 
| 164 | 
            -
                    instance = IInstance(info.objectAddress); 
         | 
| 165 193 | 
             
                }
         | 
| 166 194 |  | 
| 167 195 |  | 
| @@ -173,7 +201,7 @@ abstract contract InstanceLinkedComponent is | |
| 173 201 |  | 
| 174 202 |  | 
| 175 203 | 
             
                function _getComponentInfo() internal virtual override view returns (IComponents.ComponentInfo memory info) {
         | 
| 176 | 
            -
                    NftId componentNftId =  | 
| 204 | 
            +
                    NftId componentNftId = getRegistry().getNftIdForAddress(address(this));
         | 
| 177 205 |  | 
| 178 206 | 
             
                    // if registered, attempt to return component info via instance reader
         | 
| 179 207 | 
             
                    if (componentNftId.gtz()) {
         | 
| @@ -193,6 +221,13 @@ abstract contract InstanceLinkedComponent is | |
| 193 221 |  | 
| 194 222 | 
             
                /// @dev returns reader for linked instance
         | 
| 195 223 | 
             
                function _getInstanceReader() internal view returns (InstanceReader reader) {
         | 
| 196 | 
            -
                    return _getInstanceLinkedComponentStorage(). | 
| 224 | 
            +
                    return _getInstanceLinkedComponentStorage()._instanceReader;
         | 
| 225 | 
            +
                }
         | 
| 226 | 
            +
             | 
| 227 | 
            +
                function _withdrawFees(Amount amount)
         | 
| 228 | 
            +
                    internal
         | 
| 229 | 
            +
                    returns (Amount withdrawnAmount)
         | 
| 230 | 
            +
                {
         | 
| 231 | 
            +
                    return _getInstanceLinkedComponentStorage()._componentService.withdrawFees(amount);
         | 
| 197 232 | 
             
                }
         | 
| 198 233 | 
             
            }
         | 
| @@ -4,6 +4,7 @@ pragma solidity ^0.8.20; | |
| 4 4 | 
             
            import {InitializableERC165} from "./InitializableERC165.sol";
         | 
| 5 5 | 
             
            import {INftOwnable} from "./INftOwnable.sol";
         | 
| 6 6 | 
             
            import {NftId} from "../type/NftId.sol";
         | 
| 7 | 
            +
            import {ObjectType} from "../type/ObjectType.sol";
         | 
| 7 8 | 
             
            import {RegistryLinked} from "./RegistryLinked.sol";
         | 
| 8 9 |  | 
| 9 10 | 
             
            contract NftOwnable is
         | 
| @@ -28,15 +29,28 @@ contract NftOwnable is | |
| 28 29 | 
             
                }
         | 
| 29 30 |  | 
| 30 31 | 
             
                modifier onlyNftOwner(NftId nftId) {
         | 
| 31 | 
            -
                    if(! | 
| 32 | 
            +
                    if(!getRegistry().isOwnerOf(nftId, msg.sender)) {
         | 
| 32 33 | 
             
                        revert ErrorNftOwnableNotOwner(msg.sender);
         | 
| 33 34 | 
             
                    }
         | 
| 34 35 | 
             
                    _;
         | 
| 35 36 | 
             
                }
         | 
| 36 37 |  | 
| 38 | 
            +
                modifier onlyNftOfType(NftId nftId, ObjectType expectedObjectType) {
         | 
| 39 | 
            +
                    _checkNftType(nftId, expectedObjectType);
         | 
| 40 | 
            +
                    _;
         | 
| 41 | 
            +
                }
         | 
| 42 | 
            +
             | 
| 43 | 
            +
                function _checkNftType(NftId nftId, ObjectType expectedObjectType) internal view {
         | 
| 44 | 
            +
                    if(expectedObjectType.eqz() || !getRegistry().isObjectType(nftId, expectedObjectType)) {
         | 
| 45 | 
            +
                        revert ErrorNftOwnableInvalidType(nftId, expectedObjectType);
         | 
| 46 | 
            +
                    }
         | 
| 47 | 
            +
                }
         | 
| 48 | 
            +
             | 
| 49 | 
            +
             | 
| 37 50 | 
             
                /// @dev Initialization for upgradable contracts.
         | 
| 38 | 
            -
                // used in __Registerable_init, ProxyManager. | 
| 51 | 
            +
                // used in __Registerable_init, ProxyManager._preDeployChecksAndSetup
         | 
| 39 52 | 
             
                function __NftOwnable_init(
         | 
| 53 | 
            +
                    address registry,
         | 
| 40 54 | 
             
                    address initialOwner
         | 
| 41 55 | 
             
                )
         | 
| 42 56 | 
             
                    internal
         | 
| @@ -44,6 +58,7 @@ contract NftOwnable is | |
| 44 58 | 
             
                    onlyInitializing()
         | 
| 45 59 | 
             
                {
         | 
| 46 60 | 
             
                    __ERC165_init();
         | 
| 61 | 
            +
                    __RegistryLinked_init(registry);
         | 
| 47 62 |  | 
| 48 63 | 
             
                    if(initialOwner == address(0)) {
         | 
| 49 64 | 
             
                        revert ErrorNftOwnableInitialOwnerZero();
         | 
| @@ -73,7 +88,7 @@ contract NftOwnable is | |
| 73 88 | 
             
                    NftOwnableStorage storage $ = _getNftOwnableStorage();
         | 
| 74 89 |  | 
| 75 90 | 
             
                    if ($._nftId.gtz()) {
         | 
| 76 | 
            -
                        return  | 
| 91 | 
            +
                        return getRegistry().ownerOf($._nftId);
         | 
| 77 92 | 
             
                    }
         | 
| 78 93 |  | 
| 79 94 | 
             
                    return $._initialOwner;
         | 
| @@ -93,17 +108,15 @@ contract NftOwnable is | |
| 93 108 | 
             
                        revert ErrorNftOwnableAlreadyLinked($._nftId);
         | 
| 94 109 | 
             
                    }
         | 
| 95 110 |  | 
| 96 | 
            -
                     | 
| 97 | 
            -
             | 
| 98 | 
            -
                    if (nftId.eqz()) {
         | 
| 111 | 
            +
                    if (!getRegistry().isRegistered(nftOwnableAddress)) {
         | 
| 99 112 | 
             
                        revert ErrorNftOwnableContractNotRegistered(nftOwnableAddress);
         | 
| 100 113 | 
             
                    }
         | 
| 101 114 |  | 
| 102 | 
            -
                    $._nftId =  | 
| 115 | 
            +
                    $._nftId = getRegistry().getNftIdForAddress(nftOwnableAddress);
         | 
| 103 116 |  | 
| 104 | 
            -
                    emit LogNftOwnableNftLinkedToAddress( | 
| 117 | 
            +
                    emit LogNftOwnableNftLinkedToAddress($._nftId, getOwner());
         | 
| 105 118 |  | 
| 106 | 
            -
                    return  | 
| 119 | 
            +
                    return $._nftId;
         | 
| 107 120 | 
             
                }
         | 
| 108 121 |  | 
| 109 122 |  | 
| @@ -23,12 +23,14 @@ contract PolicyHolder is | |
| 23 23 | 
             
                // callbacks must only be allowed from the policy and claim services
         | 
| 24 24 | 
             
                // will need a release parameter to fetch the right service addresses for the modifiers
         | 
| 25 25 |  | 
| 26 | 
            -
                function  | 
| 26 | 
            +
                function _initializePolicyHolder(
         | 
| 27 | 
            +
                    address registryAddress
         | 
| 27 28 | 
             
                )
         | 
| 28 29 | 
             
                    internal
         | 
| 29 30 | 
             
                    virtual
         | 
| 30 31 | 
             
                    onlyInitializing()
         | 
| 31 32 | 
             
                {
         | 
| 33 | 
            +
                    __RegistryLinked_init(registryAddress);
         | 
| 32 34 | 
             
                    _initializeERC165();
         | 
| 33 35 | 
             
                    _registerInterface(type(IPolicyHolder).interfaceId);
         | 
| 34 36 | 
             
                }
         | 
| @@ -45,7 +47,7 @@ contract PolicyHolder is | |
| 45 47 | 
             
                /// @dev empty default implementation
         | 
| 46 48 | 
             
                function payoutExecuted(NftId policyNftId, PayoutId payoutId, Amount amount, address beneficiary) external virtual {}
         | 
| 47 49 |  | 
| 48 | 
            -
                //---  | 
| 50 | 
            +
                //--- IERC165 functions ---------------// 
         | 
| 49 51 | 
             
                function onERC721Received(
         | 
| 50 52 | 
             
                    address, // operator
         | 
| 51 53 | 
             
                    address, // from
         | 
| @@ -9,16 +9,15 @@ import {ContractLib} from "../shared/ContractLib.sol"; | |
| 9 9 | 
             
            import {NftId, NftIdLib} from "../type/NftId.sol";
         | 
| 10 10 | 
             
            import {NftOwnable} from "../shared/NftOwnable.sol";
         | 
| 11 11 | 
             
            import {ObjectType} from "../type/ObjectType.sol";
         | 
| 12 | 
            -
            import {Versionable} from "../shared/Versionable.sol";
         | 
| 13 12 | 
             
            import {VersionPart, VersionPartLib} from "../type/Version.sol";
         | 
| 14 13 |  | 
| 15 14 | 
             
            import {IRegistry} from "../registry/IRegistry.sol";
         | 
| 16 15 | 
             
            import {IRegisterable} from "./IRegisterable.sol";
         | 
| 16 | 
            +
            import {IRelease} from "../registry/IRelease.sol";
         | 
| 17 17 |  | 
| 18 18 | 
             
            abstract contract Registerable is
         | 
| 19 19 | 
             
                AccessManagedUpgradeable,
         | 
| 20 20 | 
             
                NftOwnable,
         | 
| 21 | 
            -
                Versionable,
         | 
| 22 21 | 
             
                IRegisterable
         | 
| 23 22 | 
             
            {
         | 
| 24 23 | 
             
                // keccak256(abi.encode(uint256(keccak256("gif-next.contracts.shared.Registerable.sol")) - 1)) & ~bytes32(uint256(0xff));
         | 
| @@ -38,27 +37,14 @@ abstract contract Registerable is | |
| 38 37 | 
             
                    _;
         | 
| 39 38 | 
             
                }
         | 
| 40 39 |  | 
| 41 | 
            -
                modifier onlyNftOfType(NftId nftId, ObjectType expectedObjectType) {
         | 
| 42 | 
            -
                    _checkNftType(nftId, expectedObjectType);
         | 
| 43 | 
            -
                    _;
         | 
| 44 | 
            -
                }
         | 
| 45 | 
            -
             | 
| 46 | 
            -
                // TODO move to registerables verification library
         | 
| 47 | 
            -
                // TODO and check the owner here?
         | 
| 48 | 
            -
                function _checkNftType(NftId nftId, ObjectType expectedObjectType) internal view {
         | 
| 49 | 
            -
                    VersionPart expectedRelease = getRelease();
         | 
| 50 | 
            -
                    if(expectedObjectType.eqz() || !_getRegistry().isObjectType(nftId, expectedObjectType, expectedRelease)) {
         | 
| 51 | 
            -
                        revert ErrorRegisterableInvalidType(nftId, expectedObjectType, expectedRelease);
         | 
| 52 | 
            -
                    }
         | 
| 53 | 
            -
                }
         | 
| 54 | 
            -
             | 
| 55 40 | 
             
                function __Registerable_init(
         | 
| 56 41 | 
             
                    address authority,
         | 
| 42 | 
            +
                    address registry,
         | 
| 57 43 | 
             
                    NftId parentNftId,
         | 
| 58 44 | 
             
                    ObjectType objectType,
         | 
| 59 45 | 
             
                    bool isInterceptor,
         | 
| 60 46 | 
             
                    address initialOwner,
         | 
| 61 | 
            -
                    bytes memory data
         | 
| 47 | 
            +
                    bytes memory data // writeonly data that will saved in the object info record of the registry
         | 
| 62 48 | 
             
                )
         | 
| 63 49 | 
             
                    internal
         | 
| 64 50 | 
             
                    virtual
         | 
| @@ -68,19 +54,14 @@ abstract contract Registerable is | |
| 68 54 | 
             
                        revert ErrorAuthorityInvalid(authority);
         | 
| 69 55 | 
             
                    }
         | 
| 70 56 |  | 
| 71 | 
            -
                    VersionPart release = AccessManagerCloneable(authority).getRelease();
         | 
| 72 | 
            -
             | 
| 73 57 | 
             
                    __AccessManaged_init(authority);
         | 
| 74 | 
            -
                    __NftOwnable_init(initialOwner);
         | 
| 75 | 
            -
                    __Versionable_init(release);
         | 
| 58 | 
            +
                    __NftOwnable_init(registry, initialOwner);
         | 
| 76 59 |  | 
| 77 60 | 
             
                    RegisterableStorage storage $ = _getRegisterableStorage();
         | 
| 78 61 | 
             
                    $._parentNftId = parentNftId;
         | 
| 79 62 | 
             
                    $._objectType = objectType;
         | 
| 80 63 | 
             
                    $._isInterceptor = isInterceptor;
         | 
| 81 | 
            -
                     | 
| 82 | 
            -
                        $._data = data;
         | 
| 83 | 
            -
                    }
         | 
| 64 | 
            +
                    $._data = data;
         | 
| 84 65 |  | 
| 85 66 | 
             
                    _registerInterface(type(IAccessManaged).interfaceId);
         | 
| 86 67 | 
             
                }
         | 
| @@ -91,6 +72,13 @@ abstract contract Registerable is | |
| 91 72 | 
             
                    return !AccessManagerCloneable(authority()).isTargetClosed(address(this));
         | 
| 92 73 | 
             
                }
         | 
| 93 74 |  | 
| 75 | 
            +
             | 
| 76 | 
            +
                /// @inheritdoc IRelease
         | 
| 77 | 
            +
                function getRelease() public virtual view returns (VersionPart release) {
         | 
| 78 | 
            +
                    return AccessManagerCloneable(authority()).getRelease();
         | 
| 79 | 
            +
                }
         | 
| 80 | 
            +
             | 
| 81 | 
            +
             | 
| 94 82 | 
             
                /// @inheritdoc IRegisterable
         | 
| 95 83 | 
             
                function getInitialInfo() 
         | 
| 96 84 | 
             
                    public 
         | 
| @@ -99,19 +87,14 @@ abstract contract Registerable is | |
| 99 87 | 
             
                    returns (IRegistry.ObjectInfo memory info) 
         | 
| 100 88 | 
             
                {
         | 
| 101 89 | 
             
                    RegisterableStorage storage $ = _getRegisterableStorage();
         | 
| 102 | 
            -
                    return (
         | 
| 103 | 
            -
                         | 
| 104 | 
            -
             | 
| 105 | 
            -
             | 
| 106 | 
            -
             | 
| 107 | 
            -
             | 
| 108 | 
            -
             | 
| 109 | 
            -
             | 
| 110 | 
            -
                    );
         | 
| 111 | 
            -
                }
         | 
| 112 | 
            -
             | 
| 113 | 
            -
                function getInitialData() public view virtual returns (bytes memory data) {
         | 
| 114 | 
            -
                    return _getRegisterableStorage()._data;
         | 
| 90 | 
            +
                    return IRegistry.ObjectInfo(
         | 
| 91 | 
            +
                        NftIdLib.zero(),
         | 
| 92 | 
            +
                        $._parentNftId,
         | 
| 93 | 
            +
                        $._objectType,
         | 
| 94 | 
            +
                        $._isInterceptor,
         | 
| 95 | 
            +
                        address(this), 
         | 
| 96 | 
            +
                        getOwner(),
         | 
| 97 | 
            +
                        $._data);
         | 
| 115 98 | 
             
                }
         | 
| 116 99 |  | 
| 117 100 |  | 
| @@ -1,19 +1,38 @@ | |
| 1 1 | 
             
            // SPDX-License-Identifier: Apache-2.0
         | 
| 2 2 | 
             
            pragma solidity ^0.8.20;
         | 
| 3 3 |  | 
| 4 | 
            +
            import {Initializable} from "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol"; 
         | 
| 4 5 |  | 
| 5 6 | 
             
            import {ContractLib} from "../shared/ContractLib.sol";
         | 
| 6 7 | 
             
            import {IRegistry} from "../registry/IRegistry.sol";
         | 
| 7 8 | 
             
            import {IRegistryLinked} from "./IRegistryLinked.sol";
         | 
| 8 9 |  | 
| 9 10 | 
             
            contract RegistryLinked is
         | 
| 11 | 
            +
                Initializable,
         | 
| 10 12 | 
             
                IRegistryLinked
         | 
| 11 13 | 
             
            {
         | 
| 12 | 
            -
             | 
| 13 | 
            -
             | 
| 14 | 
            +
             | 
| 15 | 
            +
                // priorize simplicity and size over using standard upgradeability structs
         | 
| 16 | 
            +
                IRegistry private _registry;
         | 
| 17 | 
            +
             | 
| 18 | 
            +
                /// @dev initialization for upgradable contracts
         | 
| 19 | 
            +
                // used in _initializeRegisterable
         | 
| 20 | 
            +
                function __RegistryLinked_init(
         | 
| 21 | 
            +
                    address registry
         | 
| 22 | 
            +
                )
         | 
| 23 | 
            +
                    internal
         | 
| 24 | 
            +
                    virtual
         | 
| 25 | 
            +
                    onlyInitializing()
         | 
| 26 | 
            +
                {
         | 
| 27 | 
            +
                    if (!ContractLib.isRegistry(registry)) {
         | 
| 28 | 
            +
                        revert ErrorNotRegistry(registry);
         | 
| 29 | 
            +
                    }
         | 
| 30 | 
            +
             | 
| 31 | 
            +
                    _registry = IRegistry(registry);
         | 
| 14 32 | 
             
                }
         | 
| 15 33 |  | 
| 16 | 
            -
             | 
| 17 | 
            -
             | 
| 34 | 
            +
             | 
| 35 | 
            +
                function getRegistry() public view returns (IRegistry) {
         | 
| 36 | 
            +
                    return _registry;
         | 
| 18 37 | 
             
                }
         | 
| 19 38 | 
             
            }
         | 
| @@ -5,25 +5,25 @@ import {ReentrancyGuardUpgradeable} from "@openzeppelin/contracts-upgradeable/ut | |
| 5 5 |  | 
| 6 6 | 
             
            import {IRegistry} from "../registry/IRegistry.sol";
         | 
| 7 7 | 
             
            import {IService} from "./IService.sol";
         | 
| 8 | 
            -
            import {IVersionable} from "../ | 
| 8 | 
            +
            import {IVersionable} from "../upgradeability/IVersionable.sol";
         | 
| 9 9 | 
             
            import {ObjectType, SERVICE} from "../type/ObjectType.sol";
         | 
| 10 10 | 
             
            import {Registerable} from "./Registerable.sol";
         | 
| 11 11 | 
             
            import {RoleId, RoleIdLib} from "../type/RoleId.sol";
         | 
| 12 | 
            -
            import {Version, VersionLib | 
| 13 | 
            -
            import {Versionable} from "../ | 
| 14 | 
            -
            import {Upgradeable} from "../upgradeability/Upgradeable.sol";
         | 
| 12 | 
            +
            import {Version, VersionLib} from "../type/Version.sol";
         | 
| 13 | 
            +
            import {Versionable} from "../upgradeability/Versionable.sol";
         | 
| 15 14 |  | 
| 16 15 |  | 
| 17 16 | 
             
            /// @dev service base contract
         | 
| 18 17 | 
             
            abstract contract Service is 
         | 
| 19 | 
            -
                Registerable, | 
| 20 | 
            -
                 | 
| 18 | 
            +
                Registerable,
         | 
| 19 | 
            +
                Versionable,
         | 
| 21 20 | 
             
                ReentrancyGuardUpgradeable,
         | 
| 22 21 | 
             
                IService
         | 
| 23 22 | 
             
            {
         | 
| 24 23 |  | 
| 25 24 | 
             
                function __Service_init(
         | 
| 26 25 | 
             
                    address authority, // real authority for registry service adress(0) for other services
         | 
| 26 | 
            +
                    address registry, 
         | 
| 27 27 | 
             
                    address initialOwner
         | 
| 28 28 | 
             
                )
         | 
| 29 29 | 
             
                    internal
         | 
| @@ -34,7 +34,8 @@ abstract contract Service is | |
| 34 34 |  | 
| 35 35 | 
             
                    __Registerable_init(
         | 
| 36 36 | 
             
                        authority,
         | 
| 37 | 
            -
                         | 
| 37 | 
            +
                        registry, 
         | 
| 38 | 
            +
                        IRegistry(registry).getNftId(), 
         | 
| 38 39 | 
             
                        SERVICE(), 
         | 
| 39 40 | 
             
                        false, // is interceptor
         | 
| 40 41 | 
             
                        initialOwner, 
         | 
| @@ -61,6 +62,6 @@ abstract contract Service is | |
| 61 62 |  | 
| 62 63 |  | 
| 63 64 | 
             
                function _getServiceAddress(ObjectType domain) internal view returns (address) {
         | 
| 64 | 
            -
                    return  | 
| 65 | 
            +
                    return getRegistry().getServiceAddress(domain, getRelease());
         | 
| 65 66 | 
             
                }
         | 
| 66 67 | 
             
            }
         | 
| @@ -10,7 +10,6 @@ import {ContractLib} from "../shared/ContractLib.sol"; | |
| 10 10 | 
             
            import {IRegistry} from "../registry/IRegistry.sol";
         | 
| 11 11 | 
             
            import {NftId} from "../type/NftId.sol";
         | 
| 12 12 | 
             
            import {SERVICE} from "../type/ObjectType.sol";
         | 
| 13 | 
            -
            import {VersionPart} from "../type/Version.sol";
         | 
| 14 13 |  | 
| 15 14 |  | 
| 16 15 | 
             
            /// @dev Token specific transfer helper base contract.
         | 
| @@ -50,7 +49,6 @@ contract TokenHandlerBase { | |
| 50 49 | 
             
                IERC20Metadata public immutable TOKEN;
         | 
| 51 50 | 
             
                address public immutable COMPONENT;
         | 
| 52 51 | 
             
                NftId public immutable NFT_ID;
         | 
| 53 | 
            -
                VersionPart public immutable RELEASE;
         | 
| 54 52 |  | 
| 55 53 | 
             
                address internal _wallet;
         | 
| 56 54 |  | 
| @@ -71,7 +69,6 @@ contract TokenHandlerBase { | |
| 71 69 | 
             
                    REGISTRY = IRegistry(registry);
         | 
| 72 70 | 
             
                    COMPONENT = component;
         | 
| 73 71 | 
             
                    NFT_ID = REGISTRY.getNftIdForAddress(component);
         | 
| 74 | 
            -
                    RELEASE = REGISTRY.getObjectRelease(NFT_ID);
         | 
| 75 72 |  | 
| 76 73 | 
             
                    if (NFT_ID.eqz()) {
         | 
| 77 74 | 
             
                        revert ErrorTokenHandlerComponentNotRegistered(component);
         | 
| @@ -257,7 +254,7 @@ contract TokenHandler is | |
| 257 254 | 
             
                error ErrorTokenHandlerNotService(address service);
         | 
| 258 255 |  | 
| 259 256 | 
             
                modifier onlyService() {
         | 
| 260 | 
            -
                    if (!REGISTRY.isObjectType(msg.sender, SERVICE() | 
| 257 | 
            +
                    if (!REGISTRY.isObjectType(msg.sender, SERVICE())) {
         | 
| 261 258 | 
             
                        revert ErrorTokenHandlerNotService(msg.sender);
         | 
| 262 259 | 
             
                    }
         | 
| 263 260 | 
             
                    _;
         | 
| @@ -4,7 +4,7 @@ pragma solidity ^0.8.20; | |
| 4 4 | 
             
            import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
         | 
| 5 5 |  | 
| 6 6 | 
             
            import {IComponent} from "../shared/IComponent.sol";
         | 
| 7 | 
            -
            import { | 
| 7 | 
            +
            import {IVersionable} from "../upgradeability/IVersionable.sol";
         | 
| 8 8 |  | 
| 9 9 | 
             
            import {Amount} from "../type/Amount.sol";
         | 
| 10 10 | 
             
            import {Blocknumber} from "../type/Blocknumber.sol";
         | 
| @@ -22,7 +22,7 @@ import {VersionPart} from "../type/Version.sol"; | |
| 22 22 |  | 
| 23 23 | 
             
            interface IStaking is 
         | 
| 24 24 | 
             
                IComponent,
         | 
| 25 | 
            -
                 | 
| 25 | 
            +
                IVersionable
         | 
| 26 26 | 
             
            {
         | 
| 27 27 |  | 
| 28 28 | 
             
                // owner functions
         |