@etherisc/gif-next 0.0.2-f12cf4d-104 → 0.0.2-f13fd28-503
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 +23 -1
- 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 +148 -62
- 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 +149 -21
- 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 +82 -12
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +68 -13
- 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 +100 -102
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +152 -33
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +51 -53
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +140 -110
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +46 -48
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +38 -40
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +50 -3
- 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 +102 -56
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +127 -40
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +260 -199
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +152 -33
- 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 +140 -91
- 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 +95 -77
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +111 -62
- 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 +306 -161
- 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 +118 -39
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +75 -18
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +150 -59
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +362 -99
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +140 -40
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +549 -218
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +87 -73
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +20 -22
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +403 -353
- 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 +2 -2
- 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 +68 -70
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +126 -35
- 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 +38 -40
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +27 -3
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +52 -54
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +98 -83
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +40 -22
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +51 -53
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +127 -40
- package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +102 -310
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +33 -83
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +38 -122
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +38 -40
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +120 -175
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +51 -53
- 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 +241 -302
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +67 -45
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +91 -65
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +16 -22
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +157 -144
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +152 -33
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +244 -187
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +55 -65
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +61 -10
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +142 -20
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +105 -55
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +27 -3
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +144 -131
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +1 -1
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.json +27 -3
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +198 -181
- 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 +51 -45
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +85 -78
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +31 -33
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/product/Product.sol/Product.json +157 -144
- package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +1 -1
- package/artifacts/contracts/product/RiskService.sol/RiskService.json +76 -77
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +25 -19
- 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 +26 -2
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +31 -7
- 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/Registry.sol/Registry.dbg.json +1 -1
- package/artifacts/contracts/registry/Registry.sol/Registry.json +64 -40
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +250 -221
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +51 -44
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +11 -13
- 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 +2 -2
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +316 -50
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +6 -6
- 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 +51 -39
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +200 -472
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +50 -64
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +27 -16
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +1 -1
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +435 -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 +38 -26
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +106 -305
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +38 -40
- 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/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 +120 -1
- package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
- package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
- package/artifacts/contracts/shared/IService.sol/IService.json +27 -3
- 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 +51 -53
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
- 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/Registerable.sol/Registerable.json +118 -62
- 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 +27 -16
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +63 -162
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +118 -29
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +32 -32
- package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
- package/artifacts/contracts/staking/IStaking.sol/IStaking.json +41 -29
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +98 -3
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +49 -33
- package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
- package/artifacts/contracts/staking/Staking.sol/Staking.json +101 -60
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +2 -2
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +31 -19
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +4 -4
- package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingService.sol/StakingService.json +137 -51
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +22 -20
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +129 -129
- 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 +2 -2
- 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 +177 -84
- package/contracts/authorization/AccessManagerCloneable.sol +136 -3
- package/contracts/authorization/Authorization.sol +277 -229
- package/contracts/authorization/IAccessAdmin.sol +13 -7
- package/contracts/authorization/IAuthorization.sol +15 -1
- package/contracts/distribution/BasicDistribution.sol +6 -6
- package/contracts/distribution/BasicDistributionAuthorization.sol +22 -9
- package/contracts/distribution/Distribution.sol +32 -30
- package/contracts/distribution/DistributionService.sol +32 -30
- package/contracts/distribution/DistributionServiceManager.sol +1 -1
- package/contracts/distribution/IDistributionService.sol +5 -6
- package/contracts/examples/fire/FirePool.sol +6 -2
- package/contracts/examples/fire/FirePoolAuthorization.sol +2 -1
- package/contracts/examples/fire/FireProduct.sol +8 -1
- package/contracts/examples/fire/FireProductAuthorization.sol +2 -1
- package/contracts/examples/unpermissioned/SimpleDistribution.sol +6 -7
- package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +28 -0
- package/contracts/examples/unpermissioned/SimplePool.sol +7 -9
- package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
- package/contracts/examples/unpermissioned/SimpleProduct.sol +32 -0
- package/contracts/instance/BundleSet.sol +42 -38
- package/contracts/instance/IInstance.sol +13 -9
- package/contracts/instance/IInstanceService.sol +7 -6
- package/contracts/instance/Instance.sol +33 -18
- package/contracts/instance/InstanceAdmin.sol +247 -82
- package/contracts/instance/InstanceAuthorizationV3.sol +50 -31
- package/contracts/instance/InstanceReader.sol +162 -32
- package/contracts/instance/InstanceService.sol +62 -72
- 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 +3 -2
- package/contracts/instance/module/IRisk.sol +3 -0
- package/contracts/oracle/BasicOracleAuthorization.sol +3 -12
- package/contracts/oracle/Oracle.sol +1 -1
- package/contracts/oracle/OracleService.sol +92 -74
- package/contracts/oracle/OracleServiceManager.sol +1 -1
- package/contracts/pool/BasicPoolAuthorization.sol +21 -13
- package/contracts/pool/BundleService.sol +35 -125
- package/contracts/pool/BundleServiceManager.sol +1 -1
- package/contracts/pool/IBundleService.sol +13 -38
- package/contracts/pool/IPoolService.sol +49 -56
- package/contracts/pool/Pool.sol +9 -9
- package/contracts/pool/PoolLib.sol +216 -0
- package/contracts/pool/PoolService.sol +323 -186
- package/contracts/pool/PoolServiceManager.sol +1 -1
- package/contracts/product/ApplicationService.sol +15 -15
- package/contracts/product/ApplicationServiceManager.sol +1 -1
- package/contracts/product/BasicProduct.sol +2 -0
- package/contracts/product/BasicProductAuthorization.sol +24 -10
- package/contracts/product/ClaimService.sol +157 -139
- 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 +23 -10
- package/contracts/product/IProductComponent.sol +4 -1
- package/contracts/product/PolicyService.sol +269 -257
- package/contracts/product/PolicyServiceLib.sol +65 -0
- package/contracts/product/PolicyServiceManager.sol +1 -1
- package/contracts/product/PricingService.sol +23 -19
- package/contracts/product/PricingServiceManager.sol +3 -3
- package/contracts/product/Product.sol +53 -7
- package/contracts/product/RiskService.sol +74 -25
- package/contracts/product/RiskServiceManager.sol +1 -1
- package/contracts/registry/ChainNft.sol +4 -2
- package/contracts/registry/IRegistry.sol +8 -15
- package/contracts/registry/IRelease.sol +26 -0
- package/contracts/registry/Registry.sol +7 -2
- package/contracts/registry/RegistryAdmin.sol +129 -237
- package/contracts/registry/RegistryService.sol +3 -3
- 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 +127 -101
- package/contracts/registry/ServiceAuthorizationV3.sol +84 -40
- package/contracts/registry/TokenRegistry.sol +6 -8
- package/contracts/shared/Component.sol +40 -42
- package/contracts/shared/ComponentService.sol +199 -286
- package/contracts/shared/ComponentServiceManager.sol +1 -1
- package/contracts/shared/ComponentVerifyingService.sol +1 -1
- package/contracts/shared/ContractLib.sol +208 -9
- package/contracts/shared/IComponent.sol +3 -9
- package/contracts/shared/IComponentService.sol +9 -27
- package/contracts/shared/IInstanceLinkedComponent.sol +0 -11
- package/contracts/shared/IRegisterable.sol +15 -4
- package/contracts/shared/IService.sol +3 -5
- package/contracts/shared/InstanceLinkedComponent.sol +3 -11
- package/contracts/shared/NftOwnable.sol +4 -4
- package/contracts/shared/PolicyHolder.sol +1 -1
- package/contracts/shared/Registerable.sol +45 -19
- package/contracts/shared/RegistryLinked.sol +1 -1
- package/contracts/shared/Service.sol +8 -27
- package/contracts/shared/TokenHandler.sol +40 -96
- package/contracts/staking/IStaking.sol +1 -9
- package/contracts/staking/IStakingService.sol +11 -1
- package/contracts/staking/StakeManagerLib.sol +63 -7
- package/contracts/staking/Staking.sol +45 -20
- package/contracts/staking/StakingReader.sol +1 -1
- package/contracts/staking/StakingService.sol +53 -57
- 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 +24 -4
- 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 +1 -1
- package/package.json +1 -1
- package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.dbg.json +0 -4
- package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.json +0 -1196
- 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/ReleaseAccessManager.sol +0 -38
- package/contracts/instance/module/IAccess.sol +0 -46
| @@ -0,0 +1,118 @@ | |
| 1 | 
            +
            // SPDX-License-Identifier: Apache-2.0
         | 
