@etherisc/gif-next 0.0.2-e802d97-251 → 0.0.2-e83e4a5-207
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 +18 -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/authorization/IAccessAdmin.sol/IAccessAdmin.json +1032 -0
 - 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/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +148 -0
 - 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 +1505 -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 +17 -242
 - package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
 - package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +138 -93
 - package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
 - package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +65 -57
 - package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
 - package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +71 -146
 - package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
 - package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +45 -16
 - package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +1 -1
 - package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +33 -108
 - package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
 - package/artifacts/contracts/instance/IInstance.sol/IInstance.json +58 -78
 - package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
 - package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +147 -40
 - package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
 - package/artifacts/contracts/instance/Instance.sol/Instance.json +72 -140
 - 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 -76
 - package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
 - package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +210 -103
 - package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
 - package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +49 -49
 - package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
 - package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +84 -135
 - 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 +0 -53
 - 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/ObjectManager.sol/ObjectManager.dbg.json +1 -1
 - package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +3 -78
 - 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 +1155 -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 +13 -0
 - package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
 - package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +13 -0
 - package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
 - package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +13 -96
 - package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
 - package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +66 -29
 - package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
 - package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +44 -32
 - package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
 - package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +1477 -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 +78 -49
 - package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
 - package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +50 -42
 - package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
 - package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +13 -0
 - package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
 - package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +7 -202
 - package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
 - package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +13 -0
 - package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
 - package/artifacts/contracts/pool/Pool.sol/Pool.json +7 -303
 - package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
 - package/artifacts/contracts/pool/PoolService.sol/PoolService.json +62 -41
 - package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
 - package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +42 -38
 - package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
 - package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +66 -37
 - package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
 - package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +44 -36
 - package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
 - package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +1299 -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 +106 -69
 - package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
 - package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +64 -52
 - package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
 - package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +13 -0
 - package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
 - package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +13 -0
 - 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/IPricingService.sol/IPricingService.json +13 -0
 - package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
 - package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +13 -42
 - package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +1 -1
 - package/artifacts/contracts/product/IProductService.sol/IProductService.json +13 -0
 - package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
 - package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +84 -47
 - package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
 - package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +53 -41
 - package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
 - package/artifacts/contracts/product/PricingService.sol/PricingService.json +92 -63
 - package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
 - package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +57 -49
 - package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
 - package/artifacts/contracts/product/Product.sol/Product.json +13 -153
 - package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +1 -1
 - package/artifacts/contracts/product/ProductService.sol/ProductService.json +54 -25
 - package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +1 -1
 - package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +38 -30
 - 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 +0 -44
 - package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
 - package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +13 -0
 - 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 +24 -68
 - package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
 - package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +1505 -166
 - package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
 - package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +50 -13
 - package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
 - package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +37 -25
 - 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/ReleaseManager.sol/ReleaseManager.dbg.json +1 -1
 - package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +185 -318
 - package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +4 -0
 - package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +214 -0
 - 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 +82 -85
 - package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
 - package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +52 -60
 - package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
 - package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +13 -0
 - package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
 - package/artifacts/contracts/shared/ERC165.sol/ERC165.json +2 -2
 - 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 +13 -0
 - package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
 - package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +13 -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/IService.sol/IService.json +13 -0
 - package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
 - package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +1 -1
 - package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
 - package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +13 -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/NftIdSetManager.sol/NftIdSetManager.dbg.json +1 -1
 - package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.json +22 -22
 - 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/ProxyManager.sol/ProxyManager.dbg.json +1 -1
 - package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +14 -14
 - 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/Service.sol/Service.json +13 -0
 - package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
 - package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +6 -6
 - package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
 - package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +2 -2
 - package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
 - 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/IStakingService.sol/IStakingService.json +49 -7
 - package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
 - package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +44 -28
 - package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
 - package/artifacts/contracts/staking/Staking.sol/Staking.json +44 -84
 - 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 -56
 - 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 +92 -73
 - package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
 - package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +39 -47
 - package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
 - package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +197 -149
 - package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
 - package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +22 -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 +8 -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 +12 -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 +136 -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 +219 -6
 - 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 +4 -0
 - package/artifacts/contracts/type/Selector.sol/SelectorLib.json +129 -0
 - package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
 - package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
 - 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 +4 -0
 - package/artifacts/contracts/type/String.sol/StrLib.json +132 -0
 - 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 +2 -2
 - package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
 - package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +21 -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 +2 -2
 - package/contracts/authorization/AccessAdmin.sol +591 -0
 - package/contracts/authorization/AccessManagerCloneable.sol +16 -0
 - package/contracts/authorization/Authorization.sol +218 -0
 - package/contracts/authorization/IAccess.sol +48 -0
 - package/contracts/authorization/IAccessAdmin.sol +136 -0
 - package/contracts/authorization/IAuthorization.sol +54 -0
 - package/contracts/authorization/IModuleAuthorization.sol +21 -0
 - package/contracts/authorization/IServiceAuthorization.sol +38 -0
 - package/contracts/authorization/ModuleAuthorization.sol +78 -0
 - package/contracts/authorization/ServiceAuthorization.sol +90 -0
 - package/contracts/distribution/BasicDistribution.sol +149 -0
 - package/contracts/distribution/BasicDistributionAuthorization.sol +43 -0
 - package/contracts/distribution/Distribution.sol +126 -104
 - package/contracts/distribution/DistributionService.sol +13 -9
 - package/contracts/distribution/IDistributionComponent.sol +17 -35
 - package/contracts/distribution/IDistributionService.sol +5 -1
 - package/contracts/instance/IInstance.sol +11 -7
 - package/contracts/instance/IInstanceService.sol +29 -18
 - package/contracts/instance/Instance.sol +103 -85
 - package/contracts/instance/InstanceAdmin.sol +202 -267
 - package/contracts/instance/InstanceAuthorizationV3.sol +202 -0
 - package/contracts/instance/InstanceReader.sol +24 -9
 - package/contracts/instance/InstanceService.sol +151 -70
 - package/contracts/instance/InstanceStore.sol +15 -20
 - package/contracts/instance/base/BalanceStore.sol +11 -6
 - package/contracts/instance/base/Cloneable.sol +2 -25
 - package/contracts/instance/base/ObjectLifecycle.sol +106 -0
 - package/contracts/instance/base/ObjectManager.sol +7 -10
 - package/contracts/oracle/BasicOracle.sol +48 -0
 - package/contracts/oracle/BasicOracleAuthorization.sol +46 -0
 - package/contracts/oracle/IOracle.sol +16 -0
 - package/contracts/oracle/Oracle.sol +61 -49
 - package/contracts/oracle/OracleService.sol +5 -4
 - package/contracts/pool/BasicPool.sol +164 -0
 - package/contracts/pool/BasicPoolAuthorization.sol +49 -0
 - package/contracts/pool/BundleService.sol +19 -19
 - package/contracts/pool/IPoolComponent.sol +0 -60
 - package/contracts/pool/Pool.sol +143 -131
 - package/contracts/pool/PoolService.sol +7 -8
 - package/contracts/product/ApplicationService.sol +5 -5
 - package/contracts/product/BasicProduct.sol +82 -0
 - package/contracts/product/BasicProductAuthorization.sol +40 -0
 - package/contracts/product/ClaimService.sol +5 -5
 - package/contracts/product/IProductComponent.sol +6 -9
 - package/contracts/product/PolicyService.sol +5 -5
 - package/contracts/product/PricingService.sol +4 -5
 - package/contracts/product/Product.sol +103 -88
 - package/contracts/product/ProductService.sol +5 -5
 - package/contracts/registry/IRegistry.sol +5 -8
 - package/contracts/registry/Registry.sol +6 -4
 - package/contracts/registry/RegistryAdmin.sol +276 -148
 - package/contracts/registry/RegistryService.sol +5 -5
 - package/contracts/registry/RegistryServiceManager.sol +0 -5
 - package/contracts/registry/ReleaseLifecycle.sol +27 -0
 - package/contracts/registry/ReleaseManager.sol +161 -274
 - package/contracts/registry/ServiceAuthorizationV3.sol +200 -0
 - package/contracts/shared/ComponentService.sol +24 -61
 - package/contracts/shared/ComponentVerifyingService.sol +1 -1
 - package/contracts/shared/IInstanceLinkedComponent.sol +4 -0
 - package/contracts/shared/IKeyValueStore.sol +1 -0
 - package/contracts/shared/ILifecycle.sol +1 -2
 - package/contracts/shared/IService.sol +7 -0
 - package/contracts/shared/InstanceLinkedComponent.sol +26 -19
 - package/contracts/shared/KeyValueStore.sol +6 -2
 - package/contracts/shared/Lifecycle.sol +16 -69
 - package/contracts/shared/Service.sol +27 -21
 - package/contracts/staking/IStakingService.sol +11 -7
 - package/contracts/staking/StakeManagerLib.sol +52 -0
 - package/contracts/staking/Staking.sol +58 -96
 - package/contracts/staking/StakingLifecycle.sol +23 -0
 - package/contracts/staking/StakingService.sol +61 -56
 - package/contracts/staking/StakingServiceManager.sol +0 -1
 - package/contracts/staking/StakingStore.sol +82 -39
 - package/contracts/type/ObjectType.sol +169 -62
 - package/contracts/type/RoleId.sol +103 -75
 - package/contracts/type/Selector.sol +102 -0
 - package/contracts/type/String.sol +53 -0
 - package/contracts/type/UFixed.sol +6 -0
 - package/package.json +4 -1
 - package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +0 -4
 - package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +0 -228
 - package/artifacts/contracts/registry/ServiceAuthorizationsLib.sol/ServiceAuthorizationsLib.dbg.json +0 -4
 - package/artifacts/contracts/registry/ServiceAuthorizationsLib.sol/ServiceAuthorizationsLib.json +0 -137
 - 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 -1715
 - package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.dbg.json +0 -4
 - package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.json +0 -1728
 - package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.dbg.json +0 -4
 - package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.json +0 -1806
 - package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.dbg.json +0 -4
 - package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.json +0 -1824
 - 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/contracts/instance/InstanceAuthorizationsLib.sol +0 -377
 - package/contracts/registry/ServiceAuthorizationsLib.sol +0 -173
 - package/contracts/shared/AccessManagerCustom.sol +0 -736
 - package/contracts/shared/AccessManagerExtended.sol +0 -470
 - 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
 
