@etherisc/gif-next 0.0.2-f347f00-614 → 0.0.2-f36fd21-685
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/README.md +30 -2
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +4 -0
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +1253 -0
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +4 -0
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +1206 -0
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +4 -0
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +358 -0
- package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +4 -0
- package/artifacts/contracts/authorization/IAccess.sol/IAccess.json +10 -0
- package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +4 -0
- package/artifacts/contracts/{shared → authorization}/IAccessAdmin.sol/IAccessAdmin.json +100 -252
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +4 -0
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +258 -0
- package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +4 -0
- package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.json +290 -0
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +4 -0
- package/artifacts/contracts/{registry → authorization}/IServiceAuthorization.sol/IServiceAuthorization.json +29 -5
- package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +4 -0
- package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +390 -0
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +4 -0
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +190 -0
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +4 -0
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +1548 -0
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +4 -0
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +410 -0
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +46 -228
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +269 -90
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +83 -55
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +100 -132
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +134 -16
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +4 -0
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +703 -0
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +6 -19
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +32 -44
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +35 -96
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +1208 -290
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +601 -0
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +110 -81
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +65 -125
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +35 -59
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +84 -101
- 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/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 +4 -0
- package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +182 -0
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +4 -0
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +181 -0
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
- 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/mock/Dip.sol/Dip.json +2 -2
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +4 -0
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +1185 -0
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +4 -0
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +418 -0
- package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +43 -1
- package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
- package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +43 -0
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +43 -96
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +32 -32
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +34 -34
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +1520 -0
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +410 -0
- package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +220 -54
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +72 -40
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +102 -0
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +43 -195
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +43 -296
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +36 -36
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +36 -36
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +32 -32
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +34 -34
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +1318 -0
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +410 -0
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +72 -72
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +54 -54
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +13 -0
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +32 -42
- package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +64 -51
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +43 -43
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +63 -58
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +47 -47
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/product/Product.sol/Product.json +32 -153
- package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +1 -1
- package/artifacts/contracts/product/ProductService.sol/ProductService.json +20 -20
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +28 -28
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +2 -2
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +50 -46
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +0 -183
- 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 +101 -73
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +239 -389
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +18 -18
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +27 -27
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +164 -0
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1159 -0
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +44 -12
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +4 -4
- package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +271 -86
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +77 -61
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +153 -0
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +32 -0
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +11 -5
- package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.json +0 -5
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
- package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
- package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +1 -1
- package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
- package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +73 -0
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +32 -53
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +15 -89
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +4 -65
- package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
- package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +6 -6
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +6 -6
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +8 -8
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -2
- package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +6 -6
- package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +42 -32
- package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
- package/artifacts/contracts/staking/Staking.sol/Staking.json +44 -44
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +164 -0
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +40 -40
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +6 -6
- package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingService.sol/StakingService.json +26 -26
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +31 -31
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +146 -165
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +27 -22
- package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
- package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +2 -2
- package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
- package/artifacts/contracts/type/Amount.sol/AmountLib.json +37 -8
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +2 -2
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +4 -4
- package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
- package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +4 -4
- package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
- package/artifacts/contracts/type/Fee.sol/FeeLib.json +17 -12
- 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/NftId.sol/NftIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/NftId.sol/NftIdLib.json +4 -4
- 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 +55 -2
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +4 -4
- package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
- package/artifacts/contracts/type/Referral.sol/ReferralLib.json +4 -4
- package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +4 -4
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +4 -4
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +117 -14
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +2 -2
- package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
- package/artifacts/contracts/type/Selector.sol/SelectorLib.json +2 -2
- package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
- package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +2 -2
- package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/StateId.sol/StateIdLib.json +2 -2
- package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
- package/artifacts/contracts/type/String.sol/StrLib.json +2 -2
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +4 -4
- package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +1 -1
- package/artifacts/contracts/type/UFixed.sol/MathLib.json +9 -3
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +58 -2
- package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
- package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -2
- package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
- package/artifacts/contracts/type/Version.sol/VersionPartLib.json +21 -2
- package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
- package/artifacts/contracts/{shared → upgradeability}/IVersionable.sol/IVersionable.json +1 -1
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +617 -0
- package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
- package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
- package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
- package/artifacts/contracts/{shared → upgradeability}/Versionable.sol/Versionable.json +1 -1
- package/contracts/{shared → authorization}/AccessAdmin.sol +135 -294
- package/contracts/authorization/AccessManagerCloneable.sol +16 -0
- package/contracts/authorization/Authorization.sol +218 -0
- package/contracts/authorization/IAccess.sol +48 -0
- package/contracts/{shared → authorization}/IAccessAdmin.sol +34 -60
- package/contracts/authorization/IAuthorization.sol +54 -0
- package/contracts/authorization/IModuleAuthorization.sol +21 -0
- package/contracts/{registry → authorization}/IServiceAuthorization.sol +7 -4
- package/contracts/authorization/ModuleAuthorization.sol +78 -0
- package/contracts/{registry → authorization}/ServiceAuthorization.sol +21 -14
- package/contracts/distribution/BasicDistribution.sol +138 -0
- package/contracts/distribution/BasicDistributionAuthorization.sol +47 -0
- package/contracts/distribution/Distribution.sol +144 -110
- package/contracts/distribution/DistributionService.sol +71 -31
- package/contracts/distribution/DistributionServiceManager.sol +2 -5
- package/contracts/distribution/IDistributionComponent.sol +25 -39
- package/contracts/distribution/IDistributionService.sol +17 -1
- package/contracts/instance/{BundleManager.sol → BundleSet.sol} +23 -23
- package/contracts/instance/IInstance.sol +8 -9
- package/contracts/instance/IInstanceService.sol +13 -18
- package/contracts/instance/Instance.sol +61 -70
- package/contracts/instance/InstanceAdmin.sol +202 -267
- package/contracts/instance/InstanceAuthorizationV3.sol +204 -0
- package/contracts/instance/InstanceReader.sol +22 -9
- package/contracts/instance/InstanceService.sol +74 -70
- package/contracts/instance/InstanceServiceManager.sol +2 -6
- package/contracts/instance/InstanceStore.sol +13 -5
- package/contracts/instance/base/ObjectLifecycle.sol +106 -0
- package/contracts/instance/base/{ObjectManager.sol → ObjectSet.sol} +11 -12
- package/contracts/instance/module/IComponents.sol +0 -1
- package/contracts/instance/module/IDistribution.sol +0 -1
- package/contracts/oracle/BasicOracle.sol +48 -0
- package/contracts/oracle/BasicOracleAuthorization.sol +46 -0
- package/contracts/oracle/IOracle.sol +16 -0
- package/contracts/oracle/IOracleComponent.sol +2 -1
- package/contracts/oracle/Oracle.sol +72 -51
- package/contracts/oracle/OracleServiceManager.sol +2 -5
- package/contracts/pool/BasicPool.sol +164 -0
- package/contracts/pool/BasicPoolAuthorization.sol +55 -0
- package/contracts/pool/BundleService.sol +72 -27
- package/contracts/pool/BundleServiceManager.sol +2 -5
- package/contracts/pool/IBundleService.sol +14 -0
- package/contracts/pool/IPoolComponent.sol +6 -60
- package/contracts/pool/Pool.sol +160 -131
- package/contracts/pool/PoolService.sol +12 -30
- package/contracts/pool/PoolServiceManager.sol +2 -5
- package/contracts/product/ApplicationService.sol +12 -36
- package/contracts/product/ApplicationServiceManager.sol +2 -2
- package/contracts/product/BasicProduct.sol +52 -0
- package/contracts/product/BasicProductAuthorization.sol +43 -0
- package/contracts/product/ClaimService.sol +7 -32
- package/contracts/product/ClaimServiceManager.sol +2 -2
- package/contracts/product/IPolicyService.sol +2 -0
- package/contracts/product/IProductComponent.sol +7 -9
- package/contracts/product/PolicyService.sol +28 -4
- package/contracts/product/PolicyServiceManager.sol +2 -5
- package/contracts/product/PricingServiceManager.sol +2 -5
- package/contracts/product/Product.sol +112 -88
- package/contracts/product/ProductService.sol +7 -32
- package/contracts/product/ProductServiceManager.sol +2 -5
- package/contracts/registry/IRegistry.sol +26 -16
- package/contracts/registry/IRegistryService.sol +6 -6
- package/contracts/registry/Registry.sol +85 -85
- package/contracts/registry/RegistryAdmin.sol +118 -86
- package/contracts/registry/RegistryService.sol +4 -18
- package/contracts/registry/RegistryServiceManager.sol +2 -2
- package/contracts/registry/ReleaseLifecycle.sol +27 -0
- package/contracts/registry/ReleaseRegistry.sol +485 -0
- package/contracts/registry/ServiceAuthorizationV3.sol +14 -14
- package/contracts/registry/TokenRegistry.sol +2 -2
- package/contracts/shared/Component.sol +13 -14
- package/contracts/shared/ComponentService.sol +102 -68
- package/contracts/shared/ComponentServiceManager.sol +2 -2
- package/contracts/shared/ComponentVerifyingService.sol +1 -1
- package/contracts/shared/IComponentService.sol +15 -9
- package/contracts/shared/IInstanceLinkedComponent.sol +10 -0
- package/contracts/shared/IKeyValueStore.sol +1 -0
- package/contracts/shared/ILifecycle.sol +1 -2
- package/contracts/shared/IService.sol +1 -1
- package/contracts/shared/{ERC165.sol → InitializableERC165.sol} +1 -1
- package/contracts/shared/InstanceLinkedComponent.sol +47 -19
- package/contracts/shared/KeyValueStore.sol +6 -2
- package/contracts/shared/Lifecycle.sol +16 -69
- package/contracts/shared/{NftIdSetManager.sol → NftIdSet.sol} +1 -1
- package/contracts/shared/NftOwnable.sol +2 -2
- package/contracts/shared/PolicyHolder.sol +2 -5
- package/contracts/shared/Service.sol +3 -4
- package/contracts/staking/IStaking.sol +1 -2
- package/contracts/staking/IStakingService.sol +12 -5
- package/contracts/staking/Staking.sol +20 -17
- package/contracts/staking/StakingLifecycle.sol +23 -0
- package/contracts/staking/StakingManager.sol +2 -6
- package/contracts/staking/StakingReader.sol +12 -16
- package/contracts/staking/StakingServiceManager.sol +2 -2
- package/contracts/staking/StakingStore.sol +15 -23
- package/contracts/type/Amount.sol +12 -5
- package/contracts/type/ObjectType.sol +37 -7
- package/contracts/type/Referral.sol +1 -0
- package/contracts/type/RoleId.sol +55 -82
- package/contracts/type/UFixed.sol +34 -9
- package/contracts/type/Version.sol +3 -1
- package/contracts/{shared → upgradeability}/ProxyManager.sol +3 -4
- package/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol +1 -3
- package/package.json +6 -3
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +0 -4
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +0 -709
- package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +0 -4
- package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +0 -228
- package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +0 -4
- package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +0 -187
- package/artifacts/contracts/registry/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +0 -4
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +0 -4
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +0 -1218
- package/artifacts/contracts/registry/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +0 -4
- package/artifacts/contracts/registry/ServiceAuthorization.sol/ServiceAuthorization.json +0 -166
- package/artifacts/contracts/shared/AccessAdmin.sol/AccessAdmin.dbg.json +0 -4
- package/artifacts/contracts/shared/AccessAdmin.sol/AccessAdmin.json +0 -1554
- package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.dbg.json +0 -4
- package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.json +0 -1193
- package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.dbg.json +0 -4
- package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.json +0 -1747
- package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.dbg.json +0 -4
- package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.json +0 -1760
- package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.dbg.json +0 -4
- package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.json +0 -1838
- package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.dbg.json +0 -4
- package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.json +0 -1856
- package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
- package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -73
- package/artifacts/contracts/shared/IAccessAdmin.sol/IAccessAdmin.dbg.json +0 -4
- package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.dbg.json +0 -4
- package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.json +0 -1562
- package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.dbg.json +0 -4
- package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.json +0 -1600
- package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
- package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.dbg.json +0 -4
- package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.json +0 -306
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +0 -617
- package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
- package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +0 -129
- package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
- package/contracts/instance/InstanceAuthorizationsLib.sol +0 -377
- package/contracts/registry/ReleaseManager.sol +0 -521
- package/contracts/shared/AccessManagerCustom.sol +0 -741
- package/contracts/shared/AccessManagerExtended.sol +0 -481
- package/contracts/shared/AccessManagerExtendedInitializeable.sol +0 -13
- package/contracts/shared/AccessManagerExtendedWithDisable.sol +0 -137
- package/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol +0 -14
- package/contracts/shared/IAccessManagerExtended.sol +0 -74
- package/contracts/shared/IAccessManagerExtendedWithDisable.sol +0 -18
- /package/contracts/{shared → upgradeability}/IVersionable.sol +0 -0
- /package/contracts/{shared → upgradeability}/Versionable.sol +0 -0
| @@ -1,48 +1,22 @@ | |
| 1 1 | 
             
            // SPDX-License-Identifier: Apache-2.0
         | 