| 2 | 
            +
            pragma solidity ^0.8.20;
         | 
| 3 | 
            +
             | 
| 4 | 
            +
            import {Key32} from "../type/Key32.sol";
         | 
| 5 | 
            +
            import {LibNftIdSet} from "../type/NftIdSet.sol";
         | 
| 6 | 
            +
            import {NftId} from "../type/NftId.sol";
         | 
| 7 | 
            +
            import {ObjectSet} from "./base/ObjectSet.sol";
         | 
| 8 | 
            +
            import {ObjectSetHelperLib} from "./base/ObjectSetHelperLib.sol";
         | 
| 9 | 
            +
            import {RiskIdLib, RiskId} from "../type/RiskId.sol";
         | 
| 10 | 
            +
             | 
| 11 | 
            +
            /// @dev RiskSet manages the risks and its active policies per product.
         | 
| 12 | 
            +
            contract RiskSet is
         | 
| 13 | 
            +
                ObjectSet
         | 
| 14 | 
            +
            {
         | 
| 15 | 
            +
             | 
| 16 | 
            +
                event LogRiskSetPolicyLinked(RiskId riskId, NftId policyNftId);
         | 
| 17 | 
            +
                event LogRiskSetPolicyUnlinked(RiskId riskId, NftId policyNftId);
         | 
| 18 | 
            +
             | 
| 19 | 
            +
                event LogRiskSetRiskAdded(NftId productNftId, RiskId riskId);
         | 
| 20 | 
            +
                event LogRiskSetRiskActive(NftId poolNftId,  RiskId riskId);
         | 
| 21 | 
            +
                event LogRiskSetRiskPaused(NftId poolNftId,  RiskId riskId);
         | 
| 22 | 
            +
                event LogRiskSetRiskArchived(NftId poolNftId,  RiskId riskId);
         | 
| 23 | 
            +
             | 
| 24 | 
            +
                error ErrorRiskSetRiskLocked(RiskId riskId, NftId policyNftId); 
         | 
| 25 | 
            +
                error ErrorRiskSetRiskUnknown(RiskId riskId);
         | 
| 26 | 
            +
                error ErrorRiskSetRiskNotRegistered(RiskId riskId);
         | 
| 27 | 
            +
             | 
| 28 | 
            +
                mapping(RiskId riskId => LibNftIdSet.Set policies) internal _activePolicies;
         | 
| 29 | 
            +
             | 
| 30 | 
            +
                /// @dev links a policy to its bundle
         | 
| 31 | 
            +
                function linkPolicy(NftId productNftId, RiskId riskId, NftId policyNftId) external restricted() {
         | 
| 32 | 
            +
             | 
| 33 | 
            +
                    // ensure risk is active (in active set) and registered with this instance
         | 
| 34 | 
            +
                    if (!_isActive(productNftId, riskId.toKey32())) {
         | 
| 35 | 
            +
                        revert ErrorRiskSetRiskLocked(riskId, policyNftId);
         | 
| 36 | 
            +
                    }
         | 
| 37 | 
            +
             | 
| 38 | 
            +
                    LibNftIdSet.add(_activePolicies[riskId], policyNftId);
         | 
| 39 | 
            +
                    emit LogRiskSetPolicyLinked(riskId, policyNftId);
         | 
| 40 | 
            +
                }
         | 
| 41 | 
            +
             | 
| 42 | 
            +
                /// @dev Unlinks a policy from its risk.
         | 
| 43 | 
            +
                function unlinkPolicy(NftId productNftId, RiskId riskId, NftId policyNftId) external restricted() {
         | 
| 44 | 
            +
             | 
| 45 | 
            +
                    // ensure risk is registered with this instance
         | 
| 46 | 
            +
                    if (!_contains(productNftId, riskId.toKey32())) {
         | 
| 47 | 
            +
                        revert ErrorRiskSetRiskUnknown(riskId);
         | 
| 48 | 
            +
                    }
         | 
| 49 | 
            +
             | 
| 50 | 
            +
                    LibNftIdSet.remove(_activePolicies[riskId], policyNftId);
         | 
| 51 | 
            +
                    emit LogRiskSetPolicyUnlinked(riskId, policyNftId);
         | 
| 52 | 
            +
                }
         | 
| 53 | 
            +
             | 
| 54 | 
            +
                /// @dev add a new risk to a product registered with this instance
         | 
| 55 | 
            +
                // the corresponding product is fetched via instance reader
         | 
| 56 | 
            +
                function add(RiskId riskId) external restricted() {
         | 
| 57 | 
            +
                    NftId productNftId = ObjectSetHelperLib.getProductNftId(_instanceAddress, riskId);
         | 
| 58 | 
            +
             | 
| 59 | 
            +
                    // ensure product is registered with instance
         | 
| 60 | 
            +
                    if(productNftId.eqz()) {
         | 
| 61 | 
            +
                        revert ErrorRiskSetRiskNotRegistered(riskId);
         | 
| 62 | 
            +
                    }
         | 
| 63 | 
            +
             | 
| 64 | 
            +
                    _add(productNftId, riskId.toKey32());
         | 
| 65 | 
            +
                    emit LogRiskSetRiskAdded(productNftId, riskId);
         | 
| 66 | 
            +
                }
         | 
| 67 | 
            +
             | 
| 68 | 
            +
                /// @dev Applications linked to active risks may be underwritten
         | 
| 69 | 
            +
                function activate(RiskId riskId) external restricted() {
         | 
| 70 | 
            +
                    NftId productNftId = ObjectSetHelperLib.getProductNftId(_instanceAddress, riskId);
         | 
| 71 | 
            +
                    _activate(productNftId, riskId.toKey32());
         | 
| 72 | 
            +
                    emit LogRiskSetRiskActive(productNftId, riskId);
         | 
| 73 | 
            +
                }
         | 
| 74 | 
            +
             | 
| 75 | 
            +
                /// @dev Applications linked to paused/archived risks may not be underwritten
         | 
| 76 | 
            +
                function pause(RiskId riskId) external restricted() {
         | 
| 77 | 
            +
                    NftId productNftId = ObjectSetHelperLib.getProductNftId(_instanceAddress, riskId);
         | 
| 78 | 
            +
                    _deactivate(productNftId, riskId.toKey32());
         | 
| 79 | 
            +
                    emit LogRiskSetRiskPaused(productNftId, riskId);
         | 
| 80 | 
            +
                }
         | 
| 81 | 
            +
             | 
| 82 | 
            +
                function checkRisk(NftId productNftId, RiskId riskId)
         | 
| 83 | 
            +
                    public
         | 
| 84 | 
            +
                    view 
         | 
| 85 | 
            +
                    returns (bool exists, bool active)
         | 
| 86 | 
            +
                {
         | 
| 87 | 
            +
                    Key32 riskKey32 = riskId.toKey32();
         | 
| 88 | 
            +
                    exists = _contains(productNftId, riskKey32);
         | 
| 89 | 
            +
             | 
| 90 | 
            +
                    if (exists) {
         | 
| 91 | 
            +
                        active = _isActive(productNftId, riskKey32);
         | 
| 92 | 
            +
                    }
         | 
| 93 | 
            +
                }
         | 
| 94 | 
            +
             | 
| 95 | 
            +
                function risks(NftId productNftId) external view returns(uint256) {
         | 
| 96 | 
            +
                    return _objects(productNftId);
         | 
| 97 | 
            +
                }
         | 
| 98 | 
            +
             | 
| 99 | 
            +
                function getRiskId(NftId productNftId, uint256 idx) external view returns(RiskId riskId) {
         | 
| 100 | 
            +
                    return RiskIdLib.toRiskId(_getObject(productNftId, idx).toKeyId());
         | 
| 101 | 
            +
                }
         | 
| 102 | 
            +
                
         | 
| 103 | 
            +
                function activeRisks(NftId productNftId) external view returns(uint256) {
         | 
| 104 | 
            +
                    return _activeObjs(productNftId);
         | 
| 105 | 
            +
                }
         | 
| 106 | 
            +
             | 
| 107 | 
            +
                function getActiveRiskId(NftId productNftId, uint256 idx) external view returns(RiskId riskId) {
         | 
| 108 | 
            +
                    return RiskIdLib.toRiskId(_getActiveObject(productNftId, idx).toKeyId());
         | 
| 109 | 
            +
                }
         | 
| 110 | 
            +
             | 
| 111 | 
            +
                function linkedPolicies(RiskId riskId) external view returns(uint256) {
         | 
| 112 | 
            +
                    return LibNftIdSet.size(_activePolicies[riskId]);
         | 
| 113 | 
            +
                }
         | 
| 114 | 
            +
             | 
| 115 | 
            +
                function getLinkedPolicyNftId(RiskId riskId, uint256 idx) external view returns(NftId policyNftId) {
         | 
| 116 | 
            +
                    return LibNftIdSet.getElementAt(_activePolicies[riskId], idx);
         | 
| 117 | 
            +
                }
         | 
| 118 | 
            +
            }
         | 