| 
         @@ -11,56 +11,38 @@ import {Timestamp} from "../type/Timestamp.sol"; 
     | 
|
| 
       11 
11 
     | 
    
         | 
| 
       12 
12 
     | 
    
         
             
            interface IDistributionComponent is IInstanceLinkedComponent {
         
     | 
| 
       13 
13 
     | 
    
         | 
| 
      
 14 
     | 
    
         
            +
                error ErrorDistributionNotDistributor(address distributor);
         
     | 
| 
      
 15 
     | 
    
         
            +
                error ErrorDistributionAlreadyDistributor(address distributor, NftId distributorNftId);
         
     | 
| 
      
 16 
     | 
    
         
            +
             
     | 
| 
       14 
17 
     | 
    
         
             
                event LogDistributorUpdated(address to, address caller);
         
     | 
| 
       15 
18 
     | 
    
         | 
| 
       16 
     | 
    
         
            -
                 
     | 
| 
       17 
     | 
    
         
            -
             
     | 
| 
       18 
     | 
    
         
            -
                    Fee memory minDistributionOwnerFee
         
     | 
| 
       19 
     | 
    
         
            -
                ) external;
         
     | 
| 
      
 19 
     | 
    
         
            +
                /// @dev Returns true iff the provided address is registered as a distributor with this distribution component.
         
     | 
| 
      
 20 
     | 
    
         
            +
                function isDistributor(address candidate) external view returns (bool);
         
     | 
| 
       20 
21 
     | 
    
         | 
| 
       21 
     | 
    
         
            -
                 
     | 
| 
       22 
     | 
    
         
            -
             
     | 
| 
       23 
     | 
    
         
            -
                    UFixed minDiscountPercentage,
         
     | 
| 
       24 
     | 
    
         
            -
                    UFixed maxDiscountPercentage,
         
     | 
| 
       25 
     | 
    
         
            -
                    UFixed commissionPercentage,
         
     | 
| 
       26 
     | 
    
         
            -
                    uint32 maxReferralCount,
         
     | 
| 
       27 
     | 
    
         
            -
                    uint32 maxReferralLifetime,
         
     | 
| 
       28 
     | 
    
         
            -
                    bool allowSelfReferrals,
         
     | 
| 
       29 
     | 
    
         
            -
                    bool allowRenewals,
         
     | 
| 
       30 
     | 
    
         
            -
                    bytes memory data
         
     | 
| 
       31 
     | 
    
         
            -
                ) external returns (DistributorType distributorType);
         
     | 
| 
      
 22 
     | 
    
         
            +
                /// @dev Returns the distributor Nft Id for the provided address
         
     | 
| 
      
 23 
     | 
    
         
            +
                function getDistributorNftId(address distributor) external view returns (NftId distributorNftId);
         
     | 
| 
       32 
24 
     | 
    
         | 
| 
       33 
     | 
    
         
            -
                function  
     | 
| 
       34 
     | 
    
         
            -
                     
     | 
| 
       35 
     | 
    
         
            -
             
     | 
| 
       36 
     | 
    
         
            -
                    bytes memory data
         
     | 
| 
       37 
     | 
    
         
            -
                ) external returns(NftId distributorNftId);
         
     | 
| 
      
 25 
     | 
    
         
            +
                function getDiscountPercentage(
         
     | 
| 
      
 26 
     | 
    
         
            +
                    string memory referralCode
         
     | 
| 
      
 27 
     | 
    
         
            +
                ) external view returns (UFixed discountPercentage, ReferralStatus status);
         
     | 
| 
       38 
28 
     | 
    
         | 
| 
       39 
     | 
    
         
            -
                function  
     | 
| 
       40 
     | 
    
         
            -
                     
     | 
| 
       41 
     | 
    
         
            -
             
     | 
| 
       42 
     | 
    
         
            -
                    bytes memory data
         
     | 
| 
       43 
     | 
    
         
            -
                ) external;
         
     | 
| 
      
 29 
     | 
    
         
            +
                function getReferralId(
         
     | 
| 
      
 30 
     | 
    
         
            +
                    string memory referralCode
         
     | 
| 
      
 31 
     | 
    
         
            +
                ) external returns (ReferralId referralId);
         
     | 
| 
       44 
32 
     | 
    
         | 
| 
       45 
33 
     | 
    
         
             
                function calculateRenewalFeeAmount(
         
     | 
| 
       46 
34 
     | 
    
         
             
                    ReferralId referralId,
         
     | 
| 
       47 
35 
     | 
    
         
             
                    uint256 netPremiumAmount
         
     | 
| 
       48 
36 
     | 
    
         
             
                ) external view returns (uint256 feeAmount);
         
     | 
| 
       49 
37 
     | 
    
         | 
| 
       50 
     | 
    
         
            -
                /// @dev  
     | 
| 
      
 38 
     | 
    
         
            +
                /// @dev Callback function to process a renewal of a policy.
         
     | 
| 
      
 39 
     | 
    
         
            +
                /// The default implementation is empty.
         
     | 
