@etherisc/gif-next 3.0.0-15742bc-193 → 3.0.0-17f9d19-793
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 +9 -1
- package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.dbg.json +1 -1
- package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.json +42 -56
- package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +32 -36
- package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.dbg.json +1 -1
- package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.json +14 -20
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +44 -56
- package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.json +145 -100
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +42 -29
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +2 -2
- package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +1 -1
- package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +1 -1
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +2 -2
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +2 -96
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +2 -2
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +0 -94
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +157 -72
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +63 -63
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +0 -94
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +85 -0
- package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.json +2 -2
- package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +12 -87
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +2 -2
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +47 -127
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +2 -2
- package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.json +2 -2
- package/artifacts/contracts/examples/flight/FlightLib.sol/FlightLib.dbg.json +1 -1
- package/artifacts/contracts/examples/flight/FlightLib.sol/FlightLib.json +248 -84
- package/artifacts/contracts/examples/flight/FlightMessageVerifier.sol/FlightMessageVerifier.dbg.json +1 -1
- package/artifacts/contracts/examples/flight/FlightMessageVerifier.sol/FlightMessageVerifier.json +2 -2
- package/artifacts/contracts/examples/flight/FlightNft.sol/FlightNft.dbg.json +4 -0
- package/artifacts/contracts/examples/flight/FlightNft.sol/FlightNft.json +801 -0
- package/artifacts/contracts/examples/flight/FlightOracle.sol/FlightOracle.dbg.json +1 -1
- package/artifacts/contracts/examples/flight/FlightOracle.sol/FlightOracle.json +185 -105
- package/artifacts/contracts/examples/flight/FlightOracleAuthorization.sol/FlightOracleAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/flight/FlightOracleAuthorization.sol/FlightOracleAuthorization.json +82 -35
- package/artifacts/contracts/examples/flight/FlightPool.sol/FlightPool.dbg.json +1 -1
- package/artifacts/contracts/examples/flight/FlightPool.sol/FlightPool.json +14 -89
- package/artifacts/contracts/examples/flight/FlightPoolAuthorization.sol/FlightPoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/flight/FlightPoolAuthorization.sol/FlightPoolAuthorization.json +2 -2
- package/artifacts/contracts/examples/flight/FlightProduct.sol/FlightProduct.dbg.json +1 -1
- package/artifacts/contracts/examples/flight/FlightProduct.sol/FlightProduct.json +444 -744
- package/artifacts/contracts/examples/flight/FlightProductAuthorization.sol/FlightProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/flight/FlightProductAuthorization.sol/FlightProductAuthorization.json +83 -36
- package/artifacts/contracts/examples/flight/FlightProductManager.sol/FlightProductManager.dbg.json +4 -0
- package/artifacts/contracts/examples/flight/FlightProductManager.sol/FlightProductManager.json +711 -0
- package/artifacts/contracts/examples/flight/FlightUSD.sol/FlightUSD.dbg.json +1 -1
- package/artifacts/contracts/examples/flight/FlightUSD.sol/FlightUSD.json +2 -2
- package/artifacts/contracts/examples/flight/originalV1.sol/FlightDelayChainlink.dbg.json +1 -1
- package/artifacts/contracts/examples/flight/originalV1.sol/FlightDelayChainlink.json +2 -2
- package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +15 -109
- package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +2 -2
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +12 -87
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +16 -91
- package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +2 -2
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +18 -93
- package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +2 -2
- package/artifacts/contracts/instance/BaseStore.sol/BaseStore.dbg.json +1 -1
- package/artifacts/contracts/instance/BaseStore.sol/BaseStore.json +50 -0
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +2 -2
- package/artifacts/contracts/instance/IBaseStore.sol/IBaseStore.dbg.json +1 -1
- package/artifacts/contracts/instance/IBaseStore.sol/IBaseStore.json +50 -0
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +61 -0
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +2 -2
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +119 -131
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +2 -2
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +93 -34
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +102 -25
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +29 -29
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +82 -32
- package/artifacts/contracts/instance/ProductStore.sol/ProductStore.dbg.json +1 -1
- package/artifacts/contracts/instance/ProductStore.sol/ProductStore.json +68 -18
- package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +1 -1
- package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +2 -2
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
- package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
- package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +2 -2
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +2 -2
- package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.json +2 -2
- package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
- package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
- package/artifacts/contracts/mock/Dip.sol/Dip.json +2 -2
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +2 -77
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +2 -2
- package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
- package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +0 -75
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +0 -75
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +2 -2
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +38 -38
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +0 -75
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +2 -2
- package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +32 -20
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +50 -50
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +12 -0
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +0 -75
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +12 -0
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +0 -75
- package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +4 -9
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +36 -24
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +51 -51
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +2 -2
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +32 -32
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +0 -75
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +2 -2
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +2 -2
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +55 -55
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +12 -0
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +0 -75
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +56 -44
- package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.json +20 -12
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +48 -48
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +2 -2
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +39 -39
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/product/Product.sol/Product.json +0 -75
- package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +1 -1
- package/artifacts/contracts/product/RiskService.sol/RiskService.json +2 -2
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +30 -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 +6 -0
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +1 -1
- package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
- package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
- package/artifacts/contracts/registry/Registry.sol/Registry.json +47 -37
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +113 -125
- package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.json +2 -27
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +2 -2
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +25 -25
- package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +123 -135
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +2 -2
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +106 -96
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +19 -19
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +2 -2
- package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
- package/artifacts/contracts/shared/Component.sol/Component.json +0 -75
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +328 -56
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +49 -49
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +1 -1
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +2 -2
- package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +1 -1
- package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +1 -1
- package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.dbg.json +1 -1
- package/artifacts/contracts/shared/IAuthorizedComponent.sol/IAuthorizedComponent.dbg.json +4 -0
- package/artifacts/contracts/shared/IAuthorizedComponent.sol/IAuthorizedComponent.json +558 -0
- package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponent.sol/IComponent.json +0 -75
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +272 -0
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +0 -75
- package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/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/InitializableERC165.sol/InitializableERC165.dbg.json +1 -1
- package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +2 -2
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +0 -75
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +1 -1
- package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +2 -2
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +2 -2
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +2 -2
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -2
- package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +23 -50
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +9 -36
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +28 -28
- package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
- package/artifacts/contracts/staking/IStaking.sol/IStaking.json +25 -75
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +12 -0
- package/artifacts/contracts/staking/ITargetLimitHandler.sol/ITargetLimitHandler.dbg.json +1 -1
- package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
- package/artifacts/contracts/staking/Staking.sol/Staking.json +73 -123
- package/artifacts/contracts/staking/StakingLib.sol/StakingLib.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingLib.sol/StakingLib.json +2 -7
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +41 -41
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +2 -2
- package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingService.sol/StakingService.json +26 -14
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +28 -28
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2 -2
- package/artifacts/contracts/staking/TargetHandler.sol/TargetHandler.dbg.json +1 -1
- package/artifacts/contracts/staking/TargetHandler.sol/TargetHandler.json +2 -7
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +2 -7
- 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 +2 -7
- 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/ChainId.sol/ChainIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/ChainId.sol/ChainIdLib.json +2 -2
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +2 -2
- package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
- package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
- package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
- package/artifacts/contracts/type/Fee.sol/FeeLib.json +2 -7
- package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
- package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
- package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +1 -1
- package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +2 -2
- package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/NftId.sol/NftIdLib.json +2 -2
- package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
- package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
- package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
- package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +2 -2
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +2 -2
- package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
- package/artifacts/contracts/type/Referral.sol/ReferralLib.json +2 -2
- package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +2 -2
- package/artifacts/contracts/type/RequestIdSet.sol/LibRequestIdSet.dbg.json +1 -1
- package/artifacts/contracts/type/RequestIdSet.sol/LibRequestIdSet.json +2 -2
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +2 -2
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +2 -2
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +2 -2
- package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
- package/artifacts/contracts/type/Selector.sol/SelectorLib.json +2 -2
- package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
- package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +2 -2
- package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/StateId.sol/StateIdLib.json +2 -2
- package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
- package/artifacts/contracts/type/String.sol/StrLib.json +2 -2
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +2 -2
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +2 -7
- 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/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +2 -2
- package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +3 -3
- package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
- package/contracts/accounting/AccountingService.sol +17 -29
- package/contracts/accounting/IAccountingService.sol +7 -8
- package/contracts/authorization/AccessAdmin.sol +6 -25
- package/contracts/authorization/AccessAdminLib.sol +20 -3
- package/contracts/authorization/AccessManagerCloneable.sol +4 -0
- package/contracts/distribution/DistributionService.sol +5 -3
- package/contracts/distribution/IDistributionComponent.sol +0 -2
- package/contracts/distribution/IDistributionService.sol +4 -3
- package/contracts/examples/flight/FlightLib.sol +90 -75
- package/contracts/examples/flight/FlightNft.sol +234 -0
- package/contracts/examples/flight/FlightOracle.sol +68 -9
- package/contracts/examples/flight/FlightOracleAuthorization.sol +28 -5
- package/contracts/examples/flight/FlightPool.sol +1 -1
- package/contracts/examples/flight/FlightProduct.sol +283 -247
- package/contracts/examples/flight/FlightProductAuthorization.sol +35 -10
- package/contracts/examples/flight/FlightProductManager.sol +49 -0
- package/contracts/instance/BaseStore.sol +4 -0
- package/contracts/instance/IBaseStore.sol +8 -0
- package/contracts/instance/IInstanceService.sol +2 -0
- package/contracts/instance/InstanceAdmin.sol +0 -1
- package/contracts/instance/InstanceReader.sol +19 -5
- package/contracts/instance/InstanceService.sol +4 -0
- package/contracts/oracle/BasicOracle.sol +1 -0
- package/contracts/oracle/Oracle.sol +2 -2
- package/contracts/pool/BundleService.sol +1 -1
- package/contracts/pool/IBundleService.sol +1 -1
- package/contracts/pool/IPoolService.sol +1 -1
- package/contracts/pool/PoolService.sol +1 -1
- package/contracts/product/IPolicyService.sol +1 -1
- package/contracts/product/PolicyService.sol +1 -1
- package/contracts/product/PolicyServiceLib.sol +5 -3
- package/contracts/registry/ChainNft.sol +1 -1
- package/contracts/registry/IRegistry.sol +1 -1
- package/contracts/registry/Registry.sol +5 -3
- package/contracts/registry/RegistryAdmin.sol +7 -1
- package/contracts/registry/RegistryAuthorization.sol +0 -2
- package/contracts/registry/ReleaseAdmin.sol +8 -1
- package/contracts/shared/ComponentService.sol +36 -2
- package/contracts/shared/IAuthorizedComponent.sol +15 -0
- package/contracts/shared/IComponent.sol +0 -4
- package/contracts/shared/IComponentService.sol +24 -0
- package/contracts/shared/IInstanceLinkedComponent.sol +2 -5
- package/contracts/shared/InstanceLinkedComponent.sol +2 -1
- package/contracts/staking/IStaking.sol +2 -0
- package/contracts/staking/IStakingService.sol +1 -1
- package/contracts/staking/Staking.sol +1 -0
- package/contracts/staking/StakingService.sol +1 -1
- package/package.json +3 -3
| @@ -3,19 +3,42 @@ pragma solidity ^0.8.20; | |
| 3 3 |  | 
| 4 4 | 
             
            import {IAccess} from "../../../contracts/authorization/IAccess.sol";
         | 