| 2 2 | 
             
            pragma solidity ^0.8.20;
         | 
| 3 3 |  | 
| 4 | 
            -
            import {IRisk} from "../instance/module/IRisk.sol";
         | 
| 5 | 
            -
            import {IService} from "./IApplicationService.sol";
         | 
| 6 | 
            -
             | 
| 7 4 | 
             
            import {IComponents} from "../instance/module/IComponents.sol";
         | 
| 8 | 
            -
            import {IRegistry} from "../registry/IRegistry.sol";
         | 
| 9 | 
            -
            import {IProductComponent} from "./IProductComponent.sol";
         | 
| 10 | 
            -
            import {Product} from "./Product.sol";
         | 
| 11 | 
            -
            import {IPoolComponent} from "../pool/IPoolComponent.sol";
         | 
| 12 | 
            -
            import {IDistributionComponent} from "../distribution/IDistributionComponent.sol";
         | 
| 13 5 | 
             
            import {IInstance} from "../instance/IInstance.sol";
         | 
| 14 6 | 
             
            import {IPolicy} from "../instance/module/IPolicy.sol";
         | 
| 15 | 
            -
            import {IRisk} from "../instance/module/IRisk.sol";
         | 
| 16 | 
            -
            import {IBundle} from "../instance/module/IBundle.sol";
         | 