| 
      
 40 
     | 
    
         
            +
                /// Overwrite this function to implement a use case specific behaviour.
         
     | 
| 
       51 
41 
     | 
    
         
             
                function processRenewal(
         
     | 
| 
       52 
42 
     | 
    
         
             
                    ReferralId referralId,
         
     | 
| 
       53 
43 
     | 
    
         
             
                    uint256 feeAmount
         
     | 
| 
       54 
44 
     | 
    
         
             
                ) external;
         
     | 
| 
       55 
45 
     | 
    
         | 
| 
       56 
     | 
    
         
            -
                 
     | 
| 
       57 
     | 
    
         
            -
                    string memory referralCode
         
     | 
| 
       58 
     | 
    
         
            -
                ) external view returns (UFixed discountPercentage, ReferralStatus status);
         
     | 
| 
       59 
     | 
    
         
            -
             
     | 
| 
       60 
     | 
    
         
            -
                function getReferralId(
         
     | 
| 
       61 
     | 
    
         
            -
                    string memory referralCode
         
     | 
| 
       62 
     | 
    
         
            -
                ) external returns (ReferralId referralId);
         
     | 
| 
       63 
     | 
    
         
            -
             
     | 
| 
       64 
     | 
    
         
            -
                /// @dev returns true iff the component needs to be called when selling/renewing policis
         
     | 
| 
      
 46 
     | 
    
         
            +
                /// @dev Returns true to ensure component is called when transferring distributor Nft Ids.
         
     | 
| 
       65 
47 
     | 
    
         
             
                function isVerifying() external view returns (bool verifying);
         
     | 
| 
       66 
48 
     | 
    
         
             
            }
         
     | 
| 
         @@ -13,6 +13,7 @@ import {Timestamp} from "../type/Timestamp.sol"; 
     | 
|
| 
       13 
13 
     | 
    
         | 
| 
       14 
14 
     | 
    
         | 
| 
       15 