| 5 5 |  | 
| 6 | 
            +
            import {AccessAdminLib} from "../../authorization/AccessAdminLib.sol";
         | 
| 6 7 | 
             
            import {BasicProductAuthorization} from "../../product/BasicProductAuthorization.sol";
         | 
| 7 8 | 
             
            import {FlightProduct} from "./FlightProduct.sol";
         | 
| 8 9 | 
             
            import {ORACLE} from "../../../contracts/type/ObjectType.sol";
         | 
| 9 | 
            -
            import {PUBLIC_ROLE} from "../../../contracts/type/RoleId.sol";
         | 
| 10 | 
            +
            import {RoleId, ADMIN_ROLE, PUBLIC_ROLE} from "../../../contracts/type/RoleId.sol";
         | 
| 10 11 |  | 
| 11 12 |  | 
| 12 13 | 
             
            contract FlightProductAuthorization
         | 
| 13 14 | 
             
                is BasicProductAuthorization
         | 
| 14 15 | 
             
            {
         | 
| 15 16 |  | 
| 16 | 
            -
                 | 
| 17 | 
            -
             | 
| 18 | 
            -
                 | 
| 17 | 
            +
                uint64 public constant STATISTICS_PROVIDER_ROLE_IDX = 1; // 1st custom role for flight product
         | 
| 18 | 
            +
                string public constant STATISTICS_PROVIDER_ROLE_NAME = "StatisticsProviderRole";
         | 
| 19 | 
            +
                RoleId public STATISTICS_PROVIDER_ROLE;
         | 
| 20 | 
            +
             | 
| 21 | 
            +
             | 
| 22 | 
            +
                constructor(string memory productName)
         | 
| 23 | 
            +
                    BasicProductAuthorization(productName)
         | 
| 24 | 
            +
                { }
         | 
| 25 | 
            +
             | 
| 26 | 
            +
             | 
| 27 | 
            +
                function _setupRoles()
         | 
| 28 | 
            +
                    internal
         | 
| 29 | 
            +
                    override
         | 
| 30 | 
            +
                {
         | 
| 31 | 
            +
                    STATISTICS_PROVIDER_ROLE = AccessAdminLib.getCustomRoleId(STATISTICS_PROVIDER_ROLE_IDX);
         | 
| 32 | 
            +
             | 
| 33 | 
            +
                    _addRole(
         | 
| 34 | 
            +
                        STATISTICS_PROVIDER_ROLE,
         | 
| 35 | 
            +
                        AccessAdminLib.roleInfo(
         | 
| 36 | 
            +
                            ADMIN_ROLE(),
         | 
| 37 | 
            +
                            TargetType.Custom,
         | 
| 38 | 
            +
                            1, // max member count special case: instance nft owner is sole role owner
         | 
| 39 | 
            +
                            STATISTICS_PROVIDER_ROLE_NAME));
         | 
| 40 | 
            +
                }
         | 
| 41 | 
            +
             | 
| 19 42 |  | 
| 20 43 | 
             
                function _setupTargetAuthorizations()
         | 
| 21 44 | 
             
                    internal
         | 
| @@ -28,14 +51,16 @@ contract FlightProductAuthorization | |
| 28 51 | 
             
                    functions = _authorizeForTarget(getMainTargetName(), getServiceRole(ORACLE()));
         | 
| 29 52 | 
             
                    _authorize(functions, FlightProduct.flightStatusCallback.selector, "flightStatusCallback");
         | 
| 30 53 |  | 
| 31 | 
            -
                    // authorize  | 
| 32 | 
            -
                    functions = _authorizeForTarget(getMainTargetName(),  | 
| 33 | 
            -
                    _authorize(functions, FlightProduct.createPolicy.selector, "createPolicy");
         | 
| 54 | 
            +
                    // authorize statistics provider role 
         | 
| 55 | 
            +
                    functions = _authorizeForTarget(getMainTargetName(), STATISTICS_PROVIDER_ROLE);
         | 
| 34 56 | 
             
                    _authorize(functions, FlightProduct.createPolicyWithPermit.selector, "createPolicyWithPermit");
         | 
| 35 57 |  | 
| 36 | 
            -
                    //  | 
| 37 | 
            -
                     | 
| 38 | 
            -
                    _authorize(functions, FlightProduct. | 
| 58 | 
            +
                    // authorize public role (additional authz via onlyOwner)
         | 
| 59 | 
            +
                    functions = _authorizeForTarget(getMainTargetName(), PUBLIC_ROLE());
         | 
| 60 | 
            +
                    _authorize(functions, FlightProduct.resendRequest.selector, "resendRequest");
         | 
| 61 | 
            +
                    _authorize(functions, FlightProduct.processPayoutsAndClosePolicies.selector, "processPayoutsAndClosePolicies");
         | 
| 62 | 
            +
                    _authorize(functions, FlightProduct.setConstants.selector, "setConstants");
         | 
| 63 | 
            +
                    _authorize(functions, FlightProduct.setTestMode.selector, "setTestMode");
         | 
| 39 64 | 
             
                    _authorize(functions, FlightProduct.setDefaultBundle.selector, "setDefaultBundle");
         | 
| 40 65 | 
             
                    _authorize(functions, FlightProduct.approveTokenHandler.selector, "approveTokenHandler");
         | 
| 41 66 | 
             
                    _authorize(functions, FlightProduct.setLocked.selector, "setLocked");
         | 
| @@ -0,0 +1,49 @@ | |
| 1 | 
            +
            // SPDX-License-Identifier: Apache-2.0
         | 
| 2 | 
            +
            pragma solidity ^0.8.20;
         | 
| 3 | 
            +
             | 
| 4 | 
            +
            import {IAuthorization} from "../../authorization/IAuthorization.sol";
         | 
| 5 | 
            +
            import {IVersionable} from "../../upgradeability/IVersionable.sol";
         | 
| 6 | 
            +
             | 
| 7 | 
            +
            import {NftId} from "../../type/NftId.sol";
         | 
| 8 | 
            +
            import {ProxyManager} from "../../upgradeability/ProxyManager.sol";
         | 
| 9 | 
            +
            import {FlightProduct} from "./FlightProduct.sol";
         | 
| 10 | 
            +
             | 
| 11 | 
            +
             | 
| 12 | 
            +
            contract FlightProductManager is ProxyManager {
         | 
| 13 | 
            +
             | 
| 14 | 
            +
                FlightProduct private _flightProduct;
         | 
| 15 | 
            +
                bytes32 private _salt = "0x1234";
         | 
| 16 | 
            +
             | 
| 17 | 
            +
                /// @dev initializes proxy manager with flight product implementation 
         | 
| 18 | 
            +
                constructor(
         | 
| 19 | 
            +
                    address registry,
         | 
| 20 | 
            +
                    NftId instanceNftId,
         | 
| 21 | 
            +
                    string memory componentName,
         | 
| 22 | 
            +
                    IAuthorization authorization
         | 
| 23 | 
            +
                ) 
         | 
| 24 | 
            +
                {
         | 
| 25 | 
            +
                    // FlightProduct prd = new FlightProduct{salt: _salt}();
         | 
| 26 | 
            +
                    // bytes memory data = abi.encode(
         | 
| 27 | 
            +
                    //     registry, 
         | 
| 28 | 
            +
                    //     instanceNftId, 
         | 
| 29 | 
            +
                    //     componentName, 
         | 
| 30 | 
            +
                    //     authorization);
         | 
| 31 | 
            +
             | 
| 32 | 
            +
                    // IVersionable versionable = initialize(
         | 
| 33 | 
            +
                    //     registry,
         | 
| 34 | 
            +
                    //     address(prd), 
         | 
| 35 | 
            +
                    //     data,
         | 
| 36 | 
            +
                    //     _salt);
         | 
| 37 | 
            +
             | 
| 38 | 
            +
                    // _flightProduct = FlightProduct(address(versionable));
         | 
| 39 | 
            +
                }
         | 
| 40 | 
            +
             | 
| 41 | 
            +
                //--- view functions ----------------------------------------------------//
         | 
| 42 | 
            +
                function getFlightProduct()
         | 
| 43 | 
            +
                    external
         | 
| 44 | 
            +
                    view
         | 
| 45 | 
            +
                    returns (FlightProduct flightProduct)
         | 
| 46 | 
            +
                {
         | 
| 47 | 
            +
                    return _flightProduct;
         | 
| 48 | 
            +
                }
         | 
| 49 | 
            +
            }
         | 
| @@ -42,6 +42,8 @@ abstract contract BaseStore is | |
| 42 42 | 
             
                    metadata.objectType = objectType;
         | 
| 43 43 | 
             
                    metadata.state = initialState;
         | 
| 44 44 | 
             
                    metadata.updatedIn = blocknumber;
         | 
| 45 | 
            +
             | 
| 46 | 
            +
                    emit LogBaseStoreMetadataCreated(key32, objectType, initialState);
         | 
| 45 47 | 
             
                }
         | 
| 46 48 |  | 
| 47 49 | 
             
                function _updateState(
         | 
| @@ -73,6 +75,8 @@ abstract contract BaseStore is | |
| 73 75 |  | 
| 74 76 | 
             
                    // update metadata
         | 
| 75 77 | 
             
                    metadata.updatedIn = BlocknumberLib.current();
         | 
| 78 | 
            +
                    
         | 
| 79 | 
            +
                    emit LogBaseStoreMetadataUpdated(key32, oldState, state);
         | 
| 76 80 | 
             
                }
         | 
| 77 81 |  | 
| 78 82 | 
             
                function exists(Key32 key32) public view returns (bool) {
         | 
| @@ -17,6 +17,14 @@ interface IBaseStore is ILifecycle { | |
| 17 17 | 
             
                error ErrorBaseStoreStateZero(Key32 key);
         | 
| 18 18 | 
             
                error ErrorBaseStoreNotExisting(Key32 key);
         | 
| 19 19 |  | 
| 20 | 
            +
                event LogBaseStoreMetadataCreated(
         | 
| 21 | 
            +
                    Key32 indexed key,
         | 
| 22 | 
            +
                    ObjectType indexed objectType,
         | 
| 23 | 
            +
                    StateId indexed state);
         | 
| 24 | 
            +
                event LogBaseStoreMetadataUpdated(
         | 
| 25 | 
            +
                    Key32 indexed key,
         | 
| 26 | 
            +
                    StateId indexed oldState,
         | 
| 27 | 
            +
                    StateId indexed newState);
         | 
| 20 28 |  | 
| 21 29 | 
             
                struct Metadata {
         | 
| 22 30 | 
             
                    // slot 0
         | 
| @@ -58,6 +58,8 @@ interface IInstanceService is IService { | |
| 58 58 |  | 
| 59 59 | 
             
                event LogInstanceServiceInstanceLocked(NftId instanceNftId, bool locked);
         | 
| 60 60 | 
             
                event LogInstanceServiceInstanceCreated(NftId instanceNftId, address instance);
         | 
| 61 | 
            +
                event LogInstanceServiceMasterInstanceRegistered(NftId masterInstanceNftId, address masterInstance, address masterInstanceAdmin, address masterAccessManager, 
         | 
| 62 | 
            +
                            address masterInstanceReader, address masterInstanceBundleSet, address masterInstanceRiskSet, address masterInstanceStore, address masterProductStore);
         | 
| 61 63 | 
             
                event LogInstanceServiceMasterInstanceReaderUpgraded(NftId instanceNfId, address newInstanceReader);
         | 
| 62 64 | 
             
                event LogInstanceServiceInstanceReaderUpgraded(NftId instanceNfId, address newInstanceReader);
         | 
| 63 65 |  | 
| @@ -130,7 +130,6 @@ contract InstanceAdmin is | |
| 130 130 | 
             
                    _createTarget(target, name, TargetType.Instance, true); 
         | 
| 131 131 | 
             
                }
         | 
| 132 132 |  | 
| 133 | 
            -
             | 
| 134 133 | 
             
                /// @dev Initializes the authorization for the specified component.
         | 
| 135 134 | 
             
                /// Important: The component MUST be registered.
         | 
| 136 135 | 
             
                function initializeComponentAuthorization(
         | 
| @@ -34,6 +34,7 @@ import {RiskId} from "../type/RiskId.sol"; | |
| 34 34 | 
             
            import {RiskSet} from "./RiskSet.sol";
         | 
| 35 35 | 
             
            import {RoleId, INSTANCE_OWNER_ROLE} from "../type/RoleId.sol";
         | 
| 36 36 | 
             
            import {StateId} from "../type/StateId.sol";
         | 
| 37 | 
            +
            import {Str, StrLib} from "../type/String.sol";
         | 
| 37 38 | 
             
            import {TokenHandler} from "../shared/TokenHandler.sol";
         | 
| 38 39 | 
             
            import {UFixed, UFixedLib} from "../type/UFixed.sol";
         | 
| 39 40 |  | 
| @@ -163,7 +164,9 @@ contract InstanceReader { | |
| 163 164 |  | 
| 164 165 |  | 
| 165 166 | 
             
                /// @dev Returns the currently locked amount for the given NFT ID.
         | 
| 166 | 
            -
                ///  | 
| 167 | 
            +
                /// Locked amounts are only tracked for bundles, not for pool. To get the 
         | 
| 168 | 
            +
                /// pool locked amount, then locked amounts of the bundles contained in the 
         | 
| 169 | 
            +
                /// pool must be summed up. The target NFT ID may only a bundle. 
         | 
| 167 170 | 
             
                function getLockedAmount(NftId targetNftId) external view returns (Amount) { 
         | 
| 168 171 | 
             
                    return _store.getLockedAmount(targetNftId);
         | 
| 169 172 | 
             
                }
         | 
| @@ -466,6 +469,12 @@ contract InstanceReader { | |
| 466 469 | 
             
                }
         | 
| 467 470 |  | 
| 468 471 |  | 
| 472 | 
            +
                /// @dev Returns the role ID for the given index.
         | 
| 473 | 
            +
                function getRoleForName(string memory name) public view returns (RoleId roleId, bool exists) {
         | 
| 474 | 
            +
                    return _instanceAdmin.getRoleForName(name);
         | 
| 475 | 
            +
                }
         | 
| 476 | 
            +
             | 
| 477 | 
            +
             | 
| 469 478 | 
             
                /// @dev Returns the role ID for the instance owner role.
         | 
| 470 479 | 
             
                /// This role may be used as a "root" admin role for other custom roles defined for this instance.
         | 
| 471 480 | 
             
                function getInstanceOwnerRole() public pure returns (RoleId roleId) {
         | 
| @@ -595,13 +604,18 @@ contract InstanceReader { | |
| 595 604 | 
             
                }
         | 
| 596 605 |  | 
| 597 606 |  | 
| 598 | 
            -
                function  | 
| 599 | 
            -
                    return UFixedLib. | 
| 607 | 
            +
                function toInt(UFixed value) public pure returns (uint256) {
         | 
| 608 | 
            +
                    return UFixedLib.toInt(value);
         | 
| 600 609 | 
             
                }
         | 
| 601 610 |  | 
| 602 611 |  | 
| 603 | 
            -
                function  | 
| 604 | 
            -
                    return  | 
| 612 | 
            +
                function toString(Str str) public pure returns (string memory) {
         | 
| 613 | 
            +
                    return StrLib.toString(str);
         | 
| 614 | 
            +
                }
         | 
| 615 | 
            +
             | 
| 616 | 
            +
             | 
| 617 | 
            +
                function toUFixed(uint256 value, int8 exp) public pure returns (UFixed) {
         | 
| 618 | 
            +
                    return UFixedLib.toUFixed(value, exp);
         | 
| 605 619 | 
             
                }
         | 
| 606 620 |  | 
| 607 621 | 
             
                //--- internal functions ----------------------------------------------------//
         | 
| @@ -372,6 +372,10 @@ contract InstanceService is | |
| 372 372 | 
             
                        IInstance masterInstance = IInstance(_masterInstance);
         | 
| 373 373 | 
             
                        IRegistry.ObjectInfo memory info = _registryService.registerInstance(masterInstance, getOwner());
         | 
| 374 374 | 
             
                        masterInstanceNftId = info.nftId;
         | 
| 375 | 
            +
                        
         | 
| 376 | 
            +
                        emit LogInstanceServiceMasterInstanceRegistered(
         | 
| 377 | 
            +
                            masterInstanceNftId, _masterInstance, _masterInstanceAdmin, _masterAccessManager, 
         | 
| 378 | 
            +
                            _masterInstanceReader, _masterInstanceBundleSet, _masterInstanceRiskSet, _masterInstanceStore, _masterProductStore);
         | 
| 375 379 | 
             
                    }
         | 
| 376 380 | 
             
                }
         | 
| 377 381 |  | 
| @@ -140,10 +140,10 @@ abstract contract Oracle is | |
| 140 140 | 
             
                    internal
         | 
| 141 141 | 
             
                    virtual
         | 
| 142 142 | 
             
                {
         | 
| 143 | 
            -
                    _getOracleStorage()._oracleService.respond(
         | 
| 144 | 
            -
                        requestId, responseData);
         | 
| 143 | 
            +
                    _getOracleStorage()._oracleService.respond(requestId, responseData);
         | 
| 145 144 | 
             
                }
         | 
| 146 145 |  | 
| 146 | 
            +
             | 
| 147 147 | 
             
                function _getOracleStorage() private pure returns (OracleStorage storage $) {
         | 
| 148 148 | 
             
                    assembly {
         | 
| 149 149 | 
             
                        $.slot := ORACLE_STORAGE_LOCATION_V1
         | 
| @@ -130,7 +130,7 @@ contract BundleService is | |
| 130 130 | 
             
                    BundleSet bundleManager = instance.getBundleSet();
         | 
| 131 131 | 
             
                    bundleManager.add(bundleNftId);
         | 
| 132 132 |  | 
| 133 | 
            -
                    emit LogBundleServiceBundleCreated(bundleNftId, poolNftId, lifetime);
         | 
| 133 | 
            +
                    emit LogBundleServiceBundleCreated(bundleNftId, poolNftId, lifetime, bundleFee.fixedFee, bundleFee.fractionalFee);
         | 
| 134 134 | 
             
                }
         | 
| 135 135 |  | 
| 136 136 |  | 
| @@ -30,7 +30,7 @@ interface IBundleService is IService { | |
| 30 30 |  | 
| 31 31 | 
             
                error ErrorBundleServiceExtensionLifetimeIsZero();
         | 
| 32 32 |  | 
| 33 | 
            -
                event LogBundleServiceBundleCreated(NftId bundleNftId, NftId poolNftId, Seconds lifetime);
         | 
| 33 | 
            +
                event LogBundleServiceBundleCreated(NftId bundleNftId, NftId poolNftId, Seconds lifetime, Amount fixedFee, UFixed fractionalFee);
         | 
| 34 34 | 
             
                event LogBundleServiceBundleClosed(NftId bundleNftId);
         | 
| 35 35 | 
             
                event LogBundleServiceBundleLocked(NftId bundleNftId);
         | 
| 36 36 | 
             
                event LogBundleServiceBundleUnlocked(NftId bundleNftId);
         | 
| @@ -19,7 +19,7 @@ interface IPoolService is IService { | |
| 19 19 | 
             
                event LogPoolServiceWalletDefunded(NftId poolNftId, address poolOwner, Amount amount);
         | 
| 20 20 |  | 
| 21 21 | 
             
                event LogPoolServiceBundleCreated(NftId instanceNftId, NftId poolNftId, NftId bundleNftId);
         | 
| 22 | 
            -
                event LogPoolServiceBundleClosed(NftId instanceNftId, NftId poolNftId, NftId bundleNftId);
         | 
| 22 | 
            +
                event LogPoolServiceBundleClosed(NftId instanceNftId, NftId poolNftId, NftId bundleNftId, Amount balanceAmount, Amount feeAmount);
         | 
| 23 23 |  | 
| 24 24 | 
             
                event LogPoolServiceBundleStaked(NftId instanceNftId, NftId poolNftId, NftId bundleNftId, Amount amount, Amount netAmount);
         | 
| 25 25 | 
             
                event LogPoolServiceBundleUnstaked(NftId instanceNftId, NftId poolNftId, NftId bundleNftId, Amount amount, Amount netAmount);
         | 
| @@ -98,7 +98,7 @@ contract PoolService is | |
| 98 98 | 
             
                        unstakedAmount +  feeAmount, 
         | 
| 99 99 | 
             
                        AmountLib.zero());
         | 
| 100 100 |  | 
| 101 | 
            -
                    emit LogPoolServiceBundleClosed(instance.getNftId(), poolNftId, bundleNftId);
         | 
| 101 | 
            +
                    emit LogPoolServiceBundleClosed(instance.getNftId(), poolNftId, bundleNftId, unstakedAmount, feeAmount);
         | 
| 102 102 |  | 
| 103 103 | 
             
                    if ((unstakedAmount + feeAmount).gtz()){
         | 
| 104 104 | 
             
                        IComponents.ComponentInfo memory poolComponentInfo = instance.getInstanceReader().getComponentInfo(poolNftId);
         | 
| @@ -13,7 +13,7 @@ interface IPolicyService is IService { | |
| 13 13 |  | 
| 14 14 | 
             
                event LogPolicyServicePolicyCreated(NftId policyNftId, Amount premiumAmount, Timestamp activatedAt);
         | 
| 15 15 | 
             
                event LogPolicyServicePolicyDeclined(NftId policyNftId);
         | 
| 16 | 
            -
                event LogPolicyServicePolicyPremiumCollected(NftId policyNftId, Amount premiumAmount);
         | 
| 16 | 
            +
                event LogPolicyServicePolicyPremiumCollected(NftId policyNftId, NftId productNftId, Amount premiumAmount, Timestamp activateAt);
         | 
| 17 17 | 
             
                event LogPolicyServicePolicyActivated(NftId policyNftId, Timestamp activatedAt);
         | 
| 18 18 | 
             
                event LogPolicyServicePolicyActivatedUpdated(NftId policyNftId, Timestamp activatedAt);
         | 
| 19 19 | 
             
                event LogPolicyServicePolicyExpirationUpdated(NftId policyNftId, Timestamp expiredAt);
         | 
| @@ -247,7 +247,7 @@ contract PolicyService is | |
| 247 247 | 
             
                    instance.getProductStore().updatePremiumState(policyNftId, PAID());
         | 
| 248 248 |  | 
| 249 249 | 
             
                    // log premium collection before interactions with token
         | 
| 250 | 
            -
                    emit LogPolicyServicePolicyPremiumCollected(policyNftId, premium.premiumAmount);
         | 
| 250 | 
            +
                    emit LogPolicyServicePolicyPremiumCollected(policyNftId, policyInfo.productNftId, premium.premiumAmount, activateAt);
         | 
| 251 251 |  | 
| 252 252 | 
             
                    // interactions
         | 
| 253 253 | 
             
                    _transferPremiumAmounts(instanceReader, policyNftId, policyInfo.productNftId, premium);
         | 
| @@ -95,13 +95,14 @@ library PolicyServiceLib { | |
| 95 95 | 
             
                {
         | 
| 96 96 | 
             
                    if (policyState != COLLATERALIZED()) { 
         | 
| 97 97 | 
             
                        revert IPolicyService.ErrorPolicyServicePolicyNotActive(policyNftId, policyState);
         | 
| 98 | 
            -
                    } | 
| 99 | 
            -
             | 
| 98 | 
            +
                    }
         | 
| 99 | 
            +
             | 
| 100 | 
            +
                    if (policyInfo.activatedAt.eqz() || TimestampLib.current() < policyInfo.activatedAt) { 
         | 
| 100 101 | 
             
                        revert IPolicyService.ErrorPolicyServicePolicyNotActive(policyNftId, policyState);
         | 
| 101 102 | 
             
                    } 
         | 
| 102 103 |  | 
| 103 104 | 
             
                    // check expiredAt represents a valid expiry time
         | 
| 104 | 
            -
                    if (newExpiredAt  | 
| 105 | 
            +
                    if (newExpiredAt > policyInfo.expiredAt) {
         | 
| 105 106 | 
             
                        revert IPolicyService.ErrorPolicyServicePolicyExpirationTooLate(policyNftId, policyInfo.expiredAt, newExpiredAt);
         | 
| 106 107 | 
             
                    }
         | 
| 107 108 |  | 
| @@ -110,6 +111,7 @@ library PolicyServiceLib { | |
| 110 111 | 
             
                    }
         | 
| 111 112 | 
             
                }
         | 
| 112 113 |  | 
| 114 | 
            +
             | 
| 113 115 | 
             
                function policyIsCloseable(InstanceReader instanceReader, NftId policyNftId)
         | 
| 114 116 | 
             
                    external 
         | 
| 115 117 | 
             
                    view
         | 
| @@ -11,7 +11,7 @@ contract ChainNft is ERC721Enumerable { | |
| 11 11 | 
             
                event LogTokenInterceptorAddress(uint256 tokenId, address interceptor);
         | 
| 12 12 |  | 
| 13 13 | 
             
                // constants
         | 
| 14 | 
            -
                string public constant NAME = " | 
| 14 | 
            +
                string public constant NAME = "Decentralized Insurance Protocol NFT";
         | 
| 15 15 | 
             
                string public constant SYMBOL = "DIPNFT";
         | 
| 16 16 |  | 
| 17 17 | 
             
                uint256 public constant PROTOCOL_NFT_ID = 1101;
         | 
| @@ -20,7 +20,7 @@ interface IRegistry is | |
| 20 20 | 
             
            {
         | 
| 21 21 |  | 
| 22 22 | 
             
                event LogRegistryObjectRegistered(NftId nftId, NftId parentNftId, ObjectType objectType, bool isInterceptor, address objectAddress, address initialOwner);
         | 
| 23 | 
            -
                event LogRegistryServiceRegistered(VersionPart majorVersion, ObjectType domain);
         | 
| 23 | 
            +
                event LogRegistryServiceRegistered(NftId nftId, VersionPart majorVersion, ObjectType domain);
         | 
| 24 24 | 
             
                event LogRegistryChainRegistryRegistered(NftId nftId, uint256 chainId, address chainRegistryAddress);
         | 
| 25 25 |  | 
| 26 26 | 
             
                // initialize
         | 
| @@ -2,7 +2,6 @@ | |
| 2 2 | 
             
            pragma solidity ^0.8.20;
         | 
| 3 3 |  | 
| 4 4 | 
             
            import {IERC165} from "@openzeppelin/contracts/utils/introspection/IERC165.sol";
         | 
| 5 | 
            -
            import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
         | 
| 6 5 | 
             
            import {AccessManaged} from "@openzeppelin/contracts/access/manager/AccessManaged.sol";
         | 
| 7 6 | 
             
            import {Initializable} from "@openzeppelin/contracts/proxy/utils/Initializable.sol";
         | 
| 8 7 |  | 
| @@ -16,7 +15,6 @@ import {IRelease} from "./IRelease.sol"; | |
| 16 15 | 
             
            import {IRegisterable} from "../shared/IRegisterable.sol";
         | 
| 17 16 | 
             
            import {IStaking} from "../staking/IStaking.sol";
         | 
| 18 17 | 
             
            import {ReleaseRegistry} from "./ReleaseRegistry.sol";
         | 
| 19 | 
            -
            import {TokenRegistry} from "./TokenRegistry.sol";
         | 
| 20 18 | 
             
            import {RegistryAdmin} from "./RegistryAdmin.sol";
         | 
| 21 19 |  | 
| 22 20 | 
             
            /// @dev IMPORTANT
         | 
| @@ -231,7 +229,7 @@ contract Registry is | |
| 231 229 |  | 
| 232 230 | 
             
                    _service[version][domain] = service;
         | 
| 233 231 |  | 
| 234 | 
            -
                    emit LogRegistryServiceRegistered(version, domain);
         | 
| 232 | 
            +
                    emit LogRegistryServiceRegistered(info.nftId,version, domain);
         | 
| 235 233 |  | 
| 236 234 | 
             
                    nftId = _register(info);
         | 
| 237 235 | 
             
                }
         | 
| @@ -566,6 +564,8 @@ contract Registry is | |
| 566 564 | 
             
                            initialOwner: NFT_LOCK_ADDRESS,
         | 
| 567 565 | 
             
                            data: ""}),
         | 
| 568 566 | 
             
                        true);
         | 
| 567 | 
            +
             | 
| 568 | 
            +
                    emit LogRegistryObjectRegistered(protocolNftId, NftIdLib.zero(), PROTOCOL(), false, address(0), NFT_LOCK_ADDRESS);
         | 
| 569 569 | 
             
                }
         | 
| 570 570 |  | 
| 571 571 | 
             
                /// @dev register this registry
         | 
| @@ -671,6 +671,8 @@ contract Registry is | |
| 671 671 |  | 
| 672 672 | 
             
                    // calls nft receiver
         | 
| 673 673 | 
             
                    CHAIN_NFT.mint(info.initialOwner, info.nftId.toInt());
         | 
| 674 | 
            +
             | 
| 675 | 
            +
                    emit LogRegistryObjectRegistered(info.nftId, info.parentNftId, info.objectType, info.isInterceptor, info.objectAddress, info.initialOwner);
         | 
| 674 676 | 
             
                }
         | 
| 675 677 |  | 
| 676 678 | 
             
                function _setAddressForNftId(NftId nftId, address objectAddress)
         | 
| @@ -85,7 +85,13 @@ contract RegistryAdmin is | |
| 85 85 | 
             
                            registry, 
         | 
| 86 86 | 
             
                            release); 
         | 
| 87 87 |  | 
| 88 | 
            -
                     | 
| 88 | 
            +
                    AccessAdminLib.checkAuthorization(
         | 
| 89 | 
            +
                        address(_authorization),
         | 
| 90 | 
            +
                        authorization, 
         | 
| 91 | 
            +
                        REGISTRY(), 
         | 
| 92 | 
            +
                        release, 
         | 
| 93 | 
            +
                        false, // expectServiceAuthorization
         | 
| 94 | 
            +
                        false); // checkAlreadyInitialized);
         | 
| 89 95 |  | 
| 90 96 | 
             
                    _registry = registry;
         | 
| 91 97 | 
             
                    _authorization = IAuthorization(authorization);
         | 
| @@ -144,8 +144,6 @@ contract RegistryAuthorization | |
| 144 144 | 
             
                      _setupStakingThAuthorization();
         | 
| 145 145 | 
             
                 }
         | 
| 146 146 |  | 
| 147 | 
            -
                 event LogAccessAdminDebug(string message, string custom, uint256 value);
         | 
| 148 | 
            -
             | 
| 149 147 | 
             
                 function _setupRegistryAuthorization() internal {
         | 
| 150 148 | 
             
                      IAccess.FunctionInfo[] storage functions;
         | 
| 151 149 |  | 
| @@ -72,7 +72,14 @@ contract ReleaseAdmin is | |
| 72 72 | 
             
                            release);
         | 
| 73 73 |  | 
| 74 74 | 
             
                    IServiceAuthorization serviceAuthorization = IServiceAuthorization(authorization);
         | 
| 75 | 
            -
                     | 
| 75 | 
            +
                    AccessAdminLib.checkAuthorization(
         | 
| 76 | 
            +
                        address(_authorization),
         | 
| 77 | 
            +
                        address(serviceAuthorization), 
         | 
| 78 | 
            +
                        RELEASE(), 
         | 
| 79 | 
            +
                        release, 
         | 
| 80 | 
            +
                        true, // expectServiceAuthorization
         | 
| 81 | 
            +
                        true); // checkAlreadyInitialized);
         | 
| 82 | 
            +
             | 
| 76 83 | 
             
                    _serviceAuthorization = serviceAuthorization;
         | 
| 77 84 |  | 
| 78 85 | 
             
                    // link nft ownability to registry
         | 
| @@ -312,9 +312,27 @@ contract ComponentService is | |
| 312 312 | 
             
                        productNftId, 
         | 
| 313 313 | 
             
                        initialProductInfo);
         | 
| 314 314 |  | 
| 315 | 
            +
                    emit LogComponentServiceProductCreated(productNftId, productAddress, initialProductInfo.hasDistribution, initialProductInfo.expectedNumberOfOracles);
         | 
| 316 | 
            +
             | 
| 317 | 
            +
                    IComponents.FeeInfo memory initialFeeInfo = product.getInitialFeeInfo();
         | 
| 318 | 
            +
                    
         | 
| 315 319 | 
             
                    productStore.createFee(
         | 
| 316 320 | 
             
                        productNftId, 
         | 
| 317 | 
            -
                         | 
| 321 | 
            +
                        initialFeeInfo);
         | 
| 322 | 
            +
             | 
| 323 | 
            +
                    emit LogComponentServiceProductInitialProductFeesSet(
         | 
| 324 | 
            +
                        productNftId, 
         | 
| 325 | 
            +
                        initialFeeInfo.productFee.fixedFee, initialFeeInfo.productFee.fractionalFee,
         | 
| 326 | 
            +
                        initialFeeInfo.processingFee.fixedFee, initialFeeInfo.processingFee.fractionalFee);
         | 
| 327 | 
            +
                    emit LogComponentServiceProductInitialDistributionFeesSet(
         | 
| 328 | 
            +
                        productNftId, 
         | 
| 329 | 
            +
                        initialFeeInfo.distributionFee.fixedFee, initialFeeInfo.distributionFee.fractionalFee,
         | 
| 330 | 
            +
                        initialFeeInfo.minDistributionOwnerFee.fixedFee, initialFeeInfo.minDistributionOwnerFee.fractionalFee);
         | 
| 331 | 
            +
                    emit LogComponentServiceProductInitialPoolFeesSet(
         | 
| 332 | 
            +
                        productNftId, 
         | 
| 333 | 
            +
                        initialFeeInfo.poolFee.fixedFee, initialFeeInfo.poolFee.fractionalFee,
         | 
| 334 | 
            +
                        initialFeeInfo.stakingFee.fixedFee, initialFeeInfo.stakingFee.fractionalFee,
         | 
| 335 | 
            +
                        initialFeeInfo.performanceFee.fixedFee, initialFeeInfo.performanceFee.fractionalFee);
         | 
| 318 336 | 
             
                }
         | 
| 319 337 |  | 
| 320 338 | 
             
                //-------- distribution -------------------------------------------------//
         | 
| @@ -341,6 +359,8 @@ contract ComponentService is | |
| 341 359 | 
             
                    // set distribution in product info
         | 
| 342 360 | 
             
                    productInfo.distributionNftId = distributionNftId;
         | 
| 343 361 | 
             
                    productStore.updateProduct(productNftId, productInfo, KEEP_STATE());
         | 
| 362 | 
            +
             | 
| 363 | 
            +
                    emit LogComponentServiceDistributionCreated(distributionNftId, productNftId);
         | 
| 344 364 | 
             
                }
         | 
| 345 365 |  | 
| 346 366 |  | 
| @@ -400,6 +420,8 @@ contract ComponentService is | |
| 400 420 | 
             
                    productInfo.oracleNftId[productInfo.numberOfOracles] = oracleNftId;
         | 
| 401 421 | 
             
                    productInfo.numberOfOracles++;
         | 
| 402 422 | 
             
                    productStore.updateProduct(productNftId, productInfo, KEEP_STATE());
         | 
| 423 | 
            +
             | 
| 424 | 
            +
                    emit LogComponentServiceOracleCreated(oracleNftId, productNftId);
         | 
| 403 425 | 
             
                }
         | 
| 404 426 |  | 
| 405 427 | 
             
                //-------- pool ---------------------------------------------------------//
         | 
| @@ -423,13 +445,20 @@ contract ComponentService is | |
| 423 445 |  | 
| 424 446 | 
             
                    // create info
         | 
| 425 447 | 
             
                    IPoolComponent pool = IPoolComponent(componentAddress);
         | 
| 448 | 
            +
                    IComponents.PoolInfo memory initialPoolInfo = pool.getInitialPoolInfo();
         | 
| 426 449 | 
             
                    instanceStore.createPool(
         | 
| 427 450 | 
             
                        poolNftId, 
         | 
| 428 | 
            -
                         | 
| 451 | 
            +
                        initialPoolInfo);
         | 
| 429 452 |  | 
| 430 453 | 
             
                    // update pool in product info
         | 
| 431 454 | 
             
                    productInfo.poolNftId = poolNftId;
         | 
| 432 455 | 
             
                    productStore.updateProduct(productNftId, productInfo, KEEP_STATE());
         | 
| 456 | 
            +
             | 
| 457 | 
            +
                    emit LogComponentServicePoolCreated(
         | 
| 458 | 
            +
                        poolNftId, productNftId, componentAddress, 
         | 
| 459 | 
            +
                        initialPoolInfo.maxBalanceAmount, initialPoolInfo.collateralizationLevel, 
         | 
| 460 | 
            +
                        initialPoolInfo.retentionLevel, initialPoolInfo.isExternallyManaged, 
         | 
| 461 | 
            +
                        initialPoolInfo.isVerifyingApplications);
         | 
| 433 462 | 
             
                }
         | 