| @@ -11,9 +11,8 @@ contract ObjectCounter { | |
| 11 11 | 
             
                // TODO refactor risk id
         | 
| 12 12 | 
             
                // mapping(NftId productNftId => uint64 risks) private _riskCounter;
         | 
| 13 13 |  | 
| 14 | 
            -
                uint256 private _requestCounter;
         | 
| 14 | 
            +
                uint256 private _requestCounter = 0;
         | 
| 15 15 |  | 
| 16 | 
            -
                // TODO introduce RequestId (uint64)
         | 
| 17 16 | 
             
                function _createNextRequestId() internal returns (RequestId requestId) {
         | 
| 18 17 | 
             
                    _requestCounter++;
         | 
| 19 18 | 
             
                    requestId = RequestIdLib.toRequestId(_requestCounter);
         | 
| @@ -3,7 +3,7 @@ pragma solidity ^0.8.20; | |
| 3 3 |  | 
| 4 4 | 
             
            import {Initializable} from "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol"; 
         | 
| 5 5 |  | 
| 6 | 
            -
            import {COMPONENT, BUNDLE, POLICY, REQUEST, RISK, CLAIM, PAYOUT, POOL, PREMIUM, PRODUCT, DISTRIBUTION, DISTRIBUTOR, DISTRIBUTOR_TYPE, REFERRAL} from "../../type/ObjectType.sol";
         | 
| 6 | 
            +
            import {COMPONENT, BUNDLE, POLICY, REQUEST, RISK, CLAIM, PAYOUT, POOL, PREMIUM, PRODUCT, DISTRIBUTION, DISTRIBUTOR, DISTRIBUTOR_TYPE, REFERRAL, FEE} from "../../type/ObjectType.sol";
         | 
| 7 7 | 
             
            import {ACTIVE, PAUSED, ARCHIVED, CLOSED, APPLIED, COLLATERALIZED, REVOKED, SUBMITTED, CONFIRMED, DECLINED, EXPECTED, PAID, FULFILLED, FAILED, CANCELLED} from "../../type/StateId.sol";
         | 
| 8 8 | 
             
            import {Lifecycle} from "../../shared/Lifecycle.sol";
         | 
| 9 9 |  | 
| @@ -65,6 +65,7 @@ contract ObjectLifecycle is | |
| 65 65 |  | 
| 66 66 | 
             
                function _setupClaimLifecycle() private {
         | 
| 67 67 | 
             
                    setInitialState(CLAIM(), SUBMITTED());
         | 
| 68 | 
            +
                    setStateTransition(CLAIM(), SUBMITTED(), REVOKED());
         | 
| 68 69 | 
             
                    setStateTransition(CLAIM(), SUBMITTED(), CONFIRMED());
         | 
| 69 70 | 
             
                    setStateTransition(CLAIM(), SUBMITTED(), DECLINED());
         | 
| 70 71 | 
             
                    setStateTransition(CLAIM(), CONFIRMED(), CLOSED());
         | 
| @@ -72,8 +73,8 @@ contract ObjectLifecycle is | |
| 72 73 |  | 
| 73 74 | 
             
                function _setupPayoutLifecycle() private {
         | 
| 74 75 | 
             
                    setInitialState(PAYOUT(), EXPECTED());
         | 
| 75 | 
            -
                    // TODO: add state cancelled
         | 
| 76 76 | 
             
                    setStateTransition(PAYOUT(), EXPECTED(), PAID());
         | 
| 77 | 
            +
                    setStateTransition(PAYOUT(), EXPECTED(), CANCELLED());
         | 
| 77 78 | 
             
                }
         | 
| 78 79 |  | 
| 79 80 | 
             
                function _setupRiskLifecycle() private {
         | 
| @@ -99,6 +100,7 @@ contract ObjectLifecycle is | |
| 99 100 | 
             
                // dummy lifecycle only
         | 
| 100 101 | 
             
                function _setUpProductLifecycle() private {
         | 
| 101 102 | 
             
                    setInitialState(PRODUCT(), ACTIVE());
         | 
| 103 | 
            +
                    setInitialState(FEE(), ACTIVE());
         | 
| 102 104 | 
             
                }
         | 
| 103 105 |  | 
| 104 106 | 
             
                // dummy lifecycles only
         | 
| @@ -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 |  | 
| @@ -28,6 +27,9 @@ interface IComponents { | |
| 28 27 | 
             
                    NftId poolNftId; // mandatory
         | 
| 29 28 | 
             
                    NftId distributionNftId; // 0..1 (optional)
         | 
| 30 29 | 
             
                    NftId [] oracleNftId; // 0..n (optional)
         | 
| 30 | 
            +
                }
         | 
| 31 | 
            +
             | 
| 32 | 
            +
                struct FeeInfo {
         | 
| 31 33 | 
             
                    Fee productFee; // product fee on net premium
         | 
| 32 34 | 
             
                    Fee processingFee; // product fee on payout amounts        
         | 
| 33 35 | 
             
                    Fee distributionFee; // distribution fee for sales that do not include commissions
         | 
| @@ -37,7 +39,6 @@ interface IComponents { | |
| 37 39 | 
             
                    Fee performanceFee; // pool fee on profits from capital investors
         | 
| 38 40 | 
             
                }
         | 
| 39 41 |  | 
| 40 | 
            -
             | 
| 41 42 | 
             
                struct PoolInfo {
         | 
| 42 43 | 
             
                    Amount maxBalanceAmount; // max balance amount allowed for pool
         | 
| 43 44 | 
             
                    bool isInterceptingBundleTransfers; // custom logic for bundle nft transfers
         | 
| @@ -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 | 
             
            }
         | 
| @@ -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";
         | 
| @@ -13,12 +13,13 @@ import {IRegistry} from "../registry/IRegistry.sol"; | |
| 13 13 | 
             
            import {NftId} from "../type/NftId.sol";
         | 
| 14 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 |  | 
| @@ -49,51 +50,27 @@ contract OracleService is | |
| 49 50 | 
             
                    virtual 
         | 
| 50 51 | 
             
                    // restricted() // add authz
         | 
| 51 52 | 
             
                    onlyNftOfType(oracleNftId, ORACLE())
         | 
| 52 | 
            -
                    returns (
         | 
| 53 | 
            -
                        RequestId requestId
         | 
| 54 | 
            -
                    ) 
         | 
| 53 | 
            +
                    returns (RequestId requestId) 
         | 
| 55 54 | 
             
                {
         | 
| 55 | 
            +
                    // checks
         | 
| 56 | 
            +
                    // get and check active caller
         | 
| 56 57 | 
             
                    (
         | 
| 57 | 
            -
                         | 
| 58 | 
            -
                         | 
| 59 | 
            -
             | 
| 60 | 
            -
             | 
| 58 | 
            +
                        IRegistry.ObjectInfo memory requesterInfo, 
         | 
| 59 | 
            +
                        address instance
         | 
| 60 | 
            +
                    ) = ContractLib.getAndVerifyAnyComponent(
         | 
| 61 | 
            +
                        getRegistry(), msg.sender, true);
         | 
| 61 62 |  | 
| 62 | 
            -
                    // oracleNftId exists and is active oracle
         | 
| 63 63 | 
             
                    (
         | 
| 64 | 
            -
                         | 
| 65 | 
            -
             | 
| 66 | 
            -
             | 
| 67 | 
            -
                         | 
| 68 | 
            -
                        true); // only active
         | 
| 69 | 
            -
             | 
| 70 | 
            -
                    {
         | 
| 71 | 
            -
                        // check that requester and oracle share same product cluster
         | 
| 72 | 
            -
                        if (componentInfo.objectType == PRODUCT()) {
         | 
| 73 | 
            -
                            if (oracleInfo.parentNftId != componentInfo.nftId) {
         | 
| 74 | 
            -
                                revert ErrorOracleServiceProductMismatch(componentInfo.objectType, componentInfo.nftId, oracleInfo.parentNftId);
         | 
| 75 | 
            -
                            }
         | 
| 76 | 
            -
                        } else {
         | 
| 77 | 
            -
                            if (oracleInfo.parentNftId != componentInfo.parentNftId) {
         | 
| 78 | 
            -
                                revert ErrorOracleServiceProductMismatch(componentInfo.objectType, componentInfo.parentNftId, oracleInfo.parentNftId);
         | 
| 79 | 
            -
                            }
         | 
| 80 | 
            -
                        }
         | 
| 81 | 
            -
             | 
| 82 | 
            -
                        // check expiriyAt >= now
         | 
| 83 | 
            -
                        if (expiryAt < TimestampLib.blockTimestamp()) {
         | 
| 84 | 
            -
                            revert ErrorOracleServiceExpiryInThePast(TimestampLib.blockTimestamp(), expiryAt);
         | 
| 85 | 
            -
                        }
         | 
| 86 | 
            -
             | 
| 87 | 
            -
                        // check callbackMethodName.length > 0
         | 
| 88 | 
            -
                        if (bytes(callbackMethodName).length == 0) {
         | 
| 89 | 
            -
                            revert ErrorOracleServiceCallbackMethodNameEmpty();
         | 
| 90 | 
            -
                        }
         | 
| 91 | 
            -
                    }
         | 
| 64 | 
            +
                        NftId requesterNftId,
         | 
| 65 | 
            +
                        IOracleComponent oracle
         | 
| 66 | 
            +
                    ) = _checkRequestParams(
         | 
| 67 | 
            +
                        getRegistry(), oracleNftId, requesterInfo, expiryAt, callbackMethodName);
         | 
| 92 68 |  | 
| 69 | 
            +
                    // effects
         | 
| 93 70 | 
             
                    {
         | 
| 94 71 | 
             
                        // create request info
         | 
| 95 72 | 
             
                        IOracle.RequestInfo memory request = IOracle.RequestInfo({
         | 
| 96 | 
            -
                            requesterNftId:  | 
| 73 | 
            +
                            requesterNftId: requesterNftId,
         | 
| 97 74 | 
             
                            callbackMethodName: callbackMethodName,
         | 
| 98 75 | 
             
                            oracleNftId: oracleNftId,
         | 
| 99 76 | 
             
                            requestData: requestData,
         | 
| @@ -104,17 +81,18 @@ contract OracleService is | |
| 104 81 | 
             
                        });
         | 
| 105 82 |  | 
| 106 83 | 
             
                        // store request with instance
         | 
| 107 | 
            -
                        requestId = instance.getInstanceStore().createRequest(request);
         | 
| 84 | 
            +
                        requestId = IInstance(instance).getInstanceStore().createRequest(request);
         | 
| 108 85 | 
             
                    }
         | 
| 109 86 |  | 
| 110 | 
            -
                     | 
| 111 | 
            -
             | 
| 87 | 
            +
                    emit LogOracleServiceRequestCreated(requestId, requesterNftId, oracleNftId, expiryAt);
         | 
| 88 | 
            +
             | 
| 89 | 
            +
                    // interactions
         | 
| 90 | 
            +
                    // callback to oracle component
         | 
| 91 | 
            +
                    oracle.request(
         | 
| 112 92 | 
             
                        requestId, 
         | 
| 113 | 
            -
                         | 
| 93 | 
            +
                        requesterNftId, 
         | 
| 114 94 | 
             
                        requestData, 
         | 
| 115 95 | 
             
                        expiryAt);
         | 
| 116 | 
            -
             | 
| 117 | 
            -
                    emit LogOracleServiceRequestCreated(requestId, componentNftId, oracleNftId, expiryAt);
         | 
| 118 96 | 
             
                }
         | 
| 119 97 |  | 
| 120 98 |  | 
| @@ -130,11 +108,13 @@ contract OracleService is | |
| 130 108 | 
             
                    returns (bool success)
         | 
| 131 109 | 
             
                {
         | 
| 132 110 | 
             
                    (
         | 
| 133 | 
            -
                         | 
| 134 | 
            -
                         | 
| 135 | 
            -
             | 
| 136 | 
            -
             | 
| 111 | 
            +
                        IRegistry.ObjectInfo memory info, 
         | 
| 112 | 
            +
                        address instanceAddress
         | 
| 113 | 
            +
                    ) = ContractLib.getAndVerifyComponent(
         | 
| 114 | 
            +
                        getRegistry(), msg.sender, ORACLE(), true);
         | 
| 137 115 |  | 
| 116 | 
            +
                    NftId oracleNftId = info.nftId;
         | 
| 117 | 
            +
                    IInstance instance = IInstance(instanceAddress);
         | 
| 138 118 | 
             
                    bool callerIsOracle = true;
         | 
| 139 119 | 
             
                    IOracle.RequestInfo memory request = _checkAndGetRequestInfo(instance, requestId, oracleNftId, callerIsOracle);
         | 
| 140 120 | 
             
                    request.responseData = responseData;
         | 
| @@ -176,11 +156,13 @@ contract OracleService is | |
| 176 156 | 
             
                    // restricted() // add authz
         | 
| 177 157 | 
             
                {
         | 
| 178 158 | 
             
                    (
         | 
| 179 | 
            -
                         | 
| 180 | 
            -
                         | 
| 181 | 
            -
             | 
| 182 | 
            -
             | 
| 159 | 
            +
                        IRegistry.ObjectInfo memory info, 
         | 
| 160 | 
            +
                        address instanceAddress
         | 
| 161 | 
            +
                    ) = ContractLib.getAndVerifyAnyComponent(
         | 
| 162 | 
            +
                        getRegistry(), msg.sender, true);
         | 
| 183 163 |  | 
| 164 | 
            +
                    NftId requesterNftId = info.nftId;
         | 
| 165 | 
            +
                    IInstance instance = IInstance(instanceAddress);
         | 
| 184 166 | 
             
                    bool callerIsOracle = false;
         | 
| 185 167 | 
             
                    IOracle.RequestInfo memory request = _checkAndGetRequestInfo(instance, requestId, requesterNftId, callerIsOracle);
         | 
| 186 168 |  | 
| @@ -191,7 +173,7 @@ contract OracleService is | |
| 191 173 | 
             
                            "(uint64,bytes)"
         | 
| 192 174 | 
             
                        ));
         | 
| 193 175 |  | 
| 194 | 
            -
                    (bool success, bytes memory returnData) =  | 
| 176 | 
            +
                    (bool success, bytes memory returnData) = info.objectAddress.call(
         | 
| 195 177 | 
             
                        abi.encodeWithSignature(
         | 
| 196 178 | 
             
                            functionSignature, 
         | 
| 197 179 | 
             
                            requestId,
         | 
| @@ -202,7 +184,7 @@ contract OracleService is | |
| 202 184 | 
             
                        instance.getInstanceStore().updateRequestState(requestId, FULFILLED());
         | 
| 203 185 | 
             
                        emit LogOracleServiceResponseResent(requestId, requesterNftId);
         | 
| 204 186 | 
             
                    } else {
         | 
| 205 | 
            -
                        emit LogOracleServiceDeliveryFailed(requestId,  | 
| 187 | 
            +
                        emit LogOracleServiceDeliveryFailed(requestId, info.objectAddress, functionSignature);
         | 
| 206 188 | 
             
                    }
         | 
| 207 189 | 
             
                }
         | 
| 208 190 |  | 
| @@ -213,11 +195,13 @@ contract OracleService is | |
| 213 195 | 
             
                    // restricted() // add authz
         | 
| 214 196 | 
             
                {
         | 
| 215 197 | 
             
                    (
         | 
| 216 | 
            -
                         | 
| 217 | 
            -
                         | 
| 218 | 
            -
             | 
| 219 | 
            -
             | 
| 198 | 
            +
                        IRegistry.ObjectInfo memory info, 
         | 
| 199 | 
            +
                        address instanceAddress
         | 
| 200 | 
            +
                    ) = ContractLib.getAndVerifyAnyComponent(
         | 
| 201 | 
            +
                        getRegistry(), msg.sender, true);
         | 
| 220 202 |  | 
| 203 | 
            +
                    NftId requesterNftId = info.nftId;
         | 
| 204 | 
            +
                    IInstance instance = IInstance(instanceAddress);
         | 
| 221 205 | 
             
                    bool callerIsOracle = false;
         | 
| 222 206 | 
             
                    // TODO property isCancelled and state update to CANCELLED are redundant, get rid of isCancelled
         | 
| 223 207 | 
             
                    IOracle.RequestInfo memory request = _checkAndGetRequestInfo(instance, requestId, requesterNftId, callerIsOracle);
         | 
| @@ -234,6 +218,52 @@ contract OracleService is | |
| 234 218 | 
             
                }
         | 
| 235 219 |  | 
| 236 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 | 
            +
             | 
| 237 267 | 
             
                function _checkAndGetRequestInfo(
         | 
| 238 268 | 
             
                    IInstance instance,
         | 
| 239 269 | 
             
                    RequestId requestId,
         | 
| @@ -274,18 +304,6 @@ contract OracleService is | |
| 274 304 | 
             
                }
         | 
| 275 305 |  | 
| 276 306 |  | 
| 277 | 
            -
                // TODO cleanup
         | 
| 278 | 
            -
                // function _getInstanceForComponent(NftId componentNftId)
         | 
| 279 | 
            -
                //     internal
         | 
| 280 | 
            -
                //     view
         | 
| 281 | 
            -
                //     returns(IInstance instance)
         | 
| 282 | 
            -
                // {
         | 
| 283 | 
            -
                //     NftId instanceNftId = getRegistry().getObjectInfo(componentNftId).parentNftId;
         | 
| 284 | 
            -
                //     address instanceAddress = getRegistry().getObjectAddress(instanceNftId);
         | 
| 285 | 
            -
                //     return IInstance(instanceAddress);
         | 
| 286 | 
            -
                // }
         | 
| 287 | 
            -
             | 
| 288 | 
            -
             | 
| 289 307 | 
             
                function _getDomain() internal pure override returns(ObjectType) {
         | 
| 290 308 | 
             
                    return ORACLE();
         | 
| 291 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), 
         |