15 
     | 
    
         
             
            interface IDistributionService is IService {
         
     | 
| 
      
 16 
     | 
    
         
            +
             
     | 
| 
       16 
17 
     | 
    
         
             
                error ErrorDistributionServiceCallerNotRegistered(address caller);
         
     | 
| 
       17 
18 
     | 
    
         
             
                error ErrorIDistributionServiceParentNftIdNotInstance(NftId nftId, NftId parentNftId);
         
     | 
| 
       18 
19 
     | 
    
         
             
                error ErrorIDistributionServiceCallerNotDistributor(address caller);
         
     | 
| 
         @@ -25,7 +26,10 @@ interface IDistributionService is IService { 
     | 
|
| 
       25 
26 
     | 
    
         
             
                error ErrorIDistributionServiceExpirationInvalid(Timestamp expiryAt);
         
     | 
| 
       26 
27 
     | 
    
         
             
                error ErrorIDistributionServiceCommissionTooHigh(uint256 commissionPercentage, uint256 maxCommissionPercentage);
         
     | 
| 
       27 
28 
     | 
    
         
             
                error ErrorIDistributionServiceMinFeeTooHigh(uint256 minFee, uint256 limit);
         
     | 
| 
       28 
     | 
    
         
            -
             
     | 
| 
      
 29 
     | 
    
         
            +
             
     | 
| 
      
 30 
     | 
    
         
            +
                error ErrorDistributionServiceVariableFeesTooHight(uint256 maxDiscountPercentage, uint256 limit);
         
     | 
| 
      
 31 
     | 
    
         
            +
                error ErrorDistributionServiceMaxDiscountTooHigh(uint256 maxDiscountPercentage, uint256 limit);
         
     | 
| 
      
 32 
     | 
    
         
            +
             
     | 
| 
       29 
33 
     | 
    
         
             
                error ErrorIDistributionServiceReferralInvalid(NftId distributionNftId, ReferralId referralId);
         
     | 
| 
       30 
34 
     | 
    
         
             
                error ErrorDistributionServiceInvalidFeeTransferred(Amount transferredDistributionFeeAmount, Amount expectedDistributionFeeAmount);
         
     | 
| 
       31 
35 
     | 
    
         | 
| 
         @@ -3,6 +3,7 @@ pragma solidity ^0.8.20; 
     | 
|
| 
       3 
3 
     | 
    
         | 
| 
       4 
4 
     | 
    
         
             
            import {IAccessManaged} from "@openzeppelin/contracts/access/manager/IAccessManaged.sol";
         
     | 
| 
       5 
5 
     | 
    
         | 
| 
      
 6 
     | 
    
         
            +
            import {Amount} from "../type/Amount.sol";
         
     | 
| 
       6 
7 
     | 
    
         
             
            import {ClaimId} from "../type/ClaimId.sol";
         
     | 
| 
       7 
8 
     | 
    
         
             
            import {DistributorType} from "../type/DistributorType.sol";
         
     | 
| 
       8 
9 
     | 
    
         
             
            import {PayoutId} from "../type/PayoutId.sol";
         
     | 
| 
         @@ -13,8 +14,9 @@ import {RiskId} from "../type/RiskId.sol"; 
     | 
|
| 
       13 
14 
     | 
    
         
             
            import {VersionPart} from "../type/Version.sol";
         
     | 
| 
       14 
15 
     | 
    
         
             
            import {Key32} from "../type/Key32.sol";
         
     | 
| 
       15 
16 
     | 
    
         
             
            import {RoleId} from "../type/RoleId.sol";
         
     | 
| 
      
 17 
     | 
    
         
            +
            import {Seconds} from "../type/Seconds.sol";
         
     | 
| 
      
 18 
     | 
    
         
            +
            import {UFixed} from "../type/UFixed.sol";
         
     | 
| 
       16 
19 
     | 
    
         | 
| 
       17 
     | 
    
         
            -
            import {AccessManagerExtendedInitializeable} from "../shared/AccessManagerExtendedInitializeable.sol";
         
     | 
| 
       18 
20 
     | 
    
         
             
            import {IRegisterable} from "../shared/IRegisterable.sol";
         
     | 
| 
       19 
21 
     | 
    
         | 
| 
       20 
22 
     | 
    
         
             
            import {ITransferInterceptor} from "../registry/ITransferInterceptor.sol";
         
     | 
| 
         @@ -67,16 +69,18 @@ interface IInstance is 
     | 
|
| 
       67 
69 
     | 
    
         
             
                function setTargetFunctionRole(string memory targetName, bytes4[] calldata selectors, RoleId roleId) external;
         
     | 
| 
       68 
70 
     | 
    
         
             
                function setTargetLocked(address target, bool locked) external;
         
     | 
| 
       69 
71 
     | 
    
         | 
| 
       70 
     | 
    
         
            -
                function  
     | 
| 
       71 
     | 
    
         
            -
                function  
     | 
| 
       72 
     | 
    
         
            -
                function  
     | 
| 
       73 
     | 
    
         
            -
                function getPolicyService() external view returns (IPolicyService);
         
     | 
| 
       74 
     | 
    
         
            -
                function getBundleService() external view returns (IBundleService);
         
     | 
| 
      
 72 
     | 
    
         
            +
                function setStakingLockingPeriod(Seconds stakeLockingPeriod) external;
         
     | 
| 
      
 73 
     | 
    
         
            +
                function setStakingRewardRate(UFixed rewardRate) external;
         
     | 
| 
      
 74 
     | 
    
         
            +
                function refillStakingRewardReserves(Amount dipAmount) external;
         
     | 
| 
       75 
75 
     | 
    
         | 
| 
      
 76 
     | 
    
         
            +
                /// @dev Defunds the staking reward reserves for the specified target.
         
     | 
| 
      
 77 
     | 
    
         
            +
                /// Permissioned: only the target owner may call this function.
         
     | 
| 
      
 78 
     | 
    
         
            +
                function withdrawStakingRewardReserves(Amount dipAmount) external returns (Amount newBalance);
         
     | 
| 
      
 79 
     | 
    
         
            +
             
     | 
| 
      
 80 
     | 
    
         
            +
                // get instance release and supporting contracts
         
     | 
| 
       76 
81 
     | 
    
         
             
                function getMajorVersion() external pure returns (VersionPart majorVersion);
         
     | 
| 
       77 
82 
     | 
    
         
             
                function getInstanceReader() external view returns (InstanceReader);
         
     | 
| 
       78 
83 
     | 
    
         
             
                function getBundleManager() external view returns (BundleManager);
         
     | 
| 
       79 
84 
     | 
    
         
             
                function getInstanceAdmin() external view returns (InstanceAdmin);
         
     | 
| 
       80 
85 
     | 
    
         
             
                function getInstanceStore() external view returns (InstanceStore);
         
     | 
| 
       81 
     | 
    
         
            -
                function getInstanceAccessManager() external view returns (AccessManagerExtendedInitializeable);
         
     | 
| 
       82 
86 
     | 
    
         
             
            }
         
     | 
| 
         @@ -1,23 +1,28 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            // SPDX-License-Identifier: Apache-2.0
         
     | 
| 
       2 
2 
     | 
    
         
             
            pragma solidity ^0.8.20;
         
     | 
| 
       3 
3 
     | 
    
         | 
| 
      
 4 
     | 
    
         
            +
            import {Amount} from "../type/Amount.sol";
         
     | 
| 
      
 5 
     | 
    
         
            +
            import {BundleManager} from "./BundleManager.sol";
         
     | 
| 
      
 6 
     | 
    
         
            +
            import {Instance} from "./Instance.sol";
         
     | 
| 
      
 7 
     | 
    
         
            +
            import {IInstanceLinkedComponent} from "../shared/IInstanceLinkedComponent.sol";
         
     | 
| 
      
 8 
     | 
    
         
            +
            import {IService} from "../shared/IService.sol";
         
     | 
| 
       4 
9 
     | 
    
         
             
            import {NftId} from "../type/NftId.sol";
         
     | 
| 
       5 
10 
     | 
    
         
             
            import {ObjectType} from "../type/ObjectType.sol";
         
     | 
| 
       6 
11 
     | 
    
         
             
            import {RoleId} from "../type/RoleId.sol";
         
     | 
| 
       7 
     | 
    
         
            -
            import { 
     | 
| 
       8 
     | 
    
         
            -
             
     | 
| 
       9 
     | 
    
         
            -
            import { 
     | 
| 
       10 
     | 
    
         
            -
            import {Instance} from "./Instance.sol";
         
     | 
| 
       11 
     | 
    
         
            -
            import {InstanceReader} from "./InstanceReader.sol";
         
     | 
| 
       12 
     | 
    
         
            -
            import {BundleManager} from "./BundleManager.sol";
         
     | 
| 
       13 
     | 
    
         
            -
            import {InstanceStore} from "./InstanceStore.sol";
         
     | 
| 
      
 12 
     | 
    
         
            +
            import {Seconds} from "../type/Seconds.sol";
         
     | 
| 
      
 13 
     | 
    
         
            +
            import {UFixed} from "../type/UFixed.sol";
         
     | 
| 
      
 14 
     | 
    
         
            +
            import {VersionPart} from "../type/Version.sol";
         
     | 
| 
       14 
15 
     | 
    
         | 
| 
       15 
16 
     | 
    
         
             
            interface IInstanceService is IService {
         
     | 
| 
       16 
17 
     | 
    
         | 
| 
      
 18 
     | 
    
         
            +
                // onlyInstance
         
     | 
| 
      
 19 
     | 
    
         
            +
                error ErrorInstanceServiceNotRegistered(address instance);
         
     | 
| 
      
 20 
     | 
    
         
            +
                error ErrorInstanceServiceNotInstance(address instance, ObjectType objectType);
         
     | 
| 
      
 21 
     | 
    
         
            +
                error ErrorInstanceServiceInstanceVersionMismatch(address instance, VersionPart instanceVersion);
         
     | 
| 
      
 22 
     | 
    
         
            +
             
     | 
| 
       17 
23 
     | 
    
         
             
                error ErrorInstanceServiceComponentNotInstanceLinked(address component);
         
     | 
| 
       18 
24 
     | 
    
         | 
| 
       19 
25 
     | 
    
         
             
                error ErrorInstanceServiceMasterInstanceAlreadySet();
         
     | 
| 
       20 
     | 
    
         
            -
                error ErrorInstanceServiceMasterInstanceAccessManagerAlreadySet();
         
     | 
| 
       21 
26 
     | 
    
         
             
                error ErrorInstanceServiceMasterInstanceAdminAlreadySet();
         
     | 
| 
       22 
27 
     | 
    
         
             
                error ErrorInstanceServiceMasterBundleManagerAlreadySet();
         
     | 
| 
       23 
28 
     | 
    
         
             
                error ErrorInstanceServiceInstanceAddressZero();
         
     | 
| 
         @@ -27,6 +32,7 @@ interface IInstanceService is IService { 
     | 
|
| 
       27 
32 
     | 
    
         
             
                error ErrorInstanceServiceInstanceReaderSameAsMasterInstanceReader();
         
     | 
| 
       28 
33 
     | 
    
         
             
                error ErrorInstanceServiceInstanceReaderInstanceMismatch();
         
     | 
| 
       29 
34 
     | 
    
         | 
| 
      
 35 
     | 
    
         
            +
                error ErrorInstanceServiceAccessManagerZero();
         
     | 
| 
       30 
36 
     | 
    
         
             
                error ErrorInstanceServiceInstanceAdminZero();
         
     | 
| 
       31 
37 
     | 
    
         
             
                error ErrorInstanceServiceInstanceReaderZero();
         
     | 
| 
       32 
38 
     | 
    
         
             
                error ErrorInstanceServiceBundleManagerZero();
         
     | 
| 
         @@ -39,28 +45,33 @@ interface IInstanceService is IService { 
     | 
|
| 
       39 
45 
     | 
    
         
             
                error ErrorInstanceServiceInstanceStoreAuthorityMismatch();
         
     | 
| 
       40 
46 
     | 
    
         | 
| 
       41 
47 
     | 
    
         
             
                error ErrorInstanceServiceRequestUnauhorized(address caller);
         
     | 
| 
       42 
     | 
    
         
            -
                error  
     | 
| 
      
 48 
     | 
    
         
            +
                error ErrorInstanceServiceNotInstanceNftId(NftId nftId);
         
     | 
| 
       43 
49 
     | 
    
         
             
                error ErrorInstanceServiceComponentNotRegistered(address componentAddress);
         
     | 
| 
       44 
50 
     | 
    
         
             
                error ErrorInstanceServiceInstanceComponentMismatch(NftId instanceNftId, NftId componentNftId);
         
     | 
| 
       45 
51 
     | 
    
         
             
                error ErrorInstanceServiceInvalidComponentType(address componentAddress, ObjectType expectedType, ObjectType componentType);
         
     | 
| 
       46 
52 
     | 
    
         | 
| 
       47 
     | 
    
         
            -
                event LogInstanceCloned(
         
     | 
| 
       48 
     | 
    
         
            -
                    address clonedOzAccessManager,
         
     | 
| 
       49 
     | 
    
         
            -
                    address clonedInstanceAccessManager,
         
     | 
| 
       50 
     | 
    
         
            -
                    address clonedInstance,
         
     | 
| 
       51 
     | 
    
         
            -
                    address clonedInstanceStore,
         
     | 
| 
       52 
     | 
    
         
            -
                    address clonedBundleManager, 
         
     | 
| 
       53 
     | 
    
         
            -
                    address clonedInstanceReader, 
         
     | 
| 
       54 
     | 
    
         
            -
                    NftId clonedInstanceNftId
         
     | 
| 
       55 
     | 
    
         
            -
                );
         
     | 
| 
      
 53 
     | 
    
         
            +
                event LogInstanceCloned(NftId instanceNftId, address instance);
         
     | 
| 
       56 
54 
     | 
    
         | 
| 
       57 
55 
     | 
    
         
             
                function createInstanceClone()
         
     | 
| 
       58 
56 
     | 
    
         
             
                    external 
         
     | 
| 
       59 
57 
     | 
    
         
             
                    returns (
         
     | 
| 
      
 58 
     | 
    
         
            +
                        // TODO check if Instance can be changed to IInstance
         
     | 
| 
       60 
59 
     | 
    
         
             
                        Instance clonedInstance,
         
     | 
| 
       61 
60 
     | 
    
         
             
                        NftId instanceNftId
         
     | 
| 
       62 
61 
     | 
    
         
             
                    );
         
     | 
| 
       63 
62 
     | 
    
         | 
| 
      
 63 
     | 
    
         
            +
             
     | 
| 
      
 64 
     | 
    
         
            +
                function setStakingLockingPeriod(Seconds stakeLockingPeriod) external;
         
     | 
| 
      
 65 
     | 
    
         
            +
                function setStakingRewardRate(UFixed rewardRate) external;
         
     | 
| 
      
 66 
     | 
    
         
            +
                function refillStakingRewardReserves(address rewardProvider, Amount dipAmount) external;
         
     | 
| 
      
 67 
     | 
    
         
            +
             
     | 
| 
      
 68 
     | 
    
         
            +
                /// @dev Defunds the staking reward reserves for the specified target.
         
     | 
| 
      
 69 
     | 
    
         
            +
                function withdrawStakingRewardReserves(Amount dipAmount) external returns (Amount newBalance);
         
     | 
| 
      
 70 
     | 
    
         
            +
             
     | 
| 
      
 71 
     | 
    
         
            +
                /// @dev Sets up the component authorization for the specified instance.
         
     | 
| 
      
 72 
     | 
    
         
            +
                /// The authorization is based on the authz specification provided by the component via getAuthorization.
         
     | 
| 
      
 73 
     | 
    
         
            +
                function initializeAuthorization(NftId instanceNftId, IInstanceLinkedComponent component) external;
         
     | 
| 
      
 74 
     | 
    
         
            +
             
     | 
| 
       64 
75 
     | 
    
         
             
                function createComponentTarget(
         
     | 
| 
       65 
76 
     | 
    
         
             
                    NftId instanceNftId,
         
     | 
| 
       66 
77 
     | 
    
         
             
                    address targetAddress,
         
     | 
| 
         @@ -3,24 +3,27 @@ pragma solidity ^0.8.20; 
     | 
|
| 
       3 
3 
     | 
    
         | 
| 
       4 
4 
     | 
    
         
             
            import {AccessManagedUpgradeable} from "@openzeppelin/contracts-upgradeable/access/manager/AccessManagedUpgradeable.sol";
         
     | 
| 
       5 
5 
     | 
    
         | 
| 
      
 6 
     | 
    
         
            +
            import {Amount} from "../type/Amount.sol";
         
     | 
| 
       6 
7 
     | 
    
         
             
            import {Key32} from "../type/Key32.sol";
         
     | 
| 
       7 
8 
     | 
    
         
             
            import {NftId} from "../type/NftId.sol";
         
     | 
| 
       8 
9 
     | 
    
         
             
            import {RiskId} from "../type/RiskId.sol";
         
     | 
| 
       9 
10 
     | 
    
         
             
            import {ObjectType, BUNDLE, DISTRIBUTION, INSTANCE, POLICY, POOL, ROLE, PRODUCT, TARGET, COMPONENT, DISTRIBUTOR, DISTRIBUTOR_TYPE} from "../type/ObjectType.sol";
         
     | 
| 
       10 
     | 
    
         
            -
            import {RoleId 
     | 
| 
       11 
     | 
    
         
            -
            import {VersionPart, VersionPartLib} from "../type/Version.sol";
         
     | 
| 
      
 11 
     | 
    
         
            +
            import {RoleId} from "../type/RoleId.sol";
         
     | 
| 
       12 
12 
     | 
    
         
             
            import {ClaimId} from "../type/ClaimId.sol";
         
     | 
| 
       13 
13 
     | 
    
         
             
            import {ReferralId} from "../type/Referral.sol";
         
     | 
| 
       14 
14 
     | 
    
         
             
            import {PayoutId} from "../type/PayoutId.sol";
         
     | 
| 
       15 
15 
     | 
    
         
             
            import {DistributorType} from "../type/DistributorType.sol";
         
     | 
| 
      
 16 
     | 
    
         
            +
            import {Seconds} from "../type/Seconds.sol";
         
     | 
| 
      
 17 
     | 
    
         
            +
            import {UFixed} from "../type/UFixed.sol";
         
     | 
| 
      
 18 
     | 
    
         
            +
            import {VersionPart, VersionPartLib} from "../type/Version.sol";
         
     | 
| 
       16 
19 
     | 
    
         | 
| 
       17 
20 
     | 
    
         
             
            import {Registerable} from "../shared/Registerable.sol";
         
     | 
| 
       18 
21 
     | 
    
         
             
            import {TokenHandler} from "../shared/TokenHandler.sol";
         
     | 
| 
       19 
     | 
    
         
            -
            import {AccessManagerExtendedInitializeable} from "../shared/AccessManagerExtendedInitializeable.sol";
         
     | 
| 
       20 
22 
     | 
    
         | 
| 
       21 
23 
     | 
    
         
             
            import {IRegistry} from "../registry/IRegistry.sol";
         
     | 
| 
       22 
24 
     | 
    
         | 
| 
       23 
25 
     | 
    
         
             
            import {IInstance} from "./IInstance.sol";
         
     | 
| 
      
 26 
     | 
    
         
            +
            import {IInstanceService} from "./IInstanceService.sol";
         
     | 
| 
       24 
27 
     | 
    
         
             
            import {InstanceReader} from "./InstanceReader.sol";
         
     | 
| 
       25 
28 
     | 
    
         
             
            import {InstanceAdmin} from "./InstanceAdmin.sol";
         
     | 
| 
       26 
29 
     | 
    
         
             
            import {BundleManager} from "./BundleManager.sol";
         
     | 
| 
         @@ -49,6 +52,7 @@ contract Instance is 
     | 
|
| 
       49 
52 
     | 
    
         | 
| 
       50 
53 
     | 
    
         
             
                bool private _initialized;
         
     | 
| 
       51 
54 
     | 
    
         | 
| 
      
 55 
     | 
    
         
            +
                IInstanceService internal _instanceService;
         
     | 
| 
       52 
56 
     | 
    
         
             
                InstanceAdmin internal _instanceAdmin;
         
     | 
| 
       53 
57 
     | 
    
         
             
                InstanceReader internal _instanceReader;
         
     | 
| 
       54 
58 
     | 
    
         
             
                BundleManager internal _bundleManager;
         
     | 
| 
         @@ -61,53 +65,120 @@ contract Instance is 
     | 
|
| 
       61 
65 
     | 
    
         
             
                    _;
         
     | 
| 
       62 
66 
     | 
    
         
             
                }
         
     | 
| 
       63 
67 
     | 
    
         | 
| 
       64 
     | 
    
         
            -
                function initialize( 
     | 
| 
      
 68 
     | 
    
         
            +
                function initialize(
         
     | 
| 
      
 69 
     | 
    
         
            +
                    InstanceAdmin instanceAdmin, 
         
     | 
| 
      
 70 
     | 
    
         
            +
                    InstanceStore instanceStore,
         
     | 
| 
      
 71 
     | 
    
         
            +
                    BundleManager bundleManager,
         
     | 
| 
      
 72 
     | 
    
         
            +
                    InstanceReader instanceReader,
         
     | 
| 
      
 73 
     | 
    
         
            +
                    IRegistry registry, 
         
     | 
| 
      
 74 
     | 
    
         
            +
                    address initialOwner
         
     | 
| 
      
 75 
     | 
    
         
            +
                ) 
         
     | 
| 
       65 
76 
     | 
    
         
             
                    external 
         
     | 
| 
       66 
77 
     | 
    
         
             
                    initializer()
         
     | 
| 
       67 
78 
     | 
    
         
             
                {
         
     | 
| 
       68 
     | 
    
         
            -
                     
     | 
| 
      
 79 
     | 
    
         
            +
                    _instanceAdmin = instanceAdmin;
         
     | 
| 
      
 80 
     | 
    
         
            +
                    if(_instanceAdmin.authority() == address(0)) {
         
     | 
| 
      
 81 
     | 
    
         
            +
                        // TODO rename error
         
     | 
| 
       69 
82 
     | 
    
         
             
                        revert ErrorInstanceInstanceAdminZero();
         
     | 
| 
       70 
83 
     | 
    
         
             
                    }
         
     | 
| 
       71 
84 
     | 
    
         | 
| 
       72 
     | 
    
         
            -
                     
     | 
| 
       73 
     | 
    
         
            -
                    
         
     | 
| 
       74 
     | 
    
         
            -
             
     | 
| 
       75 
     | 
    
         
            -
                     
     | 
| 
      
 85 
     | 
    
         
            +
                    // set authority to instance admin authority
         
     | 
| 
      
 86 
     | 
    
         
            +
                    __AccessManaged_init(_instanceAdmin.authority());
         
     | 
| 
      
 87 
     | 
    
         
            +
             
     | 
| 
      
 88 
     | 
    
         
            +
                    // setup instance object info
         
     | 
| 
      
 89 
     | 
    
         
            +
                    initializeRegisterable(
         
     | 
| 
      
 90 
     | 
    
         
            +
                        address(registry), 
         
     | 
| 
      
 91 
     | 
    
         
            +
                        registry.getNftId(), 
         
     | 
| 
      
 92 
     | 
    
         
            +
                        INSTANCE(), 
         
     | 
| 
      
 93 
     | 
    
         
            +
                        true, 
         
     | 
| 
      
 94 
     | 
    
         
            +
                        initialOwner, 
         
     | 
| 
      
 95 
     | 
    
         
            +
                        "");
         
     | 
| 
      
 96 
     | 
    
         
            +
             
     | 
| 
      
 97 
     | 
    
         
            +
                    // store instance supporting contracts
         
     | 
| 
      
 98 
     | 
    
         
            +
                    _instanceStore = instanceStore;
         
     | 
| 
      
 99 
     | 
    
         
            +
                    _bundleManager = bundleManager;
         
     | 
| 
      
 100 
     | 
    
         
            +
                    _instanceReader = instanceReader;
         
     | 
| 
      
 101 
     | 
    
         
            +
             
     | 
| 
      
 102 
     | 
    
         
            +
                    // initialize instance supporting contracts
         
     | 
| 
      
 103 
     | 
    
         
            +
                    _instanceStore.initialize();
         
     | 
| 
      
 104 
     | 
    
         
            +
                    _bundleManager.initialize();
         
     | 
| 
      
 105 
     | 
    
         
            +
                    _instanceReader.initialize();
         
     | 
| 
      
 106 
     | 
    
         
            +
             
     | 
| 
      
 107 
     | 
    
         
            +
                    _instanceService = IInstanceService(
         
     | 
| 
      
 108 
     | 
    
         
            +
                        getRegistry().getServiceAddress(
         
     | 
| 
      
 109 
     | 
    
         
            +
                            INSTANCE(), 
         
     | 
| 
      
 110 
     | 
    
         
            +
                            getMajorVersion()));
         
     | 
| 
       76 
111 
     | 
    
         | 
| 
       77 
112 
     | 
    
         
             
                    registerInterface(type(IInstance).interfaceId);    
         
     | 
| 
       78 
113 
     | 
    
         
             
                }
         
     | 
| 
       79 
114 
     | 
    
         | 
| 
      
 115 
     | 
    
         
            +
                //--- Staking ----------------------------------------------------------//
         
     | 
| 
      
 116 
     | 
    
         
            +
             
     | 
| 
      
 117 
     | 
    
         
            +
                function setStakingLockingPeriod(Seconds stakeLockingPeriod)
         
     | 
| 
      
 118 
     | 
    
         
            +
                    external
         
     | 
| 
      
 119 
     | 
    
         
            +
                    // TODO decide if onlyOwner or restricted to instance owner role is better
         
     | 
| 
      
 120 
     | 
    
         
            +
                    onlyOwner()
         
     | 
| 
      
 121 
     | 
    
         
            +
                {
         
     | 
| 
      
 122 
     | 
    
         
            +
                    _instanceService.setStakingLockingPeriod(stakeLockingPeriod);
         
     | 
| 
      
 123 
     | 
    
         
            +
                }
         
     | 
| 
      
 124 
     | 
    
         
            +
             
     | 
| 
      
 125 
     | 
    
         
            +
                function setStakingRewardRate(UFixed rewardRate)
         
     | 
| 
      
 126 
     | 
    
         
            +
                    external
         
     | 
| 
      
 127 
     | 
    
         
            +
                    onlyOwner()
         
     | 
| 
      
 128 
     | 
    
         
            +
                {
         
     | 
| 
      
 129 
     | 
    
         
            +
                    _instanceService.setStakingRewardRate(rewardRate);
         
     | 
| 
      
 130 
     | 
    
         
            +
                }
         
     | 
| 
      
 131 
     | 
    
         
            +
             
     | 
| 
      
 132 
     | 
    
         
            +
                function refillStakingRewardReserves(Amount dipAmount)
         
     | 
| 
      
 133 
     | 
    
         
            +
                    external
         
     | 
| 
      
 134 
     | 
    
         
            +
                    onlyOwner()
         
     | 
| 
      
 135 
     | 
    
         
            +
                {
         
     | 
| 
      
 136 
     | 
    
         
            +
                    address instanceOwner = msg.sender;
         
     | 
| 
      
 137 
     | 
    
         
            +
                    _instanceService.refillStakingRewardReserves(instanceOwner, dipAmount);
         
     | 
| 
      
 138 
     | 
    
         
            +
                }
         
     | 
| 
      
 139 
     | 
    
         
            +
             
     | 
| 
      
 140 
     | 
    
         
            +
                function withdrawStakingRewardReserves(Amount dipAmount)
         
     | 
| 
      
 141 
     | 
    
         
            +
                    external
         
     | 
| 
      
 142 
     | 
    
         
            +
                    onlyOwner()
         
     | 
| 
      
 143 
     | 
    
         
            +
                    returns (Amount newBalance)
         
     | 
| 
      
 144 
     | 
    
         
            +
                {
         
     | 
| 
      
 145 
     | 
    
         
            +
                    return _instanceService.withdrawStakingRewardReserves(dipAmount);
         
     | 
| 
      
 146 
     | 
    
         
            +
                }
         
     | 
| 
      
 147 
     | 
    
         
            +
             
     | 
| 
       80 
148 
     | 
    
         
             
                //--- Roles ------------------------------------------------------------//
         
     | 
| 
       81 
149 
     | 
    
         | 
| 
       82 
150 
     | 
    
         
             
                function createRole(string memory roleName, string memory adminName)
         
     | 
| 
       83 
151 
     | 
    
         
             
                    external
         
     | 
| 
       84 
     | 
    
         
            -
                     
     | 
| 
      
 152 
     | 
    
         
            +
                    onlyOwner()
         
     | 
| 
       85 
153 
     | 
    
         
             
                    returns (RoleId roleId, RoleId admin)
         
     | 
| 
       86 
154 
     | 
    
         
             
                {
         
     | 
| 
       87 
     | 
    
         
            -
                     
     | 
| 
      
 155 
     | 
    
         
            +
                    // TODO refactor
         
     | 
| 
      
 156 
     | 
    
         
            +
                    // (roleId, admin) = _instanceAdmin.createRole(roleName, adminName);
         
     | 
| 
       88 
157 
     | 
    
         
             
                }
         
     | 
| 
       89 
158 
     | 
    
         | 
| 
       90 
159 
     | 
    
         
             
                function grantRole(RoleId roleId, address account) 
         
     | 
| 
       91 
160 
     | 
    
         
             
                    external 
         
     | 
| 
       92 
     | 
    
         
            -
                     
     | 
| 
      
 161 
     | 
    
         
            +
                    onlyOwner()
         
     | 
| 
       93 
162 
     | 
    
         
             
                {
         
     | 
| 
       94 
     | 
    
         
            -
                     
     | 
| 
      
 163 
     | 
    
         
            +
                    _instanceAdmin.grantRole(roleId, account);
         
     | 
| 
       95 
164 
     | 
    
         
             
                }
         
     | 
| 
       96 
165 
     | 
    
         | 
| 
       97 
166 
     | 
    
         
             
                function revokeRole(RoleId roleId, address account) 
         
     | 
| 
       98 
167 
     | 
    
         
             
                    external 
         
     | 
| 
       99 
     | 
    
         
            -
                     
     | 
| 
      
 168 
     | 
    
         
            +
                    onlyOwner()
         
     | 
| 
       100 
169 
     | 
    
         
             
                {
         
     | 
| 
       101 
     | 
    
         
            -
                     
     | 
| 
      
 170 
     | 
    
         
            +
                    // TODO refactor
         
     | 
| 
      
 171 
     | 
    
         
            +
                    // AccessManagerExtendedInitializeable(authority()).revokeRole(roleId.toInt(), account);
         
     | 
| 
       102 
172 
     | 
    
         
             
                }
         
     | 
| 
       103 
173 
     | 
    
         | 
| 
       104 
174 
     | 
    
         
             
                //--- Targets ------------------------------------------------------------//
         
     | 
| 
       105 
175 
     | 
    
         | 
| 
       106 
176 
     | 
    
         
             
                function createTarget(address target, string memory name) 
         
     | 
| 
       107 
177 
     | 
    
         
             
                    external 
         
     | 
| 
       108 
     | 
    
         
            -
                     
     | 
| 
      
 178 
     | 
    
         
            +
                    onlyOwner()
         
     | 
| 
       109 
179 
     | 
    
         
             
                {
         
     | 
| 
       110 
     | 
    
         
            -
                     
     | 
| 
      
 180 
     | 
    
         
            +
                    // TODO refactor
         
     | 
| 
      
 181 
     | 
    
         
            +
                    // _instanceAdmin.createTarget(target, name);
         
     | 
| 
       111 
182 
     | 
    
         
             
                }
         
     | 
| 
       112 
183 
     | 
    
         | 
| 
       113 
184 
     | 
    
         
             
                function setTargetFunctionRole(
         
     | 
| 
         @@ -116,59 +187,40 @@ contract Instance is 
     | 
|
| 
       116 
187 
     | 
    
         
             
                    RoleId roleId
         
     | 
| 
       117 
188 
     | 
    
         
             
                ) 
         
     | 
| 
       118 
189 
     | 
    
         
             
                    external 
         
     | 
| 
       119 
     | 
    
         
            -
                     
     | 
| 
      
 190 
     | 
    
         
            +
                    onlyOwner()
         
     | 
| 
       120 
191 
     | 
    
         
             
                {
         
     | 
| 
       121 
     | 
    
         
            -
                     
     | 
| 
      
 192 
     | 
    
         
            +
                    // TODO refactor
         
     | 
| 
      
 193 
     | 
    
         
            +
                    // _instanceAdmin.setTargetFunctionRoleByInstance(targetName, selectors, roleId);
         
     | 
| 
       122 
194 
     | 
    
         
             
                }
         
     | 
| 
       123 
195 
     | 
    
         | 
| 
       124 
196 
     | 
    
         
             
                function setTargetLocked(address target, bool locked)
         
     | 
| 
       125 
197 
     | 
    
         
             
                    external 
         
     | 
| 
       126 
     | 
    
         
            -
                     
     | 
| 
      
 198 
     | 
    
         
            +
                    onlyOwner()
         
     | 
| 
       127 
199 
     | 
    
         
             
                {
         
     | 
| 
       128 
     | 
    
         
            -
                     
     | 
| 
      
 200 
     | 
    
         
            +
                    // TODO refactor
         
     | 
| 
      
 201 
     | 
    
         
            +
                    // _instanceAdmin.setTargetLockedByInstance(target, locked);
         
     | 
| 
       129 
202 
     | 
    
         
             
                }
         
     | 
| 
       130 
203 
     | 
    
         | 
| 
       131 
204 
     | 
    
         
             
                //--- ITransferInterceptor ----------------------------------------------//
         
     | 
| 
       132 
205 
     | 
    
         | 
| 
       133 
206 
     | 
    
         
             
                // TODO interception of child components nfts
         
     | 
| 
       134 
207 
     | 
    
         
             
                function nftMint(address to, uint256 tokenId) external onlyChainNft {
         
     | 
| 
       135 
     | 
    
         
            -
                     
     | 
| 
      
 208 
     | 
    
         
            +
                    // TODO refactor
         
     | 
| 
      
 209 
     | 
    
         
            +
                    // _instanceAdmin.transferInstanceOwnerRole(address(0), to);
         
     | 
| 
       136 
210 
     | 
    
         
             
                }
         
     | 
| 
       137 
211 
     | 
    
         | 
| 
       138 
212 
     | 
    
         
             
                function nftTransferFrom(address from, address to, uint256 tokenId) external onlyChainNft {
         
     | 
| 
       139 
     | 
    
         
            -
                     
     | 
| 
      
 213 
     | 
    
         
            +
                    // TODO refactor
         
     | 
| 
      
 214 
     | 
    
         
            +
                    // _instanceAdmin.transferInstanceOwnerRole(from, to);
         
     | 
| 
       140 
215 
     | 
    
         
             
                }
         
     | 
| 
       141 
216 
     | 
    
         | 
| 
       142 
     | 
    
         
            -
                //function nftBurn(address from, uint256 tokenId) external onlyChainNft {
         
     | 
| 
       143 
     | 
    
         
            -
                    //_instanceAdmin.transferInstanceOwnerRole(from, address(0));
         
     | 
| 
       144 
     | 
    
         
            -
                //}
         
     | 
| 
       145 
     | 
    
         
            -
             
     | 
| 
       146 
217 
     | 
    
         
             
                //--- initial setup functions -------------------------------------------//
         
     | 
| 
       147 
218 
     | 
    
         | 
| 
       148 
     | 
    
         
            -
                function setInstanceAdmin(InstanceAdmin accessManager) external restricted {
         
     | 
| 
       149 
     | 
    
         
            -
                    if(address(_instanceAdmin) != address(0)) {
         
     | 
| 
       150 
     | 
    
         
            -
                        revert ErrorInstanceInstanceAdminAlreadySet(address(_instanceAdmin));
         
     | 
| 
       151 
     | 
    
         
            -
                    }
         
     | 
| 
       152 
     | 
    
         
            -
                    if(accessManager.authority() != authority()) {
         
     | 
| 
       153 
     | 
    
         
            -
                        revert ErrorInstanceInstanceAdminAuthorityMismatch(authority());
         
     | 
| 
       154 
     | 
    
         
            -
                    }
         
     | 
| 
       155 
     | 
    
         
            -
                    _instanceAdmin = accessManager;      
         
     | 
| 
       156 
     | 
    
         
            -
                }
         
     | 
| 
       157 
     | 
    
         
            -
                
         
     | 
| 
       158 
     | 
    
         
            -
                function setBundleManager(BundleManager bundleManager) external restricted() {
         
     | 
| 
       159 
     | 
    
         
            -
                    if(address(_bundleManager) != address(0)) {
         
     | 
| 
       160 
     | 
    
         
            -
                        revert ErrorInstanceBundleManagerAlreadySet(address(_bundleManager));
         
     | 
| 
       161 
     | 
    
         
            -
                    }
         
     | 
| 
       162 
     | 
    
         
            -
                    if(bundleManager.getInstance() != Instance(this)) {
         
     | 
| 
       163 
     | 
    
         
            -
                        revert ErrorInstanceBundleManagerInstanceMismatch(address(this));
         
     | 
| 
       164 
     | 
    
         
            -
                    }
         
     | 
| 
       165 
     | 
    
         
            -
                    if(bundleManager.authority() != authority()) {
         
     | 
| 
       166 
     | 
    
         
            -
                        revert ErrorInstanceBundleManagerAuthorityMismatch(authority());
         
     | 
| 
       167 
     | 
    
         
            -
                    }
         
     | 
| 
       168 
     | 
    
         
            -
                    _bundleManager = bundleManager;
         
     | 
| 
       169 
     | 
    
         
            -
                }
         
     | 
| 
       170 
219 
     | 
    
         | 
| 
       171 
     | 
    
         
            -
                function setInstanceReader(InstanceReader instanceReader) 
     | 
| 
      
 220 
     | 
    
         
            +
                function setInstanceReader(InstanceReader instanceReader)
         
     | 
| 
      
 221 
     | 
    
         
            +
                    external
         
     | 
| 
      
 222 
     | 
    
         
            +
                    restricted()
         
     | 
| 
      
 223 
     | 
    
         
            +
                {
         
     | 
| 
       172 
224 
     | 
    
         
             
                    if(instanceReader.getInstance() != Instance(this)) {
         
     | 
| 
       173 
225 
     | 
    
         
             
                        revert ErrorInstanceInstanceReaderInstanceMismatch(address(this));
         
     | 
| 
       174 
226 
     | 
    
         
             
                    }
         
     | 
| 
         @@ -190,47 +242,13 @@ contract Instance is 
     | 
|
| 
       190 
242 
     | 
    
         
             
                    return _instanceAdmin;
         
     | 
| 
       191 
243 
     | 
    
         
             
                }
         
     | 
| 
       192 
244 
     | 
    
         | 
| 
       193 
     | 
    
         
            -
                function getInstanceAccessManager() external view returns (AccessManagerExtendedInitializeable) {
         
     | 
| 
       194 
     | 
    
         
            -
                    return AccessManagerExtendedInitializeable(authority());
         
     | 
| 
       195 
     | 
    
         
            -
                }
         
     | 
| 
       196 
     | 
    
         
            -
             
     | 
| 
       197 
     | 
    
         
            -
                function setInstanceStore(InstanceStore instanceStore) external restricted {
         
     | 
| 
       198 
     | 
    
         
            -
                    if(address(_instanceStore) != address(0)) {
         
     | 
| 
       199 
     | 
    
         
            -
                        revert ErrorInstanceInstanceStoreAlreadySet(address(_instanceStore));
         
     | 
| 
       200 
     | 
    
         
            -
                    }
         
     | 
| 
       201 
     | 
    
         
            -
                    if(instanceStore.authority() != authority()) {
         
     | 
| 
       202 
     | 
    
         
            -
                        revert ErrorInstanceInstanceStoreAuthorityMismatch(authority());
         
     | 
| 
       203 
     | 
    
         
            -
                    }
         
     | 
| 
       204 
     | 
    
         
            -
                    _instanceStore = instanceStore;
         
     | 
| 
       205 
     | 
    
         
            -
                }
         
     | 
| 
       206 
     | 
    
         
            -
             
     | 
| 
       207 
245 
     | 
    
         
             
                function getInstanceStore() external view returns (InstanceStore) {
         
     | 
| 
       208 
246 
     | 
    
         
             
                    return _instanceStore;
         
     | 
| 
       209 
247 
     | 
    
         
             
                }
         
     | 
| 
       210 
248 
     | 
    
         | 
| 
       211 
     | 
    
         
            -
                function getMajorVersion()  
     | 
| 
      
 249 
     | 
    
         
            +
                function getMajorVersion() public pure returns (VersionPart majorVersion) {
         
     | 
| 
       212 
250 
     | 
    
         
             
                    return VersionPartLib.toVersionPart(GIF_MAJOR_VERSION);
         
     | 
| 
       213 
251 
     | 
    
         
             
                }
         
     | 
| 
       214 
252 
     | 
    
         | 
| 
       215 
     | 
    
         
            -
                function getDistributionService() external view returns (IDistributionService) {
         
     | 
| 
       216 
     | 
    
         
            -
                    return IDistributionService(getRegistry().getServiceAddress(DISTRIBUTION(), VersionPart.wrap(3)));
         
     | 
| 
       217 
     | 
    
         
            -
                }
         
     | 
| 
       218 
     | 
    
         
            -
             
     | 
| 
       219 
     | 
    
         
            -
                function getProductService() external view returns (IProductService) {
         
     | 
| 
       220 
     | 
    
         
            -
                    return IProductService(getRegistry().getServiceAddress(PRODUCT(), VersionPart.wrap(3)));
         
     | 
| 
       221 
     | 
    
         
            -
                }
         
     | 
| 
       222 
     | 
    
         
            -
             
     | 
| 
       223 
     | 
    
         
            -
                function getPoolService() external view returns (IPoolService) {
         
     | 
| 
       224 
     | 
    
         
            -
                    return IPoolService(getRegistry().getServiceAddress(POOL(), VersionPart.wrap(3)));
         
     | 
| 
       225 
     | 
    
         
            -
                }
         
     | 
| 
       226 
     | 
    
         
            -
             
     | 
| 
       227 
     | 
    
         
            -
                function getPolicyService() external view returns (IPolicyService) {
         
     | 
| 
       228 
     | 
    
         
            -
                    return IPolicyService(getRegistry().getServiceAddress(POLICY(), VersionPart.wrap(3)));
         
     | 
| 
       229 
     | 
    
         
            -
                }
         
     | 
| 
       230 
     | 
    
         
            -
             
     | 
| 
       231 
     | 
    
         
            -
                function getBundleService() external view returns (IBundleService) {
         
     | 
| 
       232 
     | 
    
         
            -
                    return IBundleService(getRegistry().getServiceAddress(BUNDLE(), VersionPart.wrap(3)));
         
     | 
| 
       233 
     | 
    
         
            -
                }
         
     | 
| 
       234 
     | 
    
         
            -
             
     | 
| 
       235 
253 
     | 
    
         
             
                //--- internal view/pure functions --------------------------------------//
         
     | 
| 
       236 
254 
     | 
    
         
             
            }
         
     |