| 434 463 |  | 
| 435 464 |  | 
| @@ -543,6 +572,11 @@ contract ComponentService is | |
| 543 572 | 
             
                        address(component), // initially, component is its own wallet
         | 
| 544 573 | 
             
                        token, 
         | 
| 545 574 | 
             
                        instanceAdmin.authority());
         | 
| 575 | 
            +
             | 
| 576 | 
            +
                    emit LogComponentServiceTokenHandlerDeployed(
         | 
| 577 | 
            +
                        componentNftId, 
         | 
| 578 | 
            +
                        address(componentInfo.tokenHandler), 
         | 
| 579 | 
            +
                        token);
         | 
| 546 580 |  | 
| 547 581 | 
             
                    // register component with instance
         | 
| 548 582 | 
             
                    instanceStore.createComponent(
         | 
| @@ -0,0 +1,15 @@ | |
| 1 | 
            +
            // SPDX-License-Identifier: Apache-2.0
         | 
| 2 | 
            +
            pragma solidity ^0.8.20;
         | 
| 3 | 
            +
             | 
| 4 | 
            +
            import {IComponent} from "../shared/IComponent.sol";
         | 
| 5 | 
            +
            import {IAuthorization} from "../authorization/IAuthorization.sol";
         | 
| 6 | 
            +
             | 
| 7 | 
            +
            /// @dev component base class
         | 
| 8 | 
            +
            /// component examples are product, distribution, pool and oracle
         | 
| 9 | 
            +
            interface IAuthorizedComponent is 
         | 
| 10 | 
            +
                IComponent
         | 
| 11 | 
            +
            {
         | 
| 12 | 
            +
                /// @dev returns the initial component authorization specification.
         | 
| 13 | 
            +
                function getAuthorization() external view returns (IAuthorization authorization);
         | 
| 14 | 
            +
             | 
| 15 | 
            +
            }
         | 
| @@ -25,10 +25,6 @@ interface IComponent is | |
| 25 25 | 
             
                error ErrorComponentWalletAddressIsSameAsCurrent();
         | 
| 26 26 | 
             
                error ErrorComponentWalletNotComponent();
         | 
| 27 27 |  | 
| 28 | 
            -
                event LogComponentWalletAddressChanged(address oldWallet, address newWallet);
         | 
| 29 | 
            -
                event LogComponentWalletTokensTransferred(address from, address to, uint256 amount);
         | 
| 30 | 
            -
                event LogComponentTokenHandlerApproved(address tokenHandler, address token, Amount limit, bool isMaxAmount);
         | 
| 31 | 
            -
             | 
| 32 28 | 
             
                /// @dev returns the name of this component
         | 
| 33 29 | 
             
                /// to successfully register the component with an instance the name MUST be unique in the linked instance
         | 
| 34 30 | 
             
                function getName() external view returns (string memory name);
         | 
| @@ -46,6 +46,7 @@ interface IComponentService is | |
| 46 46 | 
             
                error ErrorComponentServiceWalletAllowanceTooSmall(address wallet, address spender, uint256 allowance, uint256 amount);
         | 
| 47 47 |  | 
| 48 48 | 
             
                event LogComponentServiceComponentLocked(address component, bool locked);
         | 
| 49 | 
            +
                event LogComponentServiceTokenHandlerDeployed(NftId componentNftId, address tokenHandler, address token);
         | 
| 49 50 | 
             
                event LogComponentServiceRegistered(NftId instanceNftId, NftId componentNftId, ObjectType componentType, address component, address token, address initialOwner); 
         | 
| 50 51 | 
             
                event LogComponentServiceWalletAddressChanged(NftId componentNftId, address currentWallet, address newWallet);
         | 
| 51 52 | 
             
                event LogComponentServiceWalletTokensTransferred(NftId componentNftId, address currentWallet, address newWallet, uint256 currentBalance);
         | 
| @@ -61,6 +62,29 @@ interface IComponentService is | |
| 61 62 | 
             
                    UFixed newFractionalFee, 
         | 
| 62 63 | 
             
                    Amount newFixedFee
         | 
| 63 64 | 
             
                );
         | 
