@etherisc/gif-next 0.0.2-f1f3b2c-994 → 0.0.2-f2273b3-211
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 +27 -6
- package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.dbg.json +4 -0
- package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.json +1007 -0
- package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +4 -0
- package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +744 -0
- package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.dbg.json +4 -0
- package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.json +791 -0
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +163 -55
- package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.dbg.json +4 -0
- package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.json +24 -0
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +233 -5
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +200 -16
- package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +1 -1
- package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +1 -1
- package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +94 -14
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +107 -15
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +2 -2
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +8 -8
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +175 -216
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +206 -27
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +113 -130
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +275 -171
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +111 -65
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +100 -112
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +148 -72
- package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +158 -195
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +206 -27
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +336 -295
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +203 -28
- package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +215 -168
- package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +589 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +156 -153
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +282 -193
- package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +589 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +717 -292
- package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +589 -0
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +193 -45
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +158 -57
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +105 -103
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +211 -82
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +386 -117
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +150 -90
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +590 -204
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +129 -157
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +75 -45
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +445 -375
- package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +4 -0
- package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +853 -0
- 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 +3 -3
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +16 -5
- package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.dbg.json +4 -0
- package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.json +168 -0
- package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
- package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +132 -173
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +180 -29
- 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 +94 -106
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +69 -11
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +108 -125
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +151 -81
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +95 -41
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +107 -152
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +206 -27
- package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +156 -326
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +79 -101
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +84 -135
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +94 -145
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +192 -229
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +107 -163
- package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +4 -0
- package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +456 -0
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +330 -368
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +119 -69
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +130 -54
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +71 -41
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +228 -186
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +206 -27
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +272 -173
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +100 -78
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +89 -9
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +170 -19
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +139 -54
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +105 -52
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +211 -164
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +1 -1
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.json +55 -2
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +235 -170
- package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.dbg.json +4 -0
- package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.json +293 -0
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +102 -64
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +181 -116
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +89 -51
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/product/Product.sol/Product.json +224 -182
- package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +1 -1
- package/artifacts/contracts/product/RiskService.sol/RiskService.json +112 -63
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +80 -38
- 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 +98 -2
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +144 -41
- package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +4 -0
- package/artifacts/contracts/registry/IRelease.sol/IRelease.json +24 -0
- package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
- package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +5 -18
- package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
- package/artifacts/contracts/registry/Registry.sol/Registry.json +142 -38
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +277 -213
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +181 -74
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +67 -33
- package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +4 -0
- package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +1849 -0
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +3 -3
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +337 -65
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +12 -12
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +4 -4
- package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
- package/artifacts/contracts/shared/Component.sol/Component.json +105 -104
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +483 -485
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +99 -73
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +55 -2
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +1 -1
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +454 -5
- package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +4 -0
- package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.json +24 -0
- package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +4 -0
- package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.json +30 -0
- package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.dbg.json +4 -0
- package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.json +40 -0
- package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponent.sol/IComponent.json +92 -86
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +446 -276
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +94 -106
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +16 -0
- 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/IRegisterable.sol/IRegisterable.json +148 -0
- 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 +55 -2
- package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +1 -1
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +107 -124
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +1 -1
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.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 +18 -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/Registerable.sol/Registerable.json +152 -38
- 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 +55 -2
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +327 -73
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +4 -0
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +484 -0
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +88 -24
- package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
- package/artifacts/contracts/staking/IStaking.sol/IStaking.json +113 -136
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +130 -16
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +49 -49
- package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
- package/artifacts/contracts/staking/Staking.sol/Staking.json +203 -206
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +3 -3
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +93 -51
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +6 -57
- package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingService.sol/StakingService.json +181 -55
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +77 -39
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +130 -130
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +23 -23
- package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
- package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
- package/artifacts/contracts/type/Amount.sol/AmountLib.json +3 -3
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
- 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 +3 -3
- 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 +4 -0
- package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +33 -0
- package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/NftId.sol/NftIdLib.json +23 -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 +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/RiskId.sol/RiskIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +62 -5
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +79 -15
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
- package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
- package/artifacts/contracts/type/Selector.sol/SelectorLib.json +21 -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/String.sol/StrLib.dbg.json +1 -1
- 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 +3 -3
- package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
- package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -21
- package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
- package/artifacts/contracts/type/Version.sol/VersionPartLib.json +47 -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 +44 -12
- package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
- package/contracts/accounting/AccountingService.sol +262 -0
- package/contracts/accounting/AccountingServiceManager.sol +38 -0
- package/contracts/accounting/IAccountingService.sol +45 -0
- package/contracts/authorization/AccessAdmin.sol +216 -125
- package/contracts/authorization/AccessManagerCloneable.sol +136 -3
- package/contracts/authorization/Authorization.sol +321 -205
- package/contracts/authorization/IAccess.sol +1 -0
- package/contracts/authorization/IAccessAdmin.sol +14 -8
- package/contracts/authorization/IAuthorization.sol +27 -7
- package/contracts/authorization/IServiceAuthorization.sol +1 -1
- package/contracts/authorization/ServiceAuthorization.sol +4 -4
- package/contracts/distribution/BasicDistribution.sol +15 -12
- package/contracts/distribution/BasicDistributionAuthorization.sol +22 -9
- package/contracts/distribution/Distribution.sol +41 -47
- package/contracts/distribution/DistributionService.sol +100 -78
- package/contracts/distribution/DistributionServiceManager.sol +1 -1
- package/contracts/distribution/IDistributionComponent.sol +1 -1
- package/contracts/distribution/IDistributionService.sol +19 -19
- package/contracts/examples/fire/FirePool.sol +25 -10
- package/contracts/examples/fire/FirePoolAuthorization.sol +2 -1
- package/contracts/examples/fire/FireProduct.sol +40 -13
- package/contracts/examples/fire/FireProductAuthorization.sol +3 -3
- package/contracts/examples/unpermissioned/SimpleDistribution.sol +11 -4
- package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +28 -0
- package/contracts/examples/unpermissioned/SimpleOracle.sol +4 -4
- package/contracts/examples/unpermissioned/SimplePool.sol +37 -7
- package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
- package/contracts/examples/unpermissioned/SimpleProduct.sol +49 -23
- package/contracts/examples/unpermissioned/SimpleProductAuthorization.sol +28 -0
- package/contracts/instance/BundleSet.sol +42 -38
- package/contracts/instance/IInstance.sol +17 -10
- package/contracts/instance/IInstanceService.sol +9 -29
- package/contracts/instance/Instance.sol +52 -34
- package/contracts/instance/InstanceAdmin.sol +249 -100
- package/contracts/instance/InstanceAuthorizationV3.sol +54 -45
- package/contracts/instance/InstanceReader.sol +174 -32
- package/contracts/instance/InstanceService.sol +85 -146
- package/contracts/instance/InstanceServiceManager.sol +1 -1
- package/contracts/instance/InstanceStore.sol +13 -2
- package/contracts/instance/RiskSet.sol +118 -0
- package/contracts/instance/base/ObjectCounter.sol +1 -2
- package/contracts/instance/base/ObjectLifecycle.sol +4 -2
- package/contracts/instance/base/ObjectSet.sol +31 -33
- package/contracts/instance/base/ObjectSetHelperLib.sol +30 -0
- package/contracts/instance/module/IComponents.sol +10 -7
- package/contracts/instance/module/IDistribution.sol +2 -1
- package/contracts/instance/module/IPolicy.sol +2 -1
- package/contracts/instance/module/IRisk.sol +3 -0
- package/contracts/oracle/BasicOracle.sol +0 -1
- package/contracts/oracle/BasicOracleAuthorization.sol +3 -12
- package/contracts/oracle/IOracleService.sol +2 -1
- package/contracts/oracle/Oracle.sol +5 -16
- package/contracts/oracle/OracleService.sol +107 -78
- package/contracts/oracle/OracleServiceManager.sol +1 -1
- package/contracts/pool/BasicPool.sol +33 -24
- package/contracts/pool/BasicPoolAuthorization.sol +27 -9
- package/contracts/pool/BundleService.sol +88 -154
- package/contracts/pool/BundleServiceManager.sol +1 -1
- package/contracts/pool/IBundleService.sol +15 -43
- package/contracts/pool/IPoolComponent.sol +1 -7
- package/contracts/pool/IPoolService.sol +58 -64
- package/contracts/pool/Pool.sol +112 -120
- package/contracts/pool/PoolLib.sol +216 -0
- package/contracts/pool/PoolService.sol +436 -242
- package/contracts/pool/PoolServiceManager.sol +1 -1
- package/contracts/product/ApplicationService.sol +24 -16
- package/contracts/product/ApplicationServiceManager.sol +1 -1
- package/contracts/product/BasicProduct.sol +10 -12
- package/contracts/product/BasicProductAuthorization.sol +24 -11
- package/contracts/product/ClaimService.sol +202 -151
- package/contracts/product/ClaimServiceManager.sol +1 -1
- package/contracts/product/IApplicationService.sol +5 -2
- package/contracts/product/IClaimService.sol +14 -2
- package/contracts/product/IPolicyService.sol +26 -11
- package/contracts/product/IPricingService.sol +9 -9
- package/contracts/product/IProductComponent.sol +10 -1
- package/contracts/product/PolicyService.sol +248 -252
- package/contracts/product/PolicyServiceLib.sol +65 -0
- package/contracts/product/PolicyServiceManager.sol +1 -1
- package/contracts/product/PricingService.sol +30 -26
- package/contracts/product/PricingServiceManager.sol +3 -3
- package/contracts/product/Product.sol +106 -60
- package/contracts/product/RiskService.sol +74 -25
- package/contracts/product/RiskServiceManager.sol +1 -1
- package/contracts/registry/ChainNft.sol +10 -11
- package/contracts/registry/IRegistry.sol +14 -15
- package/contracts/registry/IRegistryService.sol +6 -4
- package/contracts/registry/IRelease.sol +26 -0
- package/contracts/registry/ITransferInterceptor.sol +1 -2
- package/contracts/registry/Registry.sol +29 -6
- package/contracts/registry/RegistryAdmin.sol +132 -226
- package/contracts/registry/RegistryService.sol +40 -58
- package/contracts/registry/RegistryServiceManager.sol +1 -1
- package/contracts/registry/ReleaseAdmin.sol +245 -0
- package/contracts/registry/ReleaseLifecycle.sol +2 -0
- package/contracts/registry/ReleaseRegistry.sol +139 -124
- package/contracts/registry/ServiceAuthorizationV3.sol +97 -48
- package/contracts/registry/TokenRegistry.sol +6 -8
- package/contracts/shared/Component.sol +69 -118
- package/contracts/shared/ComponentService.sol +422 -371
- package/contracts/shared/ComponentServiceManager.sol +1 -1
- package/contracts/shared/ComponentVerifyingService.sol +27 -15
- package/contracts/shared/ContractLib.sol +224 -9
- package/contracts/shared/IComponent.sol +8 -20
- package/contracts/shared/IComponentService.sol +41 -37
- package/contracts/shared/IInstanceLinkedComponent.sol +3 -22
- package/contracts/shared/INftOwnable.sol +2 -0
- package/contracts/shared/IRegisterable.sol +23 -1
- package/contracts/shared/IService.sol +3 -5
- package/contracts/shared/InstanceLinkedComponent.sol +68 -42
- package/contracts/shared/Lifecycle.sol +7 -7
- package/contracts/shared/NftOwnable.sol +26 -6
- package/contracts/shared/PolicyHolder.sol +1 -1
- package/contracts/shared/Registerable.sol +53 -19
- package/contracts/shared/RegistryLinked.sol +7 -13
- package/contracts/shared/Service.sol +9 -31
- package/contracts/shared/TokenHandler.sol +274 -72
- package/contracts/shared/TokenHandlerDeployerLib.sol +10 -2
- package/contracts/staking/IStaking.sol +6 -10
- package/contracts/staking/IStakingService.sol +12 -4
- package/contracts/staking/StakeManagerLib.sol +69 -20
- package/contracts/staking/Staking.sol +73 -41
- package/contracts/staking/StakingReader.sol +1 -16
- package/contracts/staking/StakingService.sol +70 -24
- package/contracts/staking/StakingServiceManager.sol +5 -4
- package/contracts/type/Key32.sol +2 -2
- package/contracts/type/Key32Set.sol +62 -0
- package/contracts/type/NftId.sol +6 -0
- package/contracts/type/ObjectType.sol +48 -21
- package/contracts/type/RiskId.sol +23 -6
- package/contracts/type/RoleId.sol +23 -15
- package/contracts/type/Selector.sol +5 -0
- package/contracts/type/Timestamp.sol +0 -5
- package/contracts/type/UFixed.sol +9 -119
- package/contracts/type/Version.sol +15 -5
- package/contracts/upgradeability/ProxyManager.sol +2 -1
- package/package.json +3 -3
- package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +0 -4
- package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.json +0 -290
- package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +0 -4
- package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +0 -390
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +0 -4
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +0 -129
- package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +0 -4
- package/artifacts/contracts/type/UFixed.sol/MathLib.json +0 -16
- package/contracts/authorization/IModuleAuthorization.sol +0 -21
- package/contracts/authorization/ModuleAuthorization.sol +0 -78
- package/contracts/instance/module/IAccess.sol +0 -46
| @@ -3,77 +3,75 @@ pragma solidity ^0.8.20; | |
| 3 3 |  | 
| 4 4 | 
             
            import {Cloneable} from "./Cloneable.sol";
         | 