| 17 | 
            -
            import {IProductService} from "./IProductService.sol";
         | 
| 18 | 
            -
             | 
| 19 | 
            -
            import {TokenHandler} from "../shared/TokenHandler.sol";
         | 
| 20 | 
            -
             | 
| 21 | 
            -
            import {IVersionable} from "../shared/IVersionable.sol";
         | 
| 22 | 
            -
            import {Versionable} from "../shared/Versionable.sol";
         | 
| 23 | 
            -
             | 
| 24 7 | 
             
            import {Amount, AmountLib} from "../type/Amount.sol";
         | 
| 25 | 
            -
            import { | 
| 26 | 
            -
            import { | 
| 27 | 
            -
            import { | 
| 28 | 
            -
            import { | 
| 29 | 
            -
            import { | 
| 30 | 
            -
            import {NftId, NftIdLib} from "../type/NftId.sol";
         | 
| 31 | 
            -
            import {Fee, FeeLib} from "../type/Fee.sol";
         | 
| 32 | 
            -
            import {ReferralId} from "../type/Referral.sol";
         | 
| 33 | 
            -
            import {RiskId} from "../type/RiskId.sol";
         | 
| 8 | 
            +
            import {TimestampLib} from "../type/Timestamp.sol";
         | 
| 9 | 
            +
            import {ObjectType, CLAIM, PRODUCT, POOL} from "../type/ObjectType.sol";
         | 
| 10 | 
            +
            import {SUBMITTED, KEEP_STATE, DECLINED, CONFIRMED, CLOSED, PAID} from "../type/StateId.sol";
         | 
| 11 | 
            +
            import {NftId} from "../type/NftId.sol";
         | 
| 12 | 
            +
            import {FeeLib} from "../type/Fee.sol";
         | 
| 34 13 | 
             
            import {StateId} from "../type/StateId.sol";
         | 
| 35 14 | 
             
            import {ClaimId, ClaimIdLib} from "../type/ClaimId.sol";
         | 
| 36 15 | 
             
            import {PayoutId, PayoutIdLib} from "../type/PayoutId.sol";
         | 
| 37 | 
            -
            import {Version, VersionLib} from "../type/Version.sol";
         | 
| 38 | 
            -
             | 
| 39 16 | 
             
            import {ComponentVerifyingService} from "../shared/ComponentVerifyingService.sol";
         | 
| 40 17 | 
             
            import {InstanceReader} from "../instance/InstanceReader.sol";
         | 
| 41 | 
            -
            import {IBundleService} from "../pool/IBundleService.sol";
         | 
| 42 18 | 
             
            import {IClaimService} from "./IClaimService.sol";
         | 
| 43 19 | 
             
            import {IPoolService} from "../pool/IPoolService.sol";
         | 
| 44 | 
            -
            import {IService} from "../shared/IService.sol";
         | 
| 45 | 
            -
            import {Service} from "../shared/Service.sol";
         | 
| 46 20 |  | 
| 47 21 |  | 
| 48 22 | 
             
            contract ClaimService is 
         | 
| @@ -362,7 +336,8 @@ contract ClaimService is | |
| 362 336 | 
             
                            // TODO transfer processing fees to product wallet
         | 
| 363 337 | 
             
                            // TODO inform product to update fee book keeping
         | 
| 364 338 | 
             
                        }
         | 
| 365 | 
            -
             | 
| 339 | 
            +
                        
         | 
| 340 | 
            +
                        // TODO: centralize token handling (issue #471)
         | 
| 366 341 | 
             
                        poolInfo.tokenHandler.transfer(
         | 
| 367 342 | 
             
                            poolInfo.wallet,
         | 
| 368 343 | 
             
                            beneficiary,
         | 
| @@ -1,8 +1,8 @@ | |
| 1 1 | 
             
            // SPDX-License-Identifier: Apache-2.0
         | 
| 2 2 | 
             
            pragma solidity ^0.8.20;
         | 
| 3 3 |  | 
| 4 | 
            -
            import {IVersionable} from "../ | 
| 5 | 
            -
            import {ProxyManager} from "../ | 
| 4 | 
            +
            import {IVersionable} from "../upgradeability/IVersionable.sol";
         | 
| 5 | 
            +
            import {ProxyManager} from "../upgradeability/ProxyManager.sol";
         | 
| 6 6 | 
             
            import {ClaimService} from "./ClaimService.sol";
         | 
| 7 7 |  | 
| 8 8 | 
             
            contract ClaimServiceManager is ProxyManager {
         | 
| @@ -38,6 +38,8 @@ interface IPolicyService is IService { | |
| 38 38 | 
             
                error ErrorPolicyServicePremiumMismatch(NftId policyNftId, Amount expectedPremiumAmount, Amount recalculatedPremiumAmount);
         | 
| 39 39 | 
             
                error ErrorPolicyServiceTransferredPremiumMismatch(NftId policyNftId, Amount expectedPremiumAmount, Amount transferredPremiumAmount);
         | 
| 40 40 |  | 
| 41 | 
            +
                event LogPolicyServicePolicyDeclined(NftId policyNftId);
         | 
| 42 | 
            +
             | 
| 41 43 | 
             
                /// @dev collateralizes the policy represented by {policyNftId}
         | 
| 42 44 | 
             
                /// sets the policy state to collateralized
         | 
| 43 45 | 
             
                /// may set the policy state to activated and set the activation date
         | 
| @@ -10,12 +10,9 @@ import {ReferralId} from "../type/Referral.sol"; | |
| 10 10 | 
             
            import {RiskId} from "../type/RiskId.sol";
         | 
| 11 11 | 
             
            import {Seconds} from "../type/Seconds.sol";
         | 
| 12 12 |  | 
| 13 | 
            -
            interface IProductComponent is | 
| 14 | 
            -
             | 
| 15 | 
            -
             | 
| 16 | 
            -
                    Fee memory productFee,
         | 
| 17 | 
            -
                    Fee memory processingFee
         | 
| 18 | 
            -
                ) external;
         | 
| 13 | 
            +
            interface IProductComponent is
         | 
| 14 | 
            +
                IInstanceLinkedComponent
         | 
| 15 | 
            +
            {
         | 
| 19 16 |  | 
| 20 17 | 
             
                function calculatePremium(
         | 
| 21 18 | 
             
                    Amount sumInsuredAmount,
         | 
| @@ -33,10 +30,11 @@ interface IProductComponent is IInstanceLinkedComponent { | |
| 33 30 | 
             
                    bytes memory applicationData
         | 
| 34 31 | 
             
                ) external view returns (Amount netPremiumAmount);    
         | 
| 35 32 |  | 
| 33 | 
            +
                function getPoolNftId() external view returns (NftId poolNftId);
         | 
| 34 | 
            +
                function getDistributionNftId() external view returns (NftId distributionNftId);
         | 
| 35 | 
            +
             | 
| 36 36 |  | 
| 37 37 | 
             
                /// @dev returns initial pool specific infos for this pool
         | 
| 38 38 | 
             
                function getInitialProductInfo() external view returns (IComponents.ProductInfo memory info);
         | 
| 39 | 
            -
             | 
| 40 | 
            -
                function getPoolNftId() external view returns (NftId poolNftId);
         | 
| 41 | 
            -
                function getDistributionNftId() external view returns (NftId distributionNftId);
         | 
| 39 | 
            +
                
         | 
| 42 40 | 
             
            }
         | 
| @@ -90,15 +90,38 @@ contract PolicyService is | |
| 90 90 | 
             
                    (, productInfo,) = _getAndVerifyActiveComponent(PRODUCT());
         | 
| 91 91 | 
             
                    product = Product(productInfo.objectAddress);
         | 
| 92 92 | 
             
                }
         | 
| 93 | 
            -
             | 
| 93 | 
            +
                
         | 
| 94 94 |  | 
| 95 95 | 
             
                function decline(
         | 
| 96 | 
            -
                    NftId policyNftId
         | 
| 96 | 
            +
                    NftId applicationNftId // = policyNftId
         | 
| 97 97 | 
             
                )
         | 
| 98 98 | 
             
                    external
         | 
| 99 | 
            -
                    override
         | 
| 99 | 
            +
                    virtual override
         | 
| 100 100 | 
             
                {
         | 
| 101 | 
            -
                     | 
| 101 | 
            +
                    (NftId productNftId,, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
         | 
| 102 | 
            +
                    InstanceReader instanceReader = instance.getInstanceReader();
         | 
| 103 | 
            +
             | 
| 104 | 
            +
                    // check policy is in state applied
         | 
| 105 | 
            +
                    if (instanceReader.getPolicyState(applicationNftId) != APPLIED()) {
         | 
| 106 | 
            +
                        revert ErrorPolicyServicePolicyStateNotApplied(applicationNftId);
         | 
| 107 | 
            +
                    }
         | 
| 108 | 
            +
             | 
| 109 | 
            +
                    // check policy matches with calling product
         | 
| 110 | 
            +
                    IPolicy.PolicyInfo memory applicationInfo = instanceReader.getPolicyInfo(applicationNftId);
         | 
| 111 | 
            +
                    if(applicationInfo.productNftId != productNftId) {
         | 
| 112 | 
            +
                        revert ErrorPolicyServicePolicyProductMismatch(
         | 
| 113 | 
            +
                            applicationNftId, 
         | 
| 114 | 
            +
                            applicationInfo.productNftId, 
         | 
| 115 | 
            +
                            productNftId);
         | 
| 116 | 
            +
                    }
         | 
| 117 | 
            +
                    
         | 
| 118 | 
            +
             | 
| 119 | 
            +
                    // store updated policy info
         | 
| 120 | 
            +
                    instance.getInstanceStore().updatePolicyState(
         | 
| 121 | 
            +
                        applicationNftId, 
         | 
| 122 | 
            +
                        DECLINED());
         | 
| 123 | 
            +
             | 
| 124 | 
            +
                    emit LogPolicyServicePolicyDeclined(applicationNftId);
         | 
| 102 125 | 
             
                }
         | 
| 103 126 |  | 
| 104 127 | 
             
                event LogDebug(uint idx, string message);
         | 
| @@ -427,6 +450,7 @@ contract PolicyService is | |
| 427 450 | 
             
                        bundleNftId, 
         | 
| 428 451 | 
             
                        premium);
         | 
| 429 452 |  | 
| 453 | 
            +
                    // TODO: centralize token handling (issue #471)
         | 
| 430 454 | 
             
                    // transfer premium amounts to target wallets
         | 
| 431 455 | 
             
                    tokenHandler.transfer(policyHolder, productWallet, premium.productFeeAmount);
         | 
| 432 456 | 
             
                    tokenHandler.transfer(policyHolder, distributionWallet, premium.distributionFeeAndCommissionAmount);
         | 
| @@ -1,12 +1,9 @@ | |
| 1 1 | 
             
            // SPDX-License-Identifier: Apache-2.0
         | 
| 2 2 | 
             
            pragma solidity ^0.8.20;
         | 
| 3 3 |  | 
| 4 | 
            -
            import {IVersionable} from "../ | 
| 5 | 
            -
            import {ProxyManager} from "../ | 
| 4 | 
            +
            import {IVersionable} from "../upgradeability/IVersionable.sol";
         | 
| 5 | 
            +
            import {ProxyManager} from "../upgradeability/ProxyManager.sol";
         | 
| 6 6 | 
             
            import {PolicyService} from "./PolicyService.sol";
         | 
| 7 | 
            -
            import {Registry} from "../registry/Registry.sol";
         | 
| 8 | 
            -
            import {RegistryService} from "../registry/RegistryService.sol";
         | 
| 9 | 
            -
            import {VersionLib} from "../type/Version.sol";
         | 
| 10 7 |  | 
| 11 8 | 
             
            contract PolicyServiceManager is ProxyManager {
         | 
| 12 9 |  | 
| @@ -1,12 +1,9 @@ | |
| 1 1 | 
             
            // SPDX-License-Identifier: Apache-2.0
         | 
| 2 2 | 
             
            pragma solidity ^0.8.20;
         | 
| 3 3 |  | 
| 4 | 
            -
            import {IVersionable} from "../ | 
| 5 | 
            -
            import {ProxyManager} from "../ | 
| 4 | 
            +
            import {IVersionable} from "../upgradeability/IVersionable.sol";
         | 
| 5 | 
            +
            import {ProxyManager} from "../upgradeability/ProxyManager.sol";
         | 
| 6 6 | 
             
            import {PricingService} from "./PricingService.sol";
         | 
| 7 | 
            -
            import {Registry} from "../registry/Registry.sol";
         | 
| 8 | 
            -
            import {RegistryService} from "../registry/RegistryService.sol";
         | 
| 9 | 
            -
            import {REGISTRY} from "../type/ObjectType.sol";
         | 
| 10 7 |  | 
| 11 8 | 
             
            contract PricingServiceManager is ProxyManager {
         | 
| 12 9 |  | 
| @@ -9,6 +9,7 @@ import {InstanceLinkedComponent} from "../shared/InstanceLinkedComponent.sol"; | |
| 9 9 | 
             
            import {Fee, FeeLib} from "../type/Fee.sol";
         | 
| 10 10 | 
             
            import {IRisk} from "../instance/module/IRisk.sol";
         | 
| 11 11 | 
             
            import {IApplicationService} from "./IApplicationService.sol";
         | 
| 12 | 
            +
            import {IAuthorization} from "../authorization/IAuthorization.sol";
         | 
| 12 13 | 
             
            import {IComponentService} from "../shared/IComponentService.sol";
         | 
| 13 14 | 
             
            import {IPolicyService} from "./IPolicyService.sol";
         | 
| 14 15 | 
             
            import {IProductService} from "./IProductService.sol";
         | 
| @@ -52,9 +53,92 @@ abstract contract Product is | |
| 52 53 | 
             
                    Distribution _distribution;
         | 
| 53 54 | 
             
                }
         | 
| 54 55 |  | 
| 55 | 
            -
             | 
| 56 | 
            +
             | 
| 57 | 
            +
                function calculatePremium(
         | 
| 58 | 
            +
                    Amount sumInsuredAmount,
         | 
| 59 | 
            +
                    RiskId riskId,
         | 
| 60 | 
            +
                    Seconds lifetime,
         | 
| 61 | 
            +
                    bytes memory applicationData,
         | 
| 62 | 
            +
                    NftId bundleNftId,
         | 
| 63 | 
            +
                    ReferralId referralId
         | 
| 64 | 
            +
                )
         | 
| 65 | 
            +
                    external 
         | 
| 66 | 
            +
                    view 
         | 
| 67 | 
            +
                    override 
         | 
| 68 | 
            +
                    returns (Amount premiumAmount)
         | 
| 69 | 
            +
                {
         | 
| 70 | 
            +
                    IPolicy.Premium memory premium = _getProductStorage()._pricingService.calculatePremium(
         | 
| 71 | 
            +
                        getNftId(),
         | 
| 72 | 
            +
                        riskId,
         | 
| 73 | 
            +
                        sumInsuredAmount,
         | 
| 74 | 
            +
                        lifetime,
         | 
| 75 | 
            +
                        applicationData,
         | 
| 76 | 
            +
                        bundleNftId,
         | 
| 77 | 
            +
                        referralId
         | 
| 78 | 
            +
                    );
         | 
| 79 | 
            +
             | 
| 80 | 
            +
                    return AmountLib.toAmount(premium.premiumAmount);
         | 
| 81 | 
            +
                }
         | 
| 82 | 
            +
             | 
| 83 | 
            +
                function calculateNetPremium(
         | 
| 84 | 
            +
                    Amount sumInsuredAmount,
         | 
| 85 | 
            +
                    RiskId riskId,
         | 
| 86 | 
            +
                    Seconds lifetime,
         | 
| 87 | 
            +
                    bytes memory applicationData
         | 
| 88 | 
            +
                )
         | 
| 89 | 
            +
                    external
         | 
| 90 | 
            +
                    view
         | 
| 91 | 
            +
                    virtual override
         | 
| 92 | 
            +
                    returns (Amount netPremiumAmount)
         | 
| 93 | 
            +
                {
         | 
| 94 | 
            +
                    // default 10% of sum insured
         | 
| 95 | 
            +
                    return AmountLib.toAmount(sumInsuredAmount.toInt() / 10);
         | 
| 96 | 
            +
                }
         | 
| 97 | 
            +
             | 
| 98 | 
            +
             | 
| 99 | 
            +
                function register()
         | 
| 100 | 
            +
                    external
         | 
| 101 | 
            +
                    virtual
         | 
| 102 | 
            +
                    onlyOwner()
         | 
| 103 | 
            +
                {
         | 
| 104 | 
            +
                    _getProductStorage()._componentService.registerProduct();
         | 
| 105 | 
            +
                    _approveTokenHandler(type(uint256).max);
         | 
| 106 | 
            +
                }
         | 
| 107 | 
            +
             | 
| 108 | 
            +
             | 
| 109 | 
            +
                function getInitialProductInfo()
         | 
| 110 | 
            +
                    public 
         | 
| 111 | 
            +
                    virtual 
         | 
| 112 | 
            +
                    view 
         | 
| 113 | 
            +
                    returns (IComponents.ProductInfo memory poolInfo)
         | 
| 114 | 
            +
                {
         | 
| 115 | 
            +
                    ProductStorage storage $ = _getProductStorage();
         | 
| 116 | 
            +
             | 
| 117 | 
            +
                    return IComponents.ProductInfo({
         | 
| 118 | 
            +
                        distributionNftId: $._distributionNftId,
         | 
| 119 | 
            +
                        poolNftId: $._poolNftId,
         | 
| 120 | 
            +
                        productFee: FeeLib.zero(),
         | 
| 121 | 
            +
                        processingFee: FeeLib.zero(),
         | 
| 122 | 
            +
                        distributionFee: FeeLib.zero(),
         | 
| 123 | 
            +
                        minDistributionOwnerFee: FeeLib.zero(),
         | 
| 124 | 
            +
                        poolFee: FeeLib.zero(),
         | 
| 125 | 
            +
                        stakingFee: FeeLib.zero(),
         | 
| 126 | 
            +
                        performanceFee: FeeLib.zero()
         | 
| 127 | 
            +
                    });
         | 
| 128 | 
            +
                }
         | 
| 129 | 
            +
             | 
| 130 | 
            +
                function getPoolNftId() external view override returns (NftId poolNftId) {
         | 
| 131 | 
            +
                    return getRegistry().getNftId(address(_getProductStorage()._pool));
         | 
| 132 | 
            +
                }
         | 
| 133 | 
            +
             | 
| 134 | 
            +
                function getDistributionNftId() external view override returns (NftId distributionNftId) {
         | 
| 135 | 
            +
                    return getRegistry().getNftId(address(_getProductStorage()._distribution));
         | 
| 136 | 
            +
                }
         | 
| 137 | 
            +
             | 
| 138 | 
            +
                function _initializeProduct(
         | 
| 56 139 | 
             
                    address registry,
         | 
| 57 140 | 
             
                    NftId instanceNftId,
         | 
| 141 | 
            +
                    IAuthorization authorization,
         | 
| 58 142 | 
             
                    address initialOwner,
         | 
| 59 143 | 
             
                    string memory name,
         | 
| 60 144 | 
             
                    address token,
         | 
| @@ -64,11 +148,21 @@ abstract contract Product is | |
| 64 148 | 
             
                    bytes memory registryData, // writeonly data that will saved in the object info record of the registry
         | 
| 65 149 | 
             
                    bytes memory componentData // writeonly data that will saved in the object info record of the registry
         | 
| 66 150 | 
             
                )
         | 
| 67 | 
            -
                     | 
| 151 | 
            +
                    internal
         | 
| 68 152 | 
             
                    virtual
         | 
| 69 153 | 
             
                    onlyInitializing()
         | 
| 70 154 | 
             
                {
         | 
| 71 | 
            -
                     | 
| 155 | 
            +
                    _initializeInstanceLinkedComponent(
         | 
| 156 | 
            +
                        registry, 
         | 
| 157 | 
            +
                        instanceNftId, 
         | 
| 158 | 
            +
                        name, 
         | 
| 159 | 
            +
                        token, 
         | 
| 160 | 
            +
                        PRODUCT(), 
         | 
| 161 | 
            +
                        authorization, 
         | 
| 162 | 
            +
                        isInterceptor, 
         | 
| 163 | 
            +
                        initialOwner, 
         | 
| 164 | 
            +
                        registryData, 
         | 
| 165 | 
            +
                        componentData);
         | 
| 72 166 |  | 
| 73 167 | 
             
                    ProductStorage storage $ = _getProductStorage();
         | 
| 74 168 | 
             
                    // TODO add validation
         | 
| @@ -88,27 +182,17 @@ abstract contract Product is | |
| 88 182 | 
             
                }
         | 
| 89 183 |  | 
| 90 184 |  | 
| 91 | 
            -
                function  | 
| 92 | 
            -
                    external
         | 
| 93 | 
            -
                    virtual
         | 
| 94 | 
            -
                    onlyOwner()
         | 
| 95 | 
            -
                {
         | 
| 96 | 
            -
                    _getProductStorage()._componentService.registerProduct();
         | 
| 97 | 
            -
                }
         | 
| 98 | 
            -
             | 
| 99 | 
            -
             | 
| 100 | 
            -
                function setFees(
         | 
| 185 | 
            +
                function _setFees(
         | 
| 101 186 | 
             
                    Fee memory productFee,
         | 
| 102 187 | 
             
                    Fee memory processingFee
         | 
| 103 188 | 
             
                )
         | 
| 104 | 
            -
                     | 
| 105 | 
            -
                     | 
| 106 | 
            -
                    restricted()
         | 
| 107 | 
            -
                    override
         | 
| 189 | 
            +
                    internal
         | 
| 190 | 
            +
                    virtual
         | 
| 108 191 | 
             
                {
         | 
| 109 192 | 
             
                    _getProductStorage()._componentService.setProductFees(productFee, processingFee);
         | 
| 110 193 | 
             
                }
         | 
| 111 194 |  | 
| 195 | 
            +
             | 
| 112 196 | 
             
                function _createRisk(
         | 
| 113 197 | 
             
                    RiskId id,
         | 
| 114 198 | 
             
                    bytes memory data
         | 
| @@ -139,10 +223,12 @@ abstract contract Product is | |
| 139 223 | 
             
                    );
         | 
| 140 224 | 
             
                }
         | 
| 141 225 |  | 
| 226 | 
            +
             | 
| 142 227 | 
             
                function _getRiskInfo(RiskId id) internal view returns (IRisk.RiskInfo memory info) {
         | 
| 143 228 | 
             
                    return getInstance().getInstanceReader().getRiskInfo(id);
         | 
| 144 229 | 
             
                }
         | 
| 145 230 |  | 
| 231 | 
            +
             | 
| 146 232 | 
             
                function _createApplication(
         | 
| 147 233 | 
             
                    address applicationOwner,
         | 
| 148 234 | 
             
                    RiskId riskId,
         | 
| @@ -179,6 +265,15 @@ abstract contract Product is | |
| 179 265 | 
             
                        activateAt);
         | 
| 180 266 | 
             
                }
         | 
| 181 267 |  | 
| 268 | 
            +
                function _decline(
         | 
| 269 | 
            +
                    NftId policyNftId
         | 
| 270 | 
            +
                )
         | 
| 271 | 
            +
                    internal
         | 
| 272 | 
            +
                {
         | 
| 273 | 
            +
                    _getProductStorage()._policyService.decline(
         | 
| 274 | 
            +
                        policyNftId);
         | 
| 275 | 
            +
                }
         | 
| 276 | 
            +
             | 
| 182 277 | 
             
                function _collectPremium(
         | 
| 183 278 | 
             
                    NftId policyNftId,
         | 
| 184 279 | 
             
                    Timestamp activateAt
         | 
| @@ -290,77 +385,6 @@ abstract contract Product is | |
| 290 385 | 
             
                        payoutId);
         | 
| 291 386 | 
             
                }
         | 
| 292 387 |  | 
| 293 | 
            -
                function calculatePremium(
         | 
| 294 | 
            -
                    Amount sumInsuredAmount,
         | 
| 295 | 
            -
                    RiskId riskId,
         | 
| 296 | 
            -
                    Seconds lifetime,
         | 
| 297 | 
            -
                    bytes memory applicationData,
         | 
| 298 | 
            -
                    NftId bundleNftId,
         | 
| 299 | 
            -
                    ReferralId referralId
         | 
| 300 | 
            -
                )
         | 
| 301 | 
            -
                    external 
         | 
| 302 | 
            -
                    view 
         | 
| 303 | 
            -
                    override 
         | 
| 304 | 
            -
                    returns (Amount premiumAmount)
         | 
| 305 | 
            -
                {
         | 
| 306 | 
            -
                    IPolicy.Premium memory premium = _getProductStorage()._pricingService.calculatePremium(
         | 
| 307 | 
            -
                        getNftId(),
         | 
| 308 | 
            -
                        riskId,
         | 
| 309 | 
            -
                        sumInsuredAmount,
         | 
| 310 | 
            -
                        lifetime,
         | 
| 311 | 
            -
                        applicationData,
         | 
| 312 | 
            -
                        bundleNftId,
         | 
| 313 | 
            -
                        referralId
         | 
| 314 | 
            -
                    );
         | 
| 315 | 
            -
             | 
| 316 | 
            -
                    return AmountLib.toAmount(premium.premiumAmount);
         | 
| 317 | 
            -
                }
         | 
| 318 | 
            -
             | 
| 319 | 
            -
                function calculateNetPremium(
         | 
| 320 | 
            -
                    Amount sumInsuredAmount,
         | 
| 321 | 
            -
                    RiskId riskId,
         | 
| 322 | 
            -
                    Seconds lifetime,
         | 
| 323 | 
            -
                    bytes memory applicationData
         | 
| 324 | 
            -
                )
         | 
| 325 | 
            -
                    external
         | 
| 326 | 
            -
                    view
         | 
| 327 | 
            -
                    virtual override
         | 
| 328 | 
            -
                    returns (Amount netPremiumAmount)
         | 
| 329 | 
            -
                {
         | 
| 330 | 
            -
                    // default 10% of sum insured
         | 
| 331 | 
            -
                    return AmountLib.toAmount(sumInsuredAmount.toInt() / 10);
         | 
| 332 | 
            -
                }
         | 
| 333 | 
            -
             | 
| 334 | 
            -
             | 
| 335 | 
            -
                function getInitialProductInfo()
         | 
| 336 | 
            -
                    public 
         | 
| 337 | 
            -
                    virtual 
         | 
| 338 | 
            -
                    view 
         | 
| 339 | 
            -
                    returns (IComponents.ProductInfo memory poolInfo)
         | 
| 340 | 
            -
                {
         | 
| 341 | 
            -
                    ProductStorage storage $ = _getProductStorage();
         | 
| 342 | 
            -
             | 
| 343 | 
            -
                    return IComponents.ProductInfo({
         | 
| 344 | 
            -
                        distributionNftId: $._distributionNftId,
         | 
| 345 | 
            -
                        poolNftId: $._poolNftId,
         | 
| 346 | 
            -
                        productFee: FeeLib.zero(),
         | 
| 347 | 
            -
                        processingFee: FeeLib.zero(),
         | 
| 348 | 
            -
                        distributionFee: FeeLib.zero(),
         | 
| 349 | 
            -
                        minDistributionOwnerFee: FeeLib.zero(),
         | 
| 350 | 
            -
                        poolFee: FeeLib.zero(),
         | 
| 351 | 
            -
                        stakingFee: FeeLib.zero(),
         | 
| 352 | 
            -
                        performanceFee: FeeLib.zero()
         | 
| 353 | 
            -
                    });
         | 
| 354 | 
            -
                }
         | 
| 355 | 
            -
             | 
| 356 | 
            -
                function getPoolNftId() external view override returns (NftId poolNftId) {
         | 
| 357 | 
            -
                    return getRegistry().getNftId(address(_getProductStorage()._pool));
         | 
| 358 | 
            -
                }
         | 
| 359 | 
            -
             | 
| 360 | 
            -
                function getDistributionNftId() external view override returns (NftId distributionNftId) {
         | 
| 361 | 
            -
                    return getRegistry().getNftId(address(_getProductStorage()._distribution));
         | 
| 362 | 
            -
                }
         | 
| 363 | 
            -
             | 
| 364 388 | 
             
                function _toRiskId(string memory riskName) internal pure returns (RiskId riskId) {
         | 
| 365 389 | 
             
                    return RiskIdLib.toRiskId(riskName);
         | 
| 366 390 | 
             
                }
         | 
| @@ -1,45 +1,20 @@ | |
| 1 1 | 
             
            // SPDX-License-Identifier: Apache-2.0
         | 
| 2 2 | 
             
            pragma solidity ^0.8.20;
         | 
| 3 3 |  | 
| 4 | 
            -
            import {IRegistry} from "../registry/IRegistry.sol";
         | 
| 5 | 
            -
            import {IProductComponent} from "./IProductComponent.sol";
         | 
| 6 | 
            -
            import {Product} from "./Product.sol";
         | 
| 7 | 
            -
            import {IInstanceLinkedComponent} from "../shared/IInstanceLinkedComponent.sol";
         | 
| 8 | 
            -
            import {IPoolComponent} from "../pool/IPoolComponent.sol";
         | 
| 9 | 
            -
            import {IDistributionComponent} from "../distribution/IDistributionComponent.sol";
         | 
| 10 4 | 
             
            import {IInstance} from "../instance/IInstance.sol";
         | 
| 11 | 
            -
            import { | 
| 12 | 
            -
            import { | 
| 13 | 
            -
            import {IBundle} from "../instance/module/IBundle.sol";
         | 
| 5 | 
            +
            import {IInstanceService} from "../instance/IInstanceService.sol";
         | 
| 6 | 
            +
            import {IPoolService} from "../pool/PoolService.sol";
         | 
| 14 7 | 
             
            import {IProductService} from "./IProductService.sol";
         | 
| 15 | 
            -
            import { | 
| 16 | 
            -
             | 
| 17 | 
            -
            import {TokenHandler} from "../shared/TokenHandler.sol";
         | 
| 18 | 
            -
             | 
| 19 | 
            -
            import {IVersionable} from "../shared/IVersionable.sol";
         | 
| 20 | 
            -
            import {Versionable} from "../shared/Versionable.sol";
         | 
| 8 | 
            +
            import {IRegistryService} from "../registry/IRegistryService.sol";
         | 
| 9 | 
            +
            import {IRisk} from "../instance/module/IRisk.sol";
         | 
| 21 10 |  | 
| 22 | 
            -
            import { | 
| 23 | 
            -
            import {UFixed, UFixedLib} from "../type/UFixed.sol";
         | 
| 24 | 
            -
            import {Blocknumber, blockNumber} from "../type/Blocknumber.sol";
         | 
| 11 | 
            +
            import {InstanceReader} from "../instance/InstanceReader.sol";
         | 
| 25 12 | 
             
            import {ObjectType, INSTANCE, PRODUCT, POOL, POLICY, REGISTRY} from "../type/ObjectType.sol";
         | 
| 26 | 
            -
            import { | 
| 27 | 
            -
            import {NftId | 
| 28 | 
            -
            import {Fee, FeeLib} from "../type/Fee.sol";
         | 
| 29 | 
            -
            import {ReferralId} from "../type/Referral.sol";
         | 
| 13 | 
            +
            import {KEEP_STATE} from "../type/StateId.sol";
         | 
| 14 | 
            +
            import {NftId} from "../type/NftId.sol";
         | 
| 30 15 | 
             
            import {RiskId} from "../type/RiskId.sol";
         | 
| 31 16 | 
             
            import {StateId} from "../type/StateId.sol";
         | 
| 32 | 
            -
            import {Version, VersionLib} from "../type/Version.sol";
         | 
| 33 | 
            -
            import {RoleId, PRODUCT_OWNER_ROLE} from "../type/RoleId.sol";
         | 
| 34 | 
            -
             | 
| 35 | 
            -
            import {IService} from "../shared/IService.sol";
         | 
| 36 | 
            -
            import {Service} from "../shared/Service.sol";
         | 
| 37 17 | 
             
            import {ComponentVerifyingService} from "../shared/ComponentVerifyingService.sol";
         | 
| 38 | 
            -
            import {IInstanceService} from "../instance/IInstanceService.sol";
         | 
| 39 | 
            -
            import {IProductService} from "./IProductService.sol";
         | 
| 40 | 
            -
            import {IRegistryService} from "../registry/IRegistryService.sol";
         | 
| 41 | 
            -
            import {InstanceReader} from "../instance/InstanceReader.sol";
         | 
| 42 | 
            -
            import {IPoolService} from "../pool/PoolService.sol";
         | 
| 43 18 |  | 
| 44 19 | 
             
            contract ProductService is
         | 
| 45 20 | 
             
                ComponentVerifyingService,
         | 
| @@ -1,12 +1,9 @@ | |
| 1 1 | 
             
            // SPDX-License-Identifier: Apache-2.0
         | 
| 2 2 | 
             
            pragma solidity ^0.8.20;
         | 
| 3 3 |  | 
| 4 | 
            -
            import {IVersionable} from "../ | 
| 5 | 
            -
            import {ProxyManager} from "../ | 
| 4 | 
            +
            import {IVersionable} from "../upgradeability/IVersionable.sol";
         | 
| 5 | 
            +
            import {ProxyManager} from "../upgradeability/ProxyManager.sol";
         | 
| 6 6 | 
             
            import {ProductService} from "./ProductService.sol";
         | 
| 7 | 
            -
            import {Registry} from "../registry/Registry.sol";
         | 
| 8 | 
            -
            import {RegistryService} from "../registry/RegistryService.sol";
         | 
| 9 | 
            -
            import {VersionLib} from "../type/Version.sol";
         | 
| 10 7 |  | 
| 11 8 | 
             
            contract ProductServiceManager is ProxyManager {
         | 
| 12 9 |  | 
| @@ -7,21 +7,29 @@ import {NftId} from "../type/NftId.sol"; | |
| 7 7 | 
             
            import {ObjectType} from "../type/ObjectType.sol";
         | 
| 8 8 | 
             
            import {VersionPart} from "../type/Version.sol";
         | 
| 9 9 | 
             
            import {Timestamp} from "../type/Timestamp.sol";
         | 
| 10 | 
            -
            import {RoleId} from "../type/RoleId.sol";
         | 
| 11 10 |  | 
| 11 | 
            +
            /// @title Chain Registry interface.
         | 
| 12 | 
            +
            /// A chain registry holds all protocol relevant objects with basic metadata.
         | 
| 13 | 
            +
            /// Registered objects include services, instances, products, pools, policies, bundles, stakes and more.
         | 
| 14 | 
            +
            /// Registered objects are represented by NFTs.
         | 
| 12 15 | 
             
            interface IRegistry is IERC165 {
         | 
| 13 16 |  | 
| 14 17 | 
             
                event LogRegistration(NftId nftId, NftId parentNftId, ObjectType objectType, bool isInterceptor, address objectAddress, address initialOwner);
         | 
| 15 18 | 
             
                event LogServiceRegistration(VersionPart majorVersion, ObjectType domain);
         | 
| 16 19 |  | 
| 20 | 
            +
                // register()
         | 
| 21 | 
            +
                error ErrorRegistryCallerNotRegistryService();
         | 
| 22 | 
            +
                error ErrorRegistryService(address service);
         | 
| 23 | 
            +
             | 
| 17 24 | 
             
                // registerService()
         | 
| 18 | 
            -
                error  | 
| 25 | 
            +
                error ErrorRegistryCallerNotReleaseRegistry();
         | 
| 26 | 
            +
                error ErrorRegistryServiceAddressZero(); 
         | 
| 27 | 
            +
                error ErrorRegistryServiceVersionZero(); 
         | 
| 28 | 
            +
                error ErrorRegistryNotService(address service, ObjectType objectType);
         | 
| 29 | 
            +
                error ErrorRegistryServiceParentNotRegistry(NftId parentNftId);
         | 
| 19 30 | 
             
                error ErrorRegistryDomainZero(address service);
         | 
| 20 31 | 
             
                error ErrorRegistryDomainAlreadyRegistered(address service, VersionPart version, ObjectType domain);
         | 
| 21 32 |  | 
| 22 | 
            -
                // register()
         | 
| 23 | 
            -
                error ErrorRegistryCallerNotRegistryService();
         | 
| 24 | 
            -
             | 
| 25 33 | 
             
                // registerWithCustomTypes()
         | 
| 26 34 | 
             
                error ErrorRegistryCoreTypeRegistration();
         | 
| 27 35 |  | 
| @@ -40,30 +48,34 @@ interface IRegistry is IERC165 { | |
| 40 48 | 
             
                    bytes data;
         | 
| 41 49 | 
             
                }
         | 
| 42 50 |  | 
| 43 | 
            -
             | 
| 44 51 | 
             
                struct ReleaseInfo {
         | 
| 45 52 | 
             
                    VersionPart version;
         | 
| 46 53 | 
             
                    bytes32 salt;
         | 
| 47 54 | 
             
                    address[] addresses;
         | 
| 48 55 | 
             
                    string[] names;
         | 
| 49 | 
            -
                    RoleId[][] serviceRoles;
         | 
| 50 | 
            -
                    string[][] serviceRoleNames;
         | 
| 51 | 
            -
                    RoleId[][] functionRoles;
         | 
| 52 | 
            -
                    string[][] functionRoleNames;
         | 
| 53 | 
            -
                    bytes4[][][] selectors;
         | 
| 54 56 | 
             
                    ObjectType[] domains;
         | 
| 55 57 | 
             
                    Timestamp activatedAt;
         | 
| 56 58 | 
             
                    Timestamp disabledAt;
         | 
| 57 59 | 
             
                }
         | 
| 58 60 |  | 
| 61 | 
            +
                /// @dev Register an object with a known core type.
         | 
| 62 | 
            +
                /// The function returns a newly minted object NFT ID.
         | 
| 63 | 
            +
                /// May not be used to register services.
         | 
| 64 | 
            +
                function register(ObjectInfo memory info) external returns (NftId nftId);
         | 
| 65 | 
            +
             | 
| 66 | 
            +
                /// @dev Register a service with using the provided domain and version.
         | 
| 67 | 
            +
                /// The function returns a newly minted service NFT ID.
         | 
| 68 | 
            +
                /// May only be used to register services.
         | 
| 59 69 | 
             
                function registerService(
         | 
| 60 70 | 
             
                    ObjectInfo memory serviceInfo, 
         | 
| 61 71 | 
             
                    VersionPart serviceVersion, 
         | 
| 62 72 | 
             
                    ObjectType serviceDomain
         | 
| 63 73 | 
             
                ) external returns(NftId nftId);
         | 
| 64 74 |  | 
| 65 | 
            -
                 | 
| 66 | 
            -
             | 
| 75 | 
            +
                /// @dev Register an object with a custom type.
         | 
| 76 | 
            +
                /// The function returns a newly minted object NFT ID.
         | 
| 77 | 
            +
                /// This function is reserved for GIF releases > 3.
         | 
| 78 | 
            +
                /// May not be used to register known core types.
         | 
| 67 79 | 
             
                function registerWithCustomType(ObjectInfo memory info) external returns (NftId nftId);
         | 
| 68 80 |  | 
| 69 81 | 
             
                function getInitialVersion() external view returns (VersionPart);
         | 
| @@ -110,9 +122,7 @@ interface IRegistry is IERC165 { | |
| 110 122 | 
             
                // TODO refactor the address getters below to contract getters
         | 
| 111 123 | 
             
                function getChainNftAddress() external view returns (address);
         | 
| 112 124 |  | 
| 113 | 
            -
                function  | 
| 114 | 
            -
             | 
| 115 | 
            -
                function getReleaseAccessManagerAddress(VersionPart version) external view returns (address);
         | 
| 125 | 
            +
                function getReleaseRegistryAddress() external view returns (address);
         | 
| 116 126 |  | 
| 117 127 | 
             
                function getStakingAddress() external view returns (address);
         | 
| 118 128 |  | 
| @@ -50,14 +50,14 @@ interface IRegistryService is | |
| 50 50 | 
             
                 function registerComponent(IComponent component, ObjectType objectType, address owner)
         | 
| 51 51 | 
             
                      external returns(IRegistry.ObjectInfo memory info);
         | 
| 52 52 |  | 
| 53 | 
            -
                 function registerProduct(IComponent product, address owner)
         | 
| 54 | 
            -
             | 
| 53 | 
            +
                 // function registerProduct(IComponent product, address owner)
         | 
| 54 | 
            +
                 //      external returns(IRegistry.ObjectInfo memory info);
         | 
| 55 55 |  | 
| 56 | 
            -
                 function registerPool(IComponent pool, address owner)
         | 
| 57 | 
            -
             | 
| 56 | 
            +
                 // function registerPool(IComponent pool, address owner)
         | 
| 57 | 
            +
                 //      external returns(IRegistry.ObjectInfo memory info);
         | 
| 58 58 |  | 
| 59 | 
            -
                 function registerDistribution(IComponent distribution, address owner)
         | 
| 60 | 
            -
             | 
| 59 | 
            +
                 // function registerDistribution(IComponent distribution, address owner)
         | 
| 60 | 
            +
                 //      external returns(IRegistry.ObjectInfo memory info);
         | 
| 61 61 |  | 
| 62 62 | 
             
                 function registerDistributor(IRegistry.ObjectInfo memory info) external returns(NftId nftId);
         | 
| 63 63 |  |