| 65 | 
            +
                event LogComponentServiceProductCreated(
         | 
| 66 | 
            +
                    NftId indexed productNftId, address indexed productAddress, bool indexed hasDistribution, uint8 expectedNumberOfOracles);
         | 
| 67 | 
            +
                event LogComponentServiceProductInitialProductFeesSet(
         | 
| 68 | 
            +
                    NftId indexed productNftId, 
         | 
| 69 | 
            +
                    Amount indexed productFeeFixed, UFixed indexed productFeeFractional,
         | 
| 70 | 
            +
                    Amount processingFeeFixed, UFixed processingFeeFractional);
         | 
| 71 | 
            +
                event LogComponentServiceProductInitialDistributionFeesSet(
         | 
| 72 | 
            +
                    NftId indexed productNftId, 
         | 
| 73 | 
            +
                    Amount indexed distributionFeeFixed, UFixed indexed distributionFeeFractional,
         | 
| 74 | 
            +
                    Amount minDistributionOwnerFeeFixed, UFixed minDistributionOwnerFeeFractional);
         | 
| 75 | 
            +
                event LogComponentServiceProductInitialPoolFeesSet(
         | 
| 76 | 
            +
                    NftId indexed productNftId, 
         | 
| 77 | 
            +
                    Amount indexed poolFeeFixed, UFixed indexed poolFeeFractional,
         | 
| 78 | 
            +
                    Amount stakingFeeFixed, UFixed stakingFeeFractional,
         | 
| 79 | 
            +
                    Amount performanceFeeFixed, UFixed performanceFeeFractional);
         | 