| 5 5 |  | 
| 6 | 
            -
            import { | 
| 7 | 
            -
            import {INSTANCE} from "../../type/ObjectType.sol";
         | 
| 8 | 
            -
            import {InstanceReader} from "../InstanceReader.sol";
         | 
| 9 | 
            -
            import {IRegistry} from "../../registry/IRegistry.sol";
         | 
| 10 | 
            -
            import {LibNftIdSet} from "../../type/NftIdSet.sol";
         | 
| 6 | 
            +
            import {LibKey32Set} from "../../type/Key32Set.sol";
         | 
| 11 7 | 
             
            import {NftId} from "../../type/NftId.sol";
         | 
| 8 | 
            +
            import {Key32} from "../../type/Key32.sol";
         | 
| 12 9 |  | 
| 13 10 | 
             
            contract ObjectSet is
         | 
| 14 11 | 
             
                Cloneable
         | 
| 15 12 | 
             
            {
         | 
| 13 | 
            +
                using LibKey32Set for LibKey32Set.Set;
         | 
| 16 14 |  | 
| 17 15 | 
             
                event LogObjectSetInitialized(address instance);
         | 
| 18 16 |  | 
| 19 17 | 
             
                error ErrorObjectSetNftIdInvalid(NftId instanceNftId);
         | 
| 20 18 |  | 
| 21 | 
            -
                mapping(NftId compnentNftId =>  | 
| 22 | 
            -
                mapping(NftId compnentNftId =>  | 
| 23 | 
            -
                 | 
| 19 | 
            +
                mapping(NftId compnentNftId => LibKey32Set.Set objects) internal _activeObjects;
         | 
| 20 | 
            +
                mapping(NftId compnentNftId => LibKey32Set.Set objects) internal _allObjects;
         | 
| 21 | 
            +
                address internal _instanceAddress;
         | 
| 24 22 |  | 
| 25 23 | 
             
                /// @dev This initializer needs to be called from the instance itself.
         | 
| 26 | 
            -
                function initialize() 
         | 
| 24 | 
            +
                function initialize(address authority, address registry) 
         | 
| 27 25 | 
             
                    external
         | 
| 28 26 | 
             
                    initializer()
         | 
| 29 27 | 
             
                {
         | 
| 30 | 
            -
                     | 
| 31 | 
            -
                    __Cloneable_init( | 
| 28 | 
            +
                    _instanceAddress = msg.sender;
         | 
| 29 | 
            +
                    __Cloneable_init(authority, registry);
         | 
| 32 30 |  | 
| 33 | 
            -
                    emit LogObjectSetInitialized(address( | 
| 31 | 
            +
                    emit LogObjectSetInitialized(address(_instanceAddress));
         | 
| 34 32 | 
             
                }
         | 
| 35 33 |  | 
| 36 | 
            -
                function  | 
| 37 | 
            -
                    return  | 
| 34 | 
            +
                function getInstanceAddress() external view returns (address) {
         | 
| 35 | 
            +
                    return _instanceAddress;
         | 
| 38 36 | 
             
                }
         | 
| 39 37 |  | 
| 40 | 
            -
                function _add(NftId componentNftId,  | 
| 41 | 
            -
                     | 
| 42 | 
            -
                     | 
| 38 | 
            +
                function _add(NftId componentNftId, Key32 key) internal {
         | 
| 39 | 
            +
                    LibKey32Set.Set storage allSet = _allObjects[componentNftId];
         | 
| 40 | 
            +
                    LibKey32Set.Set storage activeSet = _activeObjects[componentNftId];
         | 
| 43 41 |  | 
| 44 | 
            -
                     | 
| 45 | 
            -
                     | 
| 42 | 
            +
                    allSet.add(key);
         | 
| 43 | 
            +
                    activeSet.add(key);
         | 
| 46 44 | 
             
                }
         | 
| 47 45 |  | 
| 48 | 
            -
                function _activate(NftId componentNftId,  | 
| 49 | 
            -
                     | 
| 46 | 
            +
                function _activate(NftId componentNftId, Key32 key) internal {
         | 
| 47 | 
            +
                    _activeObjects[componentNftId].add(key);
         | 
| 50 48 | 
             
                }
         | 
| 51 49 |  | 
| 52 | 
            -
                function _deactivate(NftId componentNftId,  | 
| 53 | 
            -
                     | 
| 50 | 
            +
                function _deactivate(NftId componentNftId, Key32 key) internal {
         | 
| 51 | 
            +
                    _activeObjects[componentNftId].remove(key);
         | 
| 54 52 | 
             
                }
         | 
| 55 53 |  | 
| 56 54 | 
             
                function _objects(NftId componentNftId) internal view returns (uint256) {
         | 
| 57 | 
            -
                    return  | 
| 55 | 
            +
                    return _allObjects[componentNftId].size();
         | 
| 58 56 | 
             
                }
         | 
| 59 57 |  | 
| 60 | 
            -
                function _contains(NftId componentNftId,  | 
| 61 | 
            -
                    return  | 
| 58 | 
            +
                function _contains(NftId componentNftId, Key32 key) internal view returns (bool) {
         | 
| 59 | 
            +
                    return _allObjects[componentNftId].contains(key);
         | 
| 62 60 | 
             
                }
         | 
| 63 61 |  | 
| 64 | 
            -
                function _getObject(NftId componentNftId, uint256 idx) internal view returns ( | 
| 65 | 
            -
                    return  | 
| 62 | 
            +
                function _getObject(NftId componentNftId, uint256 idx) internal view returns (Key32) {
         | 
| 63 | 
            +
                    return _allObjects[componentNftId].getElementAt(idx);
         | 
| 66 64 | 
             
                }
         | 
| 67 65 |  | 
| 68 66 | 
             
                function _activeObjs(NftId componentNftId) internal view returns (uint256)  {
         | 
| 69 | 
            -
                    return  | 
| 67 | 
            +
                    return _activeObjects[componentNftId].size();
         | 
| 70 68 | 
             
                }
         | 
| 71 69 |  | 
| 72 | 
            -
                function _isActive(NftId componentNftId,  | 
| 73 | 
            -
                    return  | 
| 70 | 
            +
                function _isActive(NftId componentNftId, Key32 key) internal view returns (bool) {
         | 
| 71 | 
            +
                    return _activeObjects[componentNftId].contains(key);
         | 
| 74 72 | 
             
                }
         | 
| 75 73 |  | 
| 76 | 
            -
                function _getActiveObject(NftId componentNftId, uint256 idx) internal view returns ( | 
| 77 | 
            -
                    return  | 
| 74 | 
            +
                function _getActiveObject(NftId componentNftId, uint256 idx) internal view returns (Key32) {
         | 
| 75 | 
            +
                    return _activeObjects[componentNftId].getElementAt(idx);
         | 
| 78 76 | 
             
                }
         | 
| 79 77 | 
             
            }
         | 
| @@ -0,0 +1,30 @@ | |
| 1 | 
            +
            // SPDX-License-Identifier: Apache-2.0
         | 
| 2 | 
            +
            pragma solidity ^0.8.20;
         | 
| 3 | 
            +
             | 
| 4 | 
            +
            import {IBundle} from "../module/IBundle.sol";
         | 
| 5 | 
            +
            import {IInstance} from "../IInstance.sol";
         | 
| 6 | 
            +
            import {IRisk} from "../module/IRisk.sol";
         | 
| 7 | 
            +
            import {NftId} from "../../type/NftId.sol";
         | 
| 8 | 
            +
            import {RiskId} from "../../type/RiskId.sol";
         | 
| 9 | 
            +
             | 
| 10 | 
            +
             | 
| 11 | 
            +
            library ObjectSetHelperLib {
         | 
| 12 | 
            +
             | 
| 13 | 
            +
                function getRiskInfo(address instanceAddress, RiskId riskId) public view returns (IRisk.RiskInfo memory) {
         | 
| 14 | 
            +
             | 
| 15 | 
            +
                    return IInstance(instanceAddress).getInstanceReader().getRiskInfo(riskId);
         | 
| 16 | 
            +
                }
         | 
| 17 | 
            +
             | 
| 18 | 
            +
                function getProductNftId(address instanceAddress, RiskId riskId) public view returns (NftId) {
         | 
| 19 | 
            +
                    return getRiskInfo(instanceAddress, riskId).productNftId;
         | 
| 20 | 
            +
                }
         | 
| 21 | 
            +
             | 
| 22 | 
            +
                function getBundleInfo(address instanceAddress, NftId bundleNftId) public view returns (IBundle.BundleInfo memory) {
         | 
| 23 | 
            +
                    return IInstance(instanceAddress).getInstanceReader().getBundleInfo(bundleNftId);
         | 
| 24 | 
            +
                }
         | 
| 25 | 
            +
             | 
| 26 | 
            +
                function getPoolNftId(address instanceAddress, NftId bundleNftId) public view returns (NftId) {
         | 
| 27 | 
            +
                    return getBundleInfo(instanceAddress, bundleNftId).poolNftId;
         | 
| 28 | 
            +
                }
         | 
| 29 | 
            +
             | 
| 30 | 
            +
            }
         | 
| @@ -6,7 +6,6 @@ import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IER | |
| 6 6 | 
             
            import {Amount} from "../../type/Amount.sol";
         | 
| 7 7 | 
             
            import {Fee} from "../../type/Fee.sol";
         | 
| 8 8 | 
             
            import {NftId} from "../../type/NftId.sol";
         | 
| 9 | 
            -
            import {RoleId} from "../../type/RoleId.sol";
         | 
| 10 9 | 
             
            import {TokenHandler} from "../../shared/TokenHandler.sol";
         | 
| 11 10 | 
             
            import {UFixed} from "../../type/UFixed.sol";
         | 
| 12 11 |  | 
| @@ -14,17 +13,23 @@ interface IComponents { | |
| 14 13 |  | 
| 15 14 | 
             
                struct ComponentInfo {
         | 
| 16 15 | 
             
                    string name; // component name (needs to be unique per instance)
         | 
| 17 | 
            -
                    NftId productNftId;
         | 
| 18 16 | 
             
                    IERC20Metadata token;
         | 
| 19 17 | 
             
                    TokenHandler tokenHandler;
         | 
| 20 | 
            -
                    address wallet;
         | 
| 21 18 | 
             
                    bytes data; // will hold component type specific additional info (eg encoded pool info)
         | 
| 22 19 | 
             
                }
         | 
| 23 20 |  | 
| 24 21 | 
             
                struct ProductInfo {
         | 
| 25 | 
            -
                    NftId distributionNftId;
         | 
| 26 | 
            -
                    NftId poolNftId;
         | 
| 27 22 | 
             
                    bool isProcessingFundedClaims; // custom logic to react to pool events for funded claims
         | 
| 23 | 
            +
                    bool isInterceptingPolicyTransfers; // custom logic for policy nft transfers
         | 
| 24 | 
            +
                    bool hasDistribution; // flag to indicate if distribution is enabled
         | 
| 25 | 
            +
                    uint8 expectedNumberOfOracles; // expected number of oracles
         | 
| 26 | 
            +
                    uint8 numberOfOracles; // actual number of oracles
         | 
| 27 | 
            +
                    NftId poolNftId; // mandatory
         | 
| 28 | 
            +
                    NftId distributionNftId; // 0..1 (optional)
         | 
| 29 | 
            +
                    NftId [] oracleNftId; // 0..n (optional)
         | 
| 30 | 
            +
                }
         | 
| 31 | 
            +
             | 
| 32 | 
            +
                struct FeeInfo {
         | 
| 28 33 | 
             
                    Fee productFee; // product fee on net premium
         | 
| 29 34 | 
             
                    Fee processingFee; // product fee on payout amounts        
         | 
| 30 35 | 
             
                    Fee distributionFee; // distribution fee for sales that do not include commissions
         | 
| @@ -34,10 +39,8 @@ interface IComponents { | |
| 34 39 | 
             
                    Fee performanceFee; // pool fee on profits from capital investors
         | 
| 35 40 | 
             
                }
         | 
| 36 41 |  | 
| 37 | 
            -
             | 
| 38 42 | 
             
                struct PoolInfo {
         | 
| 39 43 | 
             
                    Amount maxBalanceAmount; // max balance amount allowed for pool
         | 
| 40 | 
            -
                    RoleId bundleOwnerRole; // the required role for bundle owners
         | 
| 41 44 | 
             
                    bool isInterceptingBundleTransfers; // custom logic for bundle nft transfers
         | 
| 42 45 | 
             
                    bool isProcessingConfirmedClaims; // custom logic for claims confirmation
         | 
| 43 46 | 
             
                    bool isExternallyManaged; // funding bundles is restricted to book keeping, actual funds may be provided as needed to support payouts
         | 
| @@ -4,6 +4,7 @@ pragma solidity ^0.8.20; | |
| 4 4 | 
             
            import {Amount} from "../../type/Amount.sol";
         | 
| 5 5 | 
             
            import {DistributorType} from "../../type/DistributorType.sol";
         | 
| 6 6 | 
             
            import {NftId} from "../../type/NftId.sol";
         | 
| 7 | 
            +
            import {Seconds} from "../../type/Seconds.sol";
         | 
| 7 8 | 
             
            import {Timestamp} from "../../type/Timestamp.sol";
         | 
| 8 9 | 
             
            import {UFixed} from "../../type/UFixed.sol";
         | 
| 9 10 |  | 
| @@ -15,7 +16,7 @@ interface IDistribution { | |
| 15 16 | 
             
                    UFixed maxDiscountPercentage;
         | 
| 16 17 | 
             
                    UFixed commissionPercentage;
         | 
| 17 18 | 
             
                    uint32 maxReferralCount;
         | 
| 18 | 
            -
                     | 
| 19 | 
            +
                    Seconds maxReferralLifetime;
         | 
| 19 20 | 
             
                    bool allowSelfReferrals;
         | 
| 20 21 | 
             
                    bool allowRenewals;
         | 
| 21 22 | 
             
                    bytes data;
         | 
| @@ -43,6 +43,7 @@ interface IPolicy { | |
| 43 43 |  | 
| 44 44 | 
             
                /// @dev policy data for the full policy lifecycle
         | 
| 45 45 | 
             
                struct PolicyInfo {
         | 
| 46 | 
            +
                    // application data, no changes after applying for a policy
         | 
| 46 47 | 
             
                    NftId productNftId;
         | 
| 47 48 | 
             
                    NftId bundleNftId;
         | 
| 48 49 | 
             
                    ReferralId referralId;
         | 
| @@ -50,8 +51,8 @@ interface IPolicy { | |
| 50 51 | 
             
                    Amount sumInsuredAmount;
         | 
| 51 52 | 
             
                    Amount premiumAmount; // expected premium at application time
         | 
| 52 53 | 
             
                    Seconds lifetime;
         | 
| 53 | 
            -
                    // policy application data, no changes after applying for a policy
         | 
| 54 54 | 
             
                    bytes applicationData;
         | 
| 55 | 
            +
                    // policy data that may change during the lifecycle
         | 
| 55 56 | 
             
                    bytes processData;
         | 
| 56 57 | 
             
                    uint16 claimsCount;
         | 
| 57 58 | 
             
                    uint16 openClaimsCount;
         | 
| @@ -15,18 +15,9 @@ contract BasicOracleAuthorization | |
| 15 15 | 
             
            {
         | 
| 16 16 |  | 
| 17 17 | 
             
                 constructor(string memory componentName)
         | 
| 18 | 
            -
                      Authorization(componentName)
         | 
| 18 | 
            +
                      Authorization(componentName, ORACLE())
         | 
| 19 19 | 
             
                 {}
         | 
| 20 20 |  | 
| 21 | 
            -
                 function _setupTargets()
         | 
| 22 | 
            -
                      internal
         | 
| 23 | 
            -
                      virtual override
         | 
| 24 | 
            -
                 {
         | 
| 25 | 
            -
                      // basic component target
         | 
| 26 | 
            -
                      _addComponentTargetWithRole(ORACLE()); 
         | 
| 27 | 
            -
                 }
         | 
| 28 | 
            -
             | 
| 29 | 
            -
             | 
| 30 21 | 
             
                 function _setupTargetAuthorizations()
         | 
| 31 22 | 
             
                      internal
         | 
| 32 23 | 
             
                      virtual override
         | 
| @@ -34,12 +25,12 @@ contract BasicOracleAuthorization | |
| 34 25 | 
             
                      IAccess.FunctionInfo[] storage functions;
         | 
| 35 26 |  | 
| 36 27 | 
             
                      // authorize public role (open access to any account, only allows to lock target)
         | 
| 37 | 
            -
                      functions = _authorizeForTarget( | 
| 28 | 
            +
                      functions = _authorizeForTarget(getMainTargetName(), getServiceRole(ORACLE()));
         | 
| 38 29 | 
             
                      _authorize(functions, IOracle.request.selector, "request");
         | 
| 39 30 | 
             
                      _authorize(functions, IOracle.cancel.selector, "cancel");
         | 
| 40 31 |  | 
| 41 32 | 
             
                      // authorize public role (open access to any account, only allows to lock target)
         | 
| 42 | 
            -
                      functions = _authorizeForTarget( | 
| 33 | 
            +
                      functions = _authorizeForTarget(getMainTargetName(), PUBLIC_ROLE());
         | 
| 43 34 | 
             
                      _authorize(functions, BasicOracle.respond.selector, "respond");
         | 
| 44 35 | 
             
                 }
         | 
| 45 36 | 
             
            }
         | 
| @@ -3,6 +3,7 @@ pragma solidity ^0.8.20; | |
| 3 3 |  | 
| 4 4 | 
             
            import {IService} from "../shared/IService.sol";
         | 
| 5 5 | 
             
            import {NftId} from "../type/NftId.sol";
         | 
| 6 | 
            +
            import {ObjectType} from "../type/ObjectType.sol";
         | 
| 6 7 | 
             
            import {RequestId} from "../type/RequestId.sol";
         | 
| 7 8 | 
             
            import {StateId} from "../type/StateId.sol";
         | 
| 8 9 | 
             
            import {Timestamp} from "../type/Timestamp.sol";
         | 
| @@ -17,7 +18,7 @@ interface IOracleService is IService { | |
| 17 18 | 
             
                event LogOracleServiceRequestCancelled(RequestId requestId, NftId requesterNftId);
         | 
| 18 19 |  | 
| 19 20 | 
             
                // create request
         | 
| 20 | 
            -
                error  | 
| 21 | 
            +
                error ErrorOracleServiceProductMismatch(ObjectType callerObjectType, NftId productNft, NftId oracleParentNftId);
         | 
| 21 22 | 
             
                error ErrorOracleServiceExpiryInThePast(Timestamp blockTimestamp, Timestamp expiryAt);
         | 
| 22 23 | 
             
                error ErrorOracleServiceCallbackMethodNameEmpty();
         | 
| 23 24 |  | 
| @@ -2,7 +2,7 @@ | |
| 2 2 | 
             
            pragma solidity ^0.8.20;
         | 
| 3 3 |  | 
| 4 4 | 
             
            import {Amount} from "../type/Amount.sol";
         | 
| 5 | 
            -
            import {COMPONENT, ORACLE} from "../type/ObjectType.sol";
         | 
| 5 | 
            +
            import {COMPONENT, PRODUCT, ORACLE} from "../type/ObjectType.sol";
         | 
| 6 6 | 
             
            import {IAuthorization} from "../authorization/IAuthorization.sol";
         | 
| 7 7 | 
             
            import {IComponentService} from "../shared/IComponentService.sol";
         | 
| 8 8 | 
             
            import {IInstanceLinkedComponent} from "../shared/IInstanceLinkedComponent.sol";
         | 
| @@ -27,15 +27,6 @@ abstract contract Oracle is | |
| 27 27 | 
             
                }
         | 
| 28 28 |  | 
| 29 29 |  | 
| 30 | 
            -
                function register()
         | 
| 31 | 
            -
                    external
         | 
| 32 | 
            -
                    virtual
         | 
| 33 | 
            -
                    onlyOwner()
         | 
| 34 | 
            -
                {
         | 
| 35 | 
            -
                    _getOracleStorage()._componentService.registerOracle();
         | 
| 36 | 
            -
                }
         | 
| 37 | 
            -
             | 
| 38 | 
            -
             | 
| 39 30 | 
             
                function request(
         | 
| 40 31 | 
             
                    RequestId requestId,
         | 
| 41 32 | 
             
                    NftId requesterId,
         | 
| @@ -78,7 +69,7 @@ abstract contract Oracle is | |
| 78 69 | 
             
                    override(IInstanceLinkedComponent, InstanceLinkedComponent)
         | 
| 79 70 | 
             
                    onlyOwner()
         | 
| 80 71 | 
             
                    restricted()
         | 
| 81 | 
            -
                    returns (Amount | 
| 72 | 
            +
                    returns (Amount)
         | 
| 82 73 | 
             
                {
         | 
| 83 74 | 
             
                    revert ErrorOracleNotImplemented("withdrawFees");
         | 
| 84 75 | 
             
                }
         | 
| @@ -86,12 +77,11 @@ abstract contract Oracle is | |
| 86 77 |  | 
| 87 78 | 
             
                function _initializeOracle(
         | 
| 88 79 | 
             
                    address registry,
         | 
| 89 | 
            -
                    NftId  | 
| 80 | 
            +
                    NftId productNftId,
         | 
| 90 81 | 
             
                    IAuthorization authorization,
         | 
| 91 82 | 
             
                    address initialOwner,
         | 
| 92 83 | 
             
                    string memory name,
         | 
| 93 84 | 
             
                    address token,
         | 
| 94 | 
            -
                    bytes memory registryData, // writeonly data that will saved in the object info record of the registry
         | 
| 95 85 | 
             
                    bytes memory componentData // component specifidc data 
         | 
| 96 86 | 
             
                )
         | 
| 97 87 | 
             
                    internal
         | 
| @@ -100,19 +90,18 @@ abstract contract Oracle is | |
| 100 90 | 
             
                {
         | 
| 101 91 | 
             
                    _initializeInstanceLinkedComponent(
         | 
| 102 92 | 
             
                        registry, 
         | 
| 103 | 
            -
                         | 
| 93 | 
            +
                        productNftId, 
         | 
| 104 94 | 
             
                        name, 
         | 
| 105 95 | 
             
                        token, 
         | 
| 106 96 | 
             
                        ORACLE(), 
         | 
| 107 97 | 
             
                        authorization,
         | 
| 108 98 | 
             
                        true, 
         | 
| 109 99 | 
             
                        initialOwner, 
         | 
| 110 | 
            -
                        registryData, 
         | 
| 111 100 | 
             
                        componentData);
         | 
| 112 101 |  | 
| 113 102 | 
             
                    OracleStorage storage $ = _getOracleStorage();
         | 
| 114 | 
            -
                    $._oracleService = IOracleService(_getServiceAddress(ORACLE())); 
         | 
| 115 103 | 
             
                    $._componentService = IComponentService(_getServiceAddress(COMPONENT())); 
         | 
| 104 | 
            +
                    $._oracleService = IOracleService(_getServiceAddress(ORACLE())); 
         | 
| 116 105 |  | 
| 117 106 | 
             
                    _registerInterface(type(IOracleComponent).interfaceId);
         | 
| 118 107 | 
             
                }
         | 
| @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            // SPDX-License-Identifier: Apache-2.0
         | 
| 2 2 | 
             
            pragma solidity ^0.8.20;
         | 
| 3 3 |  | 
| 4 | 
            -
            import { | 
| 4 | 
            +
            import {ContractLib} from "../shared/ContractLib.sol";
         | 
| 5 5 | 
             
            import {IComponent} from "../shared/IComponent.sol";
         | 
| 6 6 | 
             
            import {IInstance} from "../instance/IInstance.sol";
         | 
| 7 7 | 
             
            import {IInstanceService} from "../instance/IInstanceService.sol";
         | 
| @@ -11,14 +11,15 @@ import {IOracleComponent} from "./IOracleComponent.sol"; | |
| 11 11 | 
             
            import {IOracleService} from "./IOracleService.sol";
         | 
| 12 12 | 
             
            import {IRegistry} from "../registry/IRegistry.sol";
         | 
| 13 13 | 
             
            import {NftId} from "../type/NftId.sol";
         | 
| 14 | 
            -
            import {ObjectType, COMPONENT, ORACLE,  | 
| 14 | 
            +
            import {ObjectType, COMPONENT, ORACLE, PRODUCT} from "../type/ObjectType.sol";
         | 
| 15 15 | 
             
            import {RequestId} from "../type/RequestId.sol";
         | 
| 16 | 
            +
            import {Service} from "../shared/Service.sol";
         | 
| 16 17 | 
             
            import {StateId, ACTIVE, KEEP_STATE, FULFILLED, FAILED, CANCELLED} from "../type/StateId.sol";
         | 
| 17 18 | 
             
            import {Timestamp, TimestampLib} from "../type/Timestamp.sol";
         | 
| 18 19 |  | 
| 19 20 |  | 
| 20 21 | 
             
            contract OracleService is
         | 
| 21 | 
            -
                 | 
| 22 | 
            +
                Service,
         | 
| 22 23 | 
             
                IOracleService
         | 
| 23 24 | 
             
            {
         | 
| 24 25 |  | 
| @@ -31,11 +32,11 @@ contract OracleService is | |
| 31 32 | 
             
                    initializer()
         | 
| 32 33 | 
             
                {
         | 
| 33 34 | 
             
                    (
         | 
| 34 | 
            -
                        address  | 
| 35 | 
            -
                        address  | 
| 35 | 
            +
                        address authority,
         | 
| 36 | 
            +
                        address registry
         | 
| 36 37 | 
             
                    ) = abi.decode(data, (address, address));
         | 
| 37 38 |  | 
| 38 | 
            -
                     | 
| 39 | 
            +
                    __Service_init(authority, registry, owner);
         | 
| 39 40 | 
             
                    _registerInterface(type(IOracleService).interfaceId);
         | 
| 40 41 | 
             
                }
         | 
| 41 42 |  | 
| @@ -48,63 +49,50 @@ contract OracleService is | |
| 48 49 | 
             
                    external 
         | 
| 49 50 | 
             
                    virtual 
         | 
| 50 51 | 
             
                    // restricted() // add authz
         | 
| 51 | 
            -
                     | 
| 52 | 
            -
             | 
| 53 | 
            -
                    ) 
         | 
| 52 | 
            +
                    onlyNftOfType(oracleNftId, ORACLE())
         | 
| 53 | 
            +
                    returns (RequestId requestId) 
         | 
| 54 54 | 
             
                {
         | 
| 55 | 
            +
                    // checks
         | 
| 56 | 
            +
                    // get and check active caller
         | 
| 55 57 | 
             
                    (
         | 
| 56 | 
            -
                         | 
| 57 | 
            -
                         | 
| 58 | 
            -
             | 
| 59 | 
            -
             | 
| 58 | 
            +
                        IRegistry.ObjectInfo memory requesterInfo, 
         | 
| 59 | 
            +
                        address instance
         | 
| 60 | 
            +
                    ) = ContractLib.getAndVerifyAnyComponent(
         | 
| 61 | 
            +
                        getRegistry(), msg.sender, true);
         | 
| 60 62 |  | 
| 61 | 
            -
                    // oracleNftId exists and is active oracle
         | 
| 62 63 | 
             
                    (
         | 
| 63 | 
            -
                         | 
| 64 | 
            -
             | 
| 65 | 
            -
             | 
| 66 | 
            -
                         | 
| 67 | 
            -
             | 
| 68 | 
            -
             | 
| 69 | 
            -
                     | 
| 70 | 
            -
             | 
| 71 | 
            -
             | 
| 72 | 
            -
             | 
| 73 | 
            -
             | 
| 74 | 
            -
             | 
| 75 | 
            -
             | 
| 76 | 
            -
             | 
| 77 | 
            -
             | 
| 78 | 
            -
             | 
| 79 | 
            -
             | 
| 80 | 
            -
             | 
| 81 | 
            -
             | 
| 82 | 
            -
                         | 
| 64 | 
            +
                        NftId requesterNftId,
         | 
| 65 | 
            +
                        IOracleComponent oracle
         | 
| 66 | 
            +
                    ) = _checkRequestParams(
         | 
| 67 | 
            +
                        getRegistry(), oracleNftId, requesterInfo, expiryAt, callbackMethodName);
         | 
| 68 | 
            +
             | 
| 69 | 
            +
                    // effects
         | 
| 70 | 
            +
                    {
         | 
| 71 | 
            +
                        // create request info
         | 
| 72 | 
            +
                        IOracle.RequestInfo memory request = IOracle.RequestInfo({
         | 
| 73 | 
            +
                            requesterNftId: requesterNftId,
         | 
| 74 | 
            +
                            callbackMethodName: callbackMethodName,
         | 
| 75 | 
            +
                            oracleNftId: oracleNftId,
         | 
| 76 | 
            +
                            requestData: requestData,
         | 
| 77 | 
            +
                            responseData: "",
         | 
| 78 | 
            +
                            respondedAt: TimestampLib.zero(),
         | 
| 79 | 
            +
                            expiredAt: expiryAt,
         | 
| 80 | 
            +
                            isCancelled: false
         | 
| 81 | 
            +
                        });
         | 
| 82 | 
            +
             | 
| 83 | 
            +
                        // store request with instance
         | 
| 84 | 
            +
                        requestId = IInstance(instance).getInstanceStore().createRequest(request);
         | 
| 83 85 | 
             
                    }
         | 
| 84 86 |  | 
| 85 | 
            -
                     | 
| 86 | 
            -
                    IOracle.RequestInfo memory request = IOracle.RequestInfo({
         | 
| 87 | 
            -
                        requesterNftId: componentNftId,
         | 
| 88 | 
            -
                        callbackMethodName: callbackMethodName,
         | 
| 89 | 
            -
                        oracleNftId: oracleNftId,
         | 
| 90 | 
            -
                        requestData: requestData,
         | 
| 91 | 
            -
                        responseData: "",
         | 
| 92 | 
            -
                        respondedAt: TimestampLib.zero(),
         | 
| 93 | 
            -
                        expiredAt: expiryAt,
         | 
| 94 | 
            -
                        isCancelled: false
         | 
| 95 | 
            -
                    });
         | 
| 96 | 
            -
             | 
| 97 | 
            -
                    // store request with instance
         | 
| 98 | 
            -
                    requestId = instance.getInstanceStore().createRequest(request);
         | 
| 87 | 
            +
                    emit LogOracleServiceRequestCreated(requestId, requesterNftId, oracleNftId, expiryAt);
         | 
| 99 88 |  | 
| 100 | 
            -
                    //  | 
| 101 | 
            -
                     | 
| 89 | 
            +
                    // interactions
         | 
| 90 | 
            +
                    // callback to oracle component
         | 
| 91 | 
            +
                    oracle.request(
         | 
| 102 92 | 
             
                        requestId, 
         | 
| 103 | 
            -
                         | 
| 93 | 
            +
                        requesterNftId, 
         | 
| 104 94 | 
             
                        requestData, 
         | 
| 105 95 | 
             
                        expiryAt);
         | 
| 106 | 
            -
             | 
| 107 | 
            -
                    emit LogOracleServiceRequestCreated(requestId, componentNftId, oracleNftId, expiryAt);
         | 
| 108 96 | 
             
                }
         | 
| 109 97 |  | 
| 110 98 |  | 
| @@ -120,11 +108,13 @@ contract OracleService is | |
| 120 108 | 
             
                    returns (bool success)
         | 
| 121 109 | 
             
                {
         | 
| 122 110 | 
             
                    (
         | 
| 123 | 
            -
                         | 
| 124 | 
            -
                         | 
| 125 | 
            -
             | 
| 126 | 
            -
             | 
| 111 | 
            +
                        IRegistry.ObjectInfo memory info, 
         | 
| 112 | 
            +
                        address instanceAddress
         | 
| 113 | 
            +
                    ) = ContractLib.getAndVerifyComponent(
         | 
| 114 | 
            +
                        getRegistry(), msg.sender, ORACLE(), true);
         | 
| 127 115 |  | 
| 116 | 
            +
                    NftId oracleNftId = info.nftId;
         | 
| 117 | 
            +
                    IInstance instance = IInstance(instanceAddress);
         | 
| 128 118 | 
             
                    bool callerIsOracle = true;
         | 
| 129 119 | 
             
                    IOracle.RequestInfo memory request = _checkAndGetRequestInfo(instance, requestId, oracleNftId, callerIsOracle);
         | 
| 130 120 | 
             
                    request.responseData = responseData;
         | 
| @@ -166,11 +156,13 @@ contract OracleService is | |
| 166 156 | 
             
                    // restricted() // add authz
         | 
| 167 157 | 
             
                {
         | 
| 168 158 | 
             
                    (
         | 
| 169 | 
            -
                         | 
| 170 | 
            -
                         | 
| 171 | 
            -
             | 
| 172 | 
            -
             | 
| 159 | 
            +
                        IRegistry.ObjectInfo memory info, 
         | 
| 160 | 
            +
                        address instanceAddress
         | 
| 161 | 
            +
                    ) = ContractLib.getAndVerifyAnyComponent(
         | 
| 162 | 
            +
                        getRegistry(), msg.sender, true);
         | 
| 173 163 |  | 
| 164 | 
            +
                    NftId requesterNftId = info.nftId;
         | 
| 165 | 
            +
                    IInstance instance = IInstance(instanceAddress);
         | 
| 174 166 | 
             
                    bool callerIsOracle = false;
         | 
| 175 167 | 
             
                    IOracle.RequestInfo memory request = _checkAndGetRequestInfo(instance, requestId, requesterNftId, callerIsOracle);
         | 
| 176 168 |  | 
| @@ -181,7 +173,7 @@ contract OracleService is | |
| 181 173 | 
             
                            "(uint64,bytes)"
         | 
| 182 174 | 
             
                        ));
         | 
| 183 175 |  | 
| 184 | 
            -
                    (bool success, bytes memory returnData) =  | 
| 176 | 
            +
                    (bool success, bytes memory returnData) = info.objectAddress.call(
         | 
| 185 177 | 
             
                        abi.encodeWithSignature(
         | 
| 186 178 | 
             
                            functionSignature, 
         | 
| 187 179 | 
             
                            requestId,
         | 
| @@ -192,7 +184,7 @@ contract OracleService is | |
| 192 184 | 
             
                        instance.getInstanceStore().updateRequestState(requestId, FULFILLED());
         | 
| 193 185 | 
             
                        emit LogOracleServiceResponseResent(requestId, requesterNftId);
         | 
| 194 186 | 
             
                    } else {
         | 
| 195 | 
            -
                        emit LogOracleServiceDeliveryFailed(requestId,  | 
| 187 | 
            +
                        emit LogOracleServiceDeliveryFailed(requestId, info.objectAddress, functionSignature);
         | 
| 196 188 | 
             
                    }
         | 
| 197 189 | 
             
                }
         | 
| 198 190 |  | 
| @@ -203,11 +195,13 @@ contract OracleService is | |
| 203 195 | 
             
                    // restricted() // add authz
         | 
| 204 196 | 
             
                {
         | 
| 205 197 | 
             
                    (
         | 
| 206 | 
            -
                         | 
| 207 | 
            -
                         | 
| 208 | 
            -
             | 
| 209 | 
            -
             | 
| 198 | 
            +
                        IRegistry.ObjectInfo memory info, 
         | 
| 199 | 
            +
                        address instanceAddress
         | 
| 200 | 
            +
                    ) = ContractLib.getAndVerifyAnyComponent(
         | 
| 201 | 
            +
                        getRegistry(), msg.sender, true);
         | 
| 210 202 |  | 
| 203 | 
            +
                    NftId requesterNftId = info.nftId;
         | 
| 204 | 
            +
                    IInstance instance = IInstance(instanceAddress);
         | 
| 211 205 | 
             
                    bool callerIsOracle = false;
         | 
| 212 206 | 
             
                    // TODO property isCancelled and state update to CANCELLED are redundant, get rid of isCancelled
         | 
| 213 207 | 
             
                    IOracle.RequestInfo memory request = _checkAndGetRequestInfo(instance, requestId, requesterNftId, callerIsOracle);
         | 
| @@ -224,6 +218,52 @@ contract OracleService is | |
| 224 218 | 
             
                }
         | 
| 225 219 |  | 
| 226 220 |  | 
| 221 | 
            +
                function _checkRequestParams(
         | 
| 222 | 
            +
                    IRegistry registry,
         | 
| 223 | 
            +
                    NftId oracleNftId,
         | 
| 224 | 
            +
                    IRegistry.ObjectInfo memory requesterInfo,
         | 
| 225 | 
            +
                    Timestamp expiryAt,
         | 
| 226 | 
            +
                    string memory callbackMethodName
         | 
| 227 | 
            +
                )
         | 
| 228 | 
            +
                    internal
         | 
| 229 | 
            +
                    virtual
         | 
| 230 | 
            +
                    view
         | 
| 231 | 
            +
                    returns (
         | 
| 232 | 
            +
                        NftId requesterNftId,
         | 
| 233 | 
            +
                        IOracleComponent oracle
         | 
| 234 | 
            +
                    )
         | 
| 235 | 
            +
                {
         | 
| 236 | 
            +
                    // get oracle info
         | 
| 237 | 
            +
                    (IRegistry.ObjectInfo memory oracleInfo,) = ContractLib.getInfoAndInstance(
         | 
| 238 | 
            +
                        registry, oracleNftId, true);
         | 
| 239 | 
            +
             | 
| 240 | 
            +
                    // obtain return values
         | 
| 241 | 
            +
                    requesterNftId = requesterInfo.nftId;
         | 
| 242 | 
            +
                    oracle = IOracleComponent(oracleInfo.objectAddress);
         | 
| 243 | 
            +
             | 
| 244 | 
            +
                    // check that requester and oracle share same product cluster
         | 
| 245 | 
            +
                    if (requesterInfo.objectType == PRODUCT()) {
         | 
| 246 | 
            +
                        if (oracleInfo.parentNftId != requesterNftId) {
         | 
| 247 | 
            +
                            revert ErrorOracleServiceProductMismatch(requesterInfo.objectType, requesterNftId, oracleInfo.parentNftId);
         | 
| 248 | 
            +
                        }
         | 
| 249 | 
            +
                    } else {
         | 
| 250 | 
            +
                        if (oracleInfo.parentNftId != requesterInfo.parentNftId) {
         | 
| 251 | 
            +
                            revert ErrorOracleServiceProductMismatch(requesterInfo.objectType, requesterInfo.parentNftId, oracleInfo.parentNftId);
         | 
| 252 | 
            +
                        }
         | 
| 253 | 
            +
                    }
         | 
| 254 | 
            +
             | 
| 255 | 
            +
                    // check expiriyAt >= now
         | 
| 256 | 
            +
                    if (expiryAt < TimestampLib.blockTimestamp()) {
         | 
| 257 | 
            +
                        revert ErrorOracleServiceExpiryInThePast(TimestampLib.blockTimestamp(), expiryAt);
         | 
| 258 | 
            +
                    }
         | 
| 259 | 
            +
             | 
| 260 | 
            +
                    // check callbackMethodName.length > 0
         | 
| 261 | 
            +
                    if (bytes(callbackMethodName).length == 0) {
         | 
| 262 | 
            +
                        revert ErrorOracleServiceCallbackMethodNameEmpty();
         | 
| 263 | 
            +
                    }
         | 
| 264 | 
            +
                }
         | 
| 265 | 
            +
             | 
| 266 | 
            +
             | 
| 227 267 | 
             
                function _checkAndGetRequestInfo(
         | 
| 228 268 | 
             
                    IInstance instance,
         | 
| 229 269 | 
             
                    RequestId requestId,
         | 
| @@ -264,17 +304,6 @@ contract OracleService is | |
| 264 304 | 
             
                }
         | 
| 265 305 |  | 
| 266 306 |  | 
| 267 | 
            -
                function _getInstanceForComponent(NftId componentNftId)
         | 
| 268 | 
            -
                    internal
         | 
| 269 | 
            -
                    view
         | 
| 270 | 
            -
                    returns(IInstance instance)
         | 
| 271 | 
            -
                {
         | 
| 272 | 
            -
                    NftId instanceNftId = getRegistry().getObjectInfo(componentNftId).parentNftId;
         | 
| 273 | 
            -
                    address instanceAddress = getRegistry().getObjectAddress(instanceNftId);
         | 
| 274 | 
            -
                    return IInstance(instanceAddress);
         | 
| 275 | 
            -
                }
         | 
| 276 | 
            -
             | 
| 277 | 
            -
             | 
| 278 307 | 
             
                function _getDomain() internal pure override returns(ObjectType) {
         | 
| 279 308 | 
             
                    return ORACLE();
         | 
| 280 309 | 
             
                }
         | 
| @@ -17,7 +17,7 @@ contract OracleServiceManager is ProxyManager { | |
| 17 17 | 
             
                ) 
         | 
| 18 18 | 
             
                {
         | 
| 19 19 | 
             
                    OracleService svc = new OracleService{salt: salt}();
         | 
| 20 | 
            -
                    bytes memory data = abi.encode( | 
| 20 | 
            +
                    bytes memory data = abi.encode(authority, registry);
         | 
| 21 21 | 
             
                    IVersionable versionable = initialize(
         | 
| 22 22 | 
             
                        registry,
         | 
| 23 23 | 
             
                        address(svc), 
         |