| 80 | 
            +
                event LogComponentServicePoolCreated(
         | 
| 81 | 
            +
                    NftId indexed poolNftId, NftId indexed productNftId, address indexed componentAddress, 
         | 
| 82 | 
            +
                    Amount maxBalanceAmount, UFixed collateralizationLevel, UFixed retentionLevel, 
         | 
| 83 | 
            +
                    bool isExternallyManaged, bool isVerifyingApplications);
         | 
| 84 | 
            +
                event LogComponentServiceDistributionCreated(
         | 
| 85 | 
            +
                    NftId indexed distributionNftId, NftId indexed productNftId);
         | 
| 86 | 
            +
                event LogComponentServiceOracleCreated(
         | 
| 87 | 
            +
                    NftId indexed oracleNftId, NftId indexed productNftId);
         | 
| 64 88 |  | 
| 65 89 | 
             
                //-------- component ----------------------------------------------------//
         | 
| 66 90 |  | 
| @@ -2,7 +2,7 @@ | |
| 2 2 | 
             
            pragma solidity ^0.8.20;
         | 
| 3 3 |  | 
| 4 4 | 
             
            import {Amount} from "../type/Amount.sol";
         | 
| 5 | 
            -
            import { | 
| 5 | 
            +
            import {IAuthorizedComponent} from "../shared/IAuthorizedComponent.sol";
         | 
| 6 6 | 
             
            import {IAuthorization} from "../authorization/IAuthorization.sol";
         | 
| 7 7 | 
             
            import {IInstance} from "../instance/IInstance.sol";
         | 
| 8 8 | 
             
            import {NftId} from "../type/NftId.sol";
         | 
| @@ -11,7 +11,7 @@ import {ObjectType} from "../type/ObjectType.sol"; | |
| 11 11 | 
             
            /// @dev component base class
         | 
| 12 12 | 
             
            /// component examples are product, distribution, pool and oracle
         | 
| 13 13 | 
             
            interface IInstanceLinkedComponent is 
         | 
| 14 | 
            -
                 | 
| 14 | 
            +
                IAuthorizedComponent
         | 
| 15 15 | 
             
            {
         | 
| 16 16 | 
             
                error ErrorInstanceLinkedComponentTypeMismatch(ObjectType requiredType, ObjectType objectType);
         | 
| 17 17 | 
             
                error ErrorInstanceLinkedComponentNotProduct(NftId nftId, ObjectType objectType);
         | 
| @@ -24,7 +24,4 @@ interface IInstanceLinkedComponent is | |
| 24 24 | 
             
                /// @dev defines the instance to which this component is linked to
         | 
| 25 25 | 
             
                function getInstance() external view returns (IInstance instance);
         | 
| 26 26 |  | 
| 27 | 
            -
                /// @dev returns the initial component authorization specification.
         | 
| 28 | 
            -
                function getAuthorization() external view returns (IAuthorization authorization);
         | 
| 29 | 
            -
             | 
| 30 27 | 
             
            }
         | 
| @@ -2,6 +2,7 @@ | |
| 2 2 | 
             
            pragma solidity ^0.8.20;
         | 
| 3 3 |  | 
| 4 4 | 
             
            import {IAuthorization} from "../authorization/IAuthorization.sol";
         | 
| 5 | 
            +
            import {IAuthorizedComponent} from "../shared/IAuthorizedComponent.sol";
         | 
| 5 6 | 
             
            import {IComponents} from "../instance/module/IComponents.sol";
         | 
| 6 7 | 
             
            import {IComponentService} from "./IComponentService.sol";
         | 
| 7 8 | 
             
            import {IInstance} from "../instance/IInstance.sol";
         | 
| @@ -46,7 +47,7 @@ abstract contract InstanceLinkedComponent is | |
| 46 47 | 
             
                }
         | 
| 47 48 |  | 
| 48 49 |  | 
| 49 | 
            -
                /// @inheritdoc  | 
| 50 | 
            +
                /// @inheritdoc IAuthorizedComponent
         | 
| 50 51 | 
             
                function getAuthorization() external view virtual returns (IAuthorization authorization) {
         | 
| 51 52 | 
             
                    return _getInstanceLinkedComponentStorage()._initialAuthorization;
         | 
| 52 53 | 
             
                }
         |