@etherisc/gif-next 0.0.2-f13c010-035 → 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 +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 +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 +106 -186
- 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 +57 -89
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +154 -108
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +75 -53
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +44 -58
- 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 +101 -164
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +152 -33
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +258 -290
- 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 +137 -129
- 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 +90 -126
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +225 -162
- 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 +641 -310
- 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 +77 -20
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +163 -56
- 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 +550 -224
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +104 -74
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +49 -27
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +410 -370
- 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 +74 -154
- 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 +44 -58
- 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 +58 -90
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +112 -81
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +69 -27
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +57 -104
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +152 -33
- package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +127 -331
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +53 -87
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +56 -136
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +44 -97
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +164 -217
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +57 -128
- 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 +302 -353
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +93 -51
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +105 -63
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +45 -27
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +163 -175
- 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 -179
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +74 -64
- 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 +112 -56
- 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 +150 -144
- 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 +211 -180
- 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 +76 -50
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +99 -76
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +60 -38
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/product/Product.sol/Product.json +163 -175
- package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +1 -1
- package/artifacts/contracts/product/RiskService.sol/RiskService.json +88 -73
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +54 -24
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +2 -2
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +50 -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 +88 -40
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +262 -220
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +69 -46
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +42 -20
- 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 +318 -52
- 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 +57 -75
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +225 -439
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +74 -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 +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 +44 -44
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +125 -282
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +44 -58
- 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 +57 -89
- 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 +289 -112
- 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 +70 -30
- package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
- package/artifacts/contracts/staking/IStaking.sol/IStaking.json +65 -83
- 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 +145 -176
- 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 +62 -46
- 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 +151 -49
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +51 -25
- 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 +18 -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 +36 -34
- package/contracts/distribution/DistributionServiceManager.sol +1 -1
- package/contracts/distribution/IDistributionService.sol +5 -6
- package/contracts/examples/fire/FirePool.sol +22 -5
- package/contracts/examples/fire/FirePoolAuthorization.sol +2 -1
- package/contracts/examples/fire/FireProduct.sol +31 -8
- package/contracts/examples/fire/FireProductAuthorization.sol +2 -1
- package/contracts/examples/unpermissioned/SimpleDistribution.sol +7 -0
- package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +28 -0
- package/contracts/examples/unpermissioned/SimplePool.sol +33 -3
- package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
- package/contracts/examples/unpermissioned/SimpleProduct.sol +47 -21
- package/contracts/instance/BundleSet.sol +42 -38
- package/contracts/instance/IInstance.sol +13 -9
- package/contracts/instance/IInstanceService.sol +9 -9
- package/contracts/instance/Instance.sol +33 -18
- package/contracts/instance/InstanceAdmin.sol +247 -84
- package/contracts/instance/InstanceAuthorizationV3.sol +50 -31
- package/contracts/instance/InstanceReader.sol +162 -32
- package/contracts/instance/InstanceService.sol +73 -82
- 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 +4 -4
- package/contracts/instance/module/IPolicy.sol +2 -1
- 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 -73
- package/contracts/oracle/OracleServiceManager.sol +1 -1
- package/contracts/pool/BasicPool.sol +24 -3
- package/contracts/pool/BasicPoolAuthorization.sol +27 -8
- package/contracts/pool/BundleService.sol +47 -145
- 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 -60
- package/contracts/pool/Pool.sol +106 -96
- package/contracts/pool/PoolLib.sol +216 -0
- package/contracts/pool/PoolService.sol +427 -214
- 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 +9 -11
- package/contracts/product/BasicProductAuthorization.sol +24 -10
- package/contracts/product/ClaimService.sol +157 -137
- 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/IProductComponent.sol +4 -1
- package/contracts/product/PolicyService.sol +277 -261
- 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 +62 -39
- 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 +10 -15
- package/contracts/registry/IRelease.sol +26 -0
- package/contracts/registry/Registry.sol +16 -3
- package/contracts/registry/RegistryAdmin.sol +132 -226
- 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 +129 -119
- package/contracts/registry/ServiceAuthorizationV3.sol +93 -40
- package/contracts/registry/TokenRegistry.sol +6 -8
- package/contracts/shared/Component.sol +61 -105
- package/contracts/shared/ComponentService.sol +301 -295
- package/contracts/shared/ComponentServiceManager.sol +1 -1
- package/contracts/shared/ComponentVerifyingService.sol +16 -14
- package/contracts/shared/ContractLib.sol +224 -9
- package/contracts/shared/IComponent.sol +4 -17
- package/contracts/shared/IComponentService.sol +16 -25
- 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 +4 -20
- package/contracts/shared/NftOwnable.sol +4 -4
- package/contracts/shared/PolicyHolder.sol +1 -1
- package/contracts/shared/Registerable.sol +44 -20
- package/contracts/shared/RegistryLinked.sol +7 -13
- package/contracts/shared/Service.sol +8 -27
- package/contracts/shared/TokenHandler.sol +263 -105
- package/contracts/shared/TokenHandlerDeployerLib.sol +10 -2
- package/contracts/staking/IStaking.sol +6 -9
- package/contracts/staking/IStakingService.sol +11 -1
- package/contracts/staking/StakeManagerLib.sol +63 -7
- package/contracts/staking/Staking.sol +72 -39
- package/contracts/staking/StakingReader.sol +1 -1
- package/contracts/staking/StakingService.sol +56 -14
- 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 +3 -3
- 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/shared/ComponentServiceHelperLib.sol/ComponentServiceHelperLib.dbg.json +0 -4
- package/artifacts/contracts/shared/ComponentServiceHelperLib.sol/ComponentServiceHelperLib.json +0 -206
- 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
- package/contracts/shared/ComponentServiceHelperLib.sol +0 -118
| @@ -1,11 +1,13 @@ | |
| 1 1 | 
             
            // SPDX-License-Identifier: Apache-2.0
         | 
| 2 2 | 
             
            pragma solidity ^0.8.20;
         | 
| 3 3 |  | 
| 4 | 
            +
            import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
         | 
| 5 | 
            +
             | 
| 4 6 | 
             
            import {Amount, AmountLib} from "../../type/Amount.sol";
         | 
| 5 7 | 
             
            import {BasicPool} from "../../pool/BasicPool.sol";
         | 
| 6 | 
            -
            import {BasicPoolAuthorization} from "../../pool/BasicPoolAuthorization.sol";
         | 
| 7 8 | 
             
            import {Fee} from "../../type/Fee.sol";
         | 
| 8 9 | 
             
            import {IAuthorization} from "../../authorization/IAuthorization.sol";
         | 
| 10 | 
            +
            import {IComponents} from "../../instance/module/IComponents.sol";
         | 
| 9 11 | 
             
            import {NftId} from "../../type/NftId.sol";
         | 
| 10 12 | 
             
            import {Seconds} from "../../type/Timestamp.sol";
         | 
| 11 13 | 
             
            import {UFixed} from "../../type/UFixed.sol";
         | 
| @@ -18,6 +20,7 @@ contract SimplePool is | |
| 18 20 | 
             
                    address registry,
         | 
| 19 21 | 
             
                    NftId productNftId,
         | 
| 20 22 | 
             
                    address token,
         | 
| 23 | 
            +
                    IComponents.PoolInfo memory poolInfo,
         | 
| 21 24 | 
             
                    IAuthorization authorization,
         | 
| 22 25 | 
             
                    address initialOwner
         | 
| 23 26 | 
             
                ) 
         | 
| @@ -26,15 +29,18 @@ contract SimplePool is | |
| 26 29 | 
             
                        registry,
         | 
| 27 30 | 
             
                        productNftId,
         | 
| 28 31 | 
             
                        token,
         | 
| 32 | 
            +
                        poolInfo,
         | 
| 29 33 | 
             
                        authorization,
         | 
| 30 34 | 
             
                        initialOwner
         | 
| 31 35 | 
             
                    );
         | 
| 32 36 | 
             
                }
         | 
| 33 37 |  | 
| 38 | 
            +
             | 
| 34 39 | 
             
                function initialize(
         | 
| 35 40 | 
             
                    address registry,
         | 
| 36 41 | 
             
                    NftId productNftId,
         | 
| 37 42 | 
             
                    address token,
         | 
| 43 | 
            +
                    IComponents.PoolInfo memory poolInfo,
         | 
| 38 44 | 
             
                    IAuthorization authorization,
         | 
| 39 45 | 
             
                    address initialOwner
         | 
| 40 46 | 
             
                )
         | 
| @@ -45,12 +51,14 @@ contract SimplePool is | |
| 45 51 | 
             
                    _initializeBasicPool(
         | 
| 46 52 | 
             
                        registry,
         | 
| 47 53 | 
             
                        productNftId,
         | 
| 48 | 
            -
                        authorization,
         | 
| 49 | 
            -
                        token,
         | 
| 50 54 | 
             
                        "SimplePool",
         | 
| 55 | 
            +
                        token,
         | 
| 56 | 
            +
                        poolInfo,
         | 
| 57 | 
            +
                        authorization,
         | 
| 51 58 | 
             
                        initialOwner);
         | 
| 52 59 | 
             
                }
         | 
| 53 60 |  | 
| 61 | 
            +
             | 
| 54 62 | 
             
                function createBundle(
         | 
| 55 63 | 
             
                    Fee memory fee,
         | 
| 56 64 | 
             
                    uint256 initialAmount,
         | 
| @@ -73,4 +81,26 @@ contract SimplePool is | |
| 73 81 | 
             
                    netStakedAmountInt = netStakedAmount.toInt();
         | 
| 74 82 | 
             
                }
         | 
| 75 83 |  | 
| 84 | 
            +
             | 
| 85 | 
            +
                function fundPoolWallet(
         | 
| 86 | 
            +
                    Amount amount
         | 
| 87 | 
            +
                )
         | 
| 88 | 
            +
                    external
         | 
| 89 | 
            +
                {
         | 
| 90 | 
            +
                    _fundPoolWallet(amount);
         | 
| 91 | 
            +
                }
         | 
| 92 | 
            +
             | 
| 93 | 
            +
             | 
| 94 | 
            +
                function defundPoolWallet(
         | 
| 95 | 
            +
                    Amount amount
         | 
| 96 | 
            +
                )
         | 
| 97 | 
            +
                    external
         | 
| 98 | 
            +
                {
         | 
| 99 | 
            +
                    _defundPoolWallet(amount);
         | 
| 100 | 
            +
                }
         | 
| 101 | 
            +
             | 
| 102 | 
            +
             | 
| 103 | 
            +
                function approveTokenHandler(IERC20Metadata token, Amount amount) external restricted() onlyOwner() { _approveTokenHandler(token, amount); }
         | 
| 104 | 
            +
                function setLocked(bool locked) external onlyOwner() { _setLocked(locked); }
         | 
| 105 | 
            +
                function setWallet(address newWallet) external restricted() onlyOwner() { _setWallet(newWallet); }
         | 
| 76 106 | 
             
            }
         | 
| @@ -0,0 +1,28 @@ | |
| 1 | 
            +
            // SPDX-License-Identifier: Apache-2.0
         | 
| 2 | 
            +
            pragma solidity ^0.8.20;
         | 
| 3 | 
            +
             | 
| 4 | 
            +
            import {BasicPoolAuthorization} from "../../pool/BasicPoolAuthorization.sol";
         | 
| 5 | 
            +
            import {IAccess} from "../../authorization/IAccess.sol";
         | 
| 6 | 
            +
            import {PUBLIC_ROLE} from "../../type/RoleId.sol";
         | 
| 7 | 
            +
            import {SimplePool} from "./SimplePool.sol";
         | 
| 8 | 
            +
             | 
| 9 | 
            +
            contract SimplePoolAuthorization
         | 
| 10 | 
            +
                is BasicPoolAuthorization
         | 
| 11 | 
            +
            {
         | 
| 12 | 
            +
                constructor(string memory poolName)
         | 
| 13 | 
            +
                    BasicPoolAuthorization(poolName)
         | 
| 14 | 
            +
                {}
         | 
| 15 | 
            +
             | 
| 16 | 
            +
                function _setupTargetAuthorizations()
         | 
| 17 | 
            +
                    internal
         | 
| 18 | 
            +
                    virtual override
         | 
| 19 | 
            +
                {
         | 
| 20 | 
            +
                    super._setupTargetAuthorizations();
         | 
| 21 | 
            +
             | 
| 22 | 
            +
                    // authorize public role (open access to any account, only allows to lock target)
         | 
| 23 | 
            +
                    IAccess.FunctionInfo[] storage functions;
         | 
| 24 | 
            +
                    functions = _authorizeForTarget(getMainTargetName(), PUBLIC_ROLE());
         | 
| 25 | 
            +
                    _authorize(functions, SimplePool.approveTokenHandler.selector, "approveTokenHandler");
         | 
| 26 | 
            +
                    _authorize(functions, SimplePool.setWallet.selector, "setWallet");
         | 
| 27 | 
            +
                }
         | 
| 28 | 
            +
            }
         | 
| @@ -1,10 +1,13 @@ | |
| 1 1 | 
             
            // SPDX-License-Identifier: Apache-2.0
         | 
| 2 2 | 
             
            pragma solidity ^0.8.20;
         | 
| 3 3 |  | 
| 4 | 
            +
            import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
         | 
| 5 | 
            +
             | 
| 4 6 | 
             
            import {Amount, AmountLib} from "../../type/Amount.sol";
         | 
| 5 7 | 
             
            import {BasicProduct} from "../../product/BasicProduct.sol";
         | 
| 6 8 | 
             
            import {ClaimId} from "../../type/ClaimId.sol";
         | 
| 7 9 | 
             
            import {IAuthorization} from "../../authorization/IAuthorization.sol";
         | 
| 10 | 
            +
            import {IComponents} from "../../instance/module/IComponents.sol";
         | 
| 8 11 | 
             
            import {IOracleService} from "../../oracle/IOracleService.sol";
         | 
| 9 12 | 
             
            import {ORACLE} from "../../type/ObjectType.sol";
         | 
| 10 13 | 
             
            import {NftId} from "../../type/NftId.sol";
         | 
| @@ -33,37 +36,35 @@ contract SimpleProduct is | |
| 33 36 | 
             
                constructor(
         | 
| 34 37 | 
             
                    address registry,
         | 
| 35 38 | 
             
                    NftId instanceNftId,
         | 
| 36 | 
            -
                     | 
| 37 | 
            -
                    address initialOwner,
         | 
| 39 | 
            +
                    string memory name,
         | 
| 38 40 | 
             
                    address token,
         | 
| 39 | 
            -
                     | 
| 40 | 
            -
                     | 
| 41 | 
            -
                     | 
| 41 | 
            +
                    IComponents.ProductInfo memory productInfo,
         | 
| 42 | 
            +
                    IComponents.FeeInfo memory feeInfo,
         | 
| 43 | 
            +
                    IAuthorization authorization,
         | 
| 44 | 
            +
                    address initialOwner
         | 
| 42 45 | 
             
                )
         | 
| 43 46 | 
             
                {
         | 
| 44 47 | 
             
                    initialize(
         | 
| 45 48 | 
             
                        registry,
         | 
| 46 49 | 
             
                        instanceNftId,
         | 
| 47 | 
            -
                         | 
| 48 | 
            -
                        initialOwner,
         | 
| 49 | 
            -
                        "SimpleProduct",
         | 
| 50 | 
            +
                        name,
         | 
| 50 51 | 
             
                        token,
         | 
| 51 | 
            -
                         | 
| 52 | 
            -
                         | 
| 53 | 
            -
                         | 
| 52 | 
            +
                        productInfo,
         | 
| 53 | 
            +
                        feeInfo,
         | 
| 54 | 
            +
                        authorization,
         | 
| 55 | 
            +
                        initialOwner); 
         | 
| 54 56 | 
             
                }
         | 
| 55 57 |  | 
| 56 58 |  | 
| 57 59 | 
             
                function initialize(
         | 
| 58 60 | 
             
                    address registry,
         | 
| 59 61 | 
             
                    NftId instanceNftid,
         | 
| 60 | 
            -
                    IAuthorization authorization,
         | 
| 61 | 
            -
                    address initialOwner,
         | 
| 62 62 | 
             
                    string memory name,
         | 
| 63 63 | 
             
                    address token,
         | 
| 64 | 
            -
                     | 
| 65 | 
            -
                     | 
| 66 | 
            -
                     | 
| 64 | 
            +
                    IComponents.ProductInfo memory productInfo,
         | 
| 65 | 
            +
                    IComponents.FeeInfo memory feeInfo,
         | 
| 66 | 
            +
                    IAuthorization authorization,
         | 
| 67 | 
            +
                    address initialOwner
         | 
| 67 68 | 
             
                )
         | 
| 68 69 | 
             
                    public
         | 
| 69 70 | 
             
                    virtual
         | 
| @@ -72,17 +73,17 @@ contract SimpleProduct is | |
| 72 73 | 
             
                    _initializeBasicProduct(
         | 
| 73 74 | 
             
                        registry,
         | 
| 74 75 | 
             
                        instanceNftid,
         | 
| 75 | 
            -
                        authorization,
         | 
| 76 | 
            -
                        initialOwner,
         | 
| 77 76 | 
             
                        name,
         | 
| 78 77 | 
             
                        token,
         | 
| 79 | 
            -
                         | 
| 80 | 
            -
                         | 
| 81 | 
            -
                         | 
| 78 | 
            +
                        productInfo,
         | 
| 79 | 
            +
                        feeInfo,
         | 
| 80 | 
            +
                        authorization,
         | 
| 81 | 
            +
                        initialOwner); 
         | 
| 82 82 |  | 
| 83 83 | 
             
                    _oracleService = IOracleService(_getServiceAddress(ORACLE()));
         | 
| 84 84 | 
             
                }
         | 
| 85 85 |  | 
| 86 | 
            +
             | 
| 86 87 | 
             
                function createRisk(
         | 
| 87 88 | 
             
                    RiskId id,
         | 
| 88 89 | 
             
                    bytes memory data
         | 
| @@ -187,6 +188,13 @@ contract SimpleProduct is | |
| 187 188 | 
             
                    _activate(policyNftId, activateAt);
         | 
| 188 189 | 
             
                }
         | 
| 189 190 |  | 
| 191 | 
            +
                function adjustActivation(
         | 
| 192 | 
            +
                    NftId policyNftId,
         | 
| 193 | 
            +
                    Timestamp activateAt
         | 
| 194 | 
            +
                ) public {
         | 
| 195 | 
            +
                    _adjustActivation(policyNftId, activateAt);
         | 
| 196 | 
            +
                }
         | 
| 197 | 
            +
             | 
| 190 198 | 
             
                function close(
         | 
| 191 199 | 
             
                    NftId policyNftId
         | 
| 192 200 | 
             
                ) public {
         | 
| @@ -201,6 +209,13 @@ contract SimpleProduct is | |
| 201 209 | 
             
                    return _submitClaim(policyNftId, claimAmount, submissionData);
         | 
| 202 210 | 
             
                }
         | 
| 203 211 |  | 
| 212 | 
            +
                function revokeClaim(
         | 
| 213 | 
            +
                    NftId policyNftId,
         | 
| 214 | 
            +
                    ClaimId claimId
         | 
| 215 | 
            +
                ) public {
         | 
| 216 | 
            +
                    _revokeClaim(policyNftId, claimId);
         | 
| 217 | 
            +
                }
         | 
| 218 | 
            +
             | 
| 204 219 | 
             
                function confirmClaim(
         | 
| 205 220 | 
             
                    NftId policyNftId,
         | 
| 206 221 | 
             
                    ClaimId claimId,
         | 
| @@ -234,6 +249,13 @@ contract SimpleProduct is | |
| 234 249 | 
             
                    return _createPayout(policyNftId, claimId, amount, data);
         | 
| 235 250 | 
             
                }
         | 
| 236 251 |  | 
| 252 | 
            +
                function cancelPayout(
         | 
| 253 | 
            +
                    NftId policyNftId,
         | 
| 254 | 
            +
                    PayoutId payoutId
         | 
| 255 | 
            +
                ) public {
         | 
| 256 | 
            +
                    _cancelPayout(policyNftId, payoutId);
         | 
| 257 | 
            +
                }
         | 
| 258 | 
            +
             | 
| 237 259 | 
             
                // TODO add test
         | 
| 238 260 | 
             
                function createPayoutForBeneficiary(
         | 
| 239 261 | 
             
                    NftId policyNftId,
         | 
| @@ -348,4 +370,8 @@ contract SimpleProduct is | |
| 348 370 | 
             
                function getOracleService() public view returns (IOracleService) {
         | 
| 349 371 | 
             
                    return _oracleService;
         | 
| 350 372 | 
             
                }
         | 
| 373 | 
            +
             | 
| 374 | 
            +
                function approveTokenHandler(IERC20Metadata token, Amount amount) external restricted() onlyOwner() { _approveTokenHandler(token, amount); }
         | 
| 375 | 
            +
                function setLocked(bool locked) external onlyOwner() { _setLocked(locked); }
         | 
| 376 | 
            +
                function setWallet(address newWallet) external restricted() onlyOwner() { _setWallet(newWallet); }
         | 
| 351 377 | 
             
            }
         | 
| @@ -1,20 +1,18 @@ | |
| 1 1 | 
             
            // SPDX-License-Identifier: Apache-2.0
         | 
| 2 2 | 
             
            pragma solidity ^0.8.20;
         | 
| 3 3 |  | 
| 4 | 
            -
            import {IInstance} from "./IInstance.sol";
         | 
| 5 | 
            -
            import {INSTANCE} from "../type/ObjectType.sol";
         | 
| 6 | 
            -
            import {InstanceReader} from "./InstanceReader.sol";
         | 
| 7 | 
            -
            import {IPolicy} from "../instance/module/IPolicy.sol";
         | 
| 8 | 
            -
            import {IRegistry} from "../registry/IRegistry.sol";
         | 
| 9 4 | 
             
            import {LibNftIdSet} from "../type/NftIdSet.sol";
         | 
| 10 | 
            -
            import {NftId} from "../type/NftId.sol";
         | 
| 11 | 
            -
            import { | 
| 5 | 
            +
            import {NftId, NftIdLib} from "../type/NftId.sol";
         | 
| 6 | 
            +
            import {Key32} from "../type/Key32.sol";
         | 
| 7 | 
            +
            import {BUNDLE} from "../type/ObjectType.sol";
         | 
| 12 8 |  | 
| 13 9 | 
             
            import {ObjectSet} from "./base/ObjectSet.sol";
         | 
| 10 | 
            +
            import {ObjectSetHelperLib} from "./base/ObjectSetHelperLib.sol";
         | 
| 14 11 |  | 
| 15 12 | 
             
            contract BundleSet is 
         | 
| 16 13 | 
             
                ObjectSet
         | 
| 17 14 | 
             
            {
         | 
| 15 | 
            +
                using LibNftIdSet for LibNftIdSet.Set;
         | 
| 18 16 |  | 
| 19 17 | 
             
                event LogBundleSetPolicyLinked(NftId bundleNftId, NftId policyNftId);
         | 
| 20 18 | 
             
                event LogBundleSetPolicyUnlinked(NftId bundleNftId, NftId policyNftId);
         | 
| @@ -34,93 +32,99 @@ contract BundleSet is | |
| 34 32 | 
             
                mapping(NftId bundleNftId => LibNftIdSet.Set policies) internal _activePolicies;
         | 
| 35 33 |  | 
| 36 34 | 
             
                /// @dev links a policy to its bundle
         | 
| 37 | 
            -
                 | 
| 38 | 
            -
                function linkPolicy(NftId policyNftId) external restricted() {
         | 
| 39 | 
            -
                    NftId bundleNftId = _instance.getInstanceReader().getPolicyInfo(policyNftId).bundleNftId;
         | 
| 40 | 
            -
                    // decision will likely depend on the decision what to check here and what in the service
         | 
| 41 | 
            -
                    NftId poolNftId = _instance.getInstanceReader().getBundleInfo(bundleNftId).poolNftId;
         | 
| 35 | 
            +
                function linkPolicy(NftId poolNftId, NftId bundleNftId, NftId policyNftId) external restricted() {
         | 
| 42 36 |  | 
| 43 37 | 
             
                    // ensure bundle is unlocked (in active set) and registered with this instance
         | 
| 44 | 
            -
                    if (!_isActive(poolNftId, bundleNftId)) {
         | 
| 38 | 
            +
                    if (!_isActive(poolNftId, _toBundleKey32(bundleNftId))) {
         | 
| 45 39 | 
             
                        revert ErrorBundleSetBundleLocked(bundleNftId, policyNftId);
         | 
| 46 40 | 
             
                    }
         | 
| 47 41 |  | 
| 48 | 
            -
                     | 
| 42 | 
            +
                    _activePolicies[bundleNftId].add(policyNftId);
         | 
| 49 43 | 
             
                    emit LogBundleSetPolicyLinked(bundleNftId, policyNftId);
         | 
| 50 44 | 
             
                }
         | 
| 51 45 |  | 
| 52 46 |  | 
| 53 47 | 
             
                /// @dev unlinks a policy from its bundle
         | 
| 54 | 
            -
                 | 
| 55 | 
            -
                // - the policy MUST be past its expiry period and it MUST NOT have any open claims
         | 
| 56 | 
            -
                // - the policy's payoutAmount MUST be equal to its sumInsuredAmount and MUST NOT have any open claims
         | 
| 57 | 
            -
                function unlinkPolicy(NftId policyNftId) external restricted() {
         | 
| 58 | 
            -
                    IPolicy.PolicyInfo memory policyInfo = _instance.getInstanceReader().getPolicyInfo(policyNftId);
         | 
| 59 | 
            -
             | 
| 60 | 
            -
                    NftId bundleNftId = policyInfo.bundleNftId;
         | 
| 61 | 
            -
                    // decision will likely depend on the decision what to check here and what in the service
         | 
| 62 | 
            -
                    NftId poolNftId = _instance.getInstanceReader().getBundleInfo(bundleNftId).poolNftId;
         | 
| 48 | 
            +
                function unlinkPolicy(NftId poolNftId, NftId bundleNftId, NftId policyNftId) external restricted() {
         | 
| 63 49 |  | 
| 64 50 | 
             
                    // ensure bundle is registered with this instance
         | 
| 65 | 
            -
                    if (!_contains(poolNftId, bundleNftId)) {
         | 
| 51 | 
            +
                    if (!_contains(poolNftId, _toBundleKey32(bundleNftId))) {
         | 
| 66 52 | 
             
                        revert ErrorBundleSetBundleUnknown(bundleNftId);
         | 
| 67 53 | 
             
                    }
         | 
| 68 54 |  | 
| 69 | 
            -
                     | 
| 70 | 
            -
                    emit LogBundleSetPolicyUnlinked( | 
| 55 | 
            +
                    _activePolicies[bundleNftId].remove(policyNftId);
         | 
| 56 | 
            +
                    emit LogBundleSetPolicyUnlinked(bundleNftId, policyNftId);
         | 
| 71 57 | 
             
                }
         | 
| 72 58 |  | 
| 73 59 |  | 
| 74 60 | 
             
                /// @dev add a new bundle to a pool registerd with this instance
         | 
| 75 61 | 
             
                // the corresponding pool is fetched via instance reader
         | 
| 76 62 | 
             
                function add(NftId bundleNftId) external restricted() {
         | 
| 77 | 
            -
                    NftId poolNftId =  | 
| 63 | 
            +
                    NftId poolNftId = ObjectSetHelperLib.getPoolNftId(_instanceAddress, bundleNftId);
         | 
| 78 64 |  | 
| 79 65 | 
             
                    // ensure pool is registered with instance
         | 
| 80 66 | 
             
                    if(poolNftId.eqz()) {
         | 
| 81 67 | 
             
                        revert ErrorBundleSetBundleNotRegistered(bundleNftId);
         | 
| 82 68 | 
             
                    }
         | 
| 83 69 |  | 
| 84 | 
            -
                    _add(poolNftId, bundleNftId);
         | 
| 70 | 
            +
                    _add(poolNftId, _toBundleKey32(bundleNftId));
         | 
| 85 71 | 
             
                    emit LogBundleSetBundleAdded(poolNftId, bundleNftId);
         | 
| 86 72 | 
             
                }
         | 
| 87 73 |  | 
| 88 74 |  | 
| 89 75 | 
             
                /// @dev unlocked (active) bundles are available to collateralize new policies
         | 
| 90 76 | 
             
                function unlock(NftId bundleNftId) external restricted() {
         | 
| 91 | 
            -
                    NftId poolNftId =  | 
| 92 | 
            -
                    _activate(poolNftId, bundleNftId);
         | 
| 77 | 
            +
                    NftId poolNftId = ObjectSetHelperLib.getPoolNftId(_instanceAddress, bundleNftId);
         | 
| 78 | 
            +
                    _activate(poolNftId, _toBundleKey32(bundleNftId));
         | 
| 93 79 | 
             
                    emit LogBundleSetBundleUnlocked(poolNftId, bundleNftId);
         | 
| 94 80 | 
             
                }
         | 
| 95 81 |  | 
| 96 82 | 
             
                /// @dev locked (deactivated) bundles may not collateralize any new policies
         | 
| 97 83 | 
             
                function lock(NftId bundleNftId) external restricted() {
         | 
| 98 | 
            -
                    NftId poolNftId =  | 
| 99 | 
            -
                    _deactivate(poolNftId, bundleNftId);
         | 
| 84 | 
            +
                    NftId poolNftId = ObjectSetHelperLib.getPoolNftId(_instanceAddress, bundleNftId);
         | 
| 85 | 
            +
                    _deactivate(poolNftId, _toBundleKey32(bundleNftId));
         | 
| 100 86 | 
             
                    emit LogBundleSetBundleLocked(poolNftId, bundleNftId);
         | 
| 101 87 | 
             
                }
         | 
| 102 88 |  | 
| 89 | 
            +
             | 
| 90 | 
            +
                function checkBundle(NftId productNftId, NftId bundleId)
         | 
| 91 | 
            +
                    public
         | 
| 92 | 
            +
                    view 
         | 
| 93 | 
            +
                    returns (bool exists, bool active)
         | 
| 94 | 
            +
                {
         | 
| 95 | 
            +
                    Key32 bundleKey32 = bundleId.toKey32(BUNDLE());
         | 
| 96 | 
            +
                    exists = _contains(productNftId, bundleKey32);
         | 
| 97 | 
            +
             | 
| 98 | 
            +
                    if (exists) {
         | 
| 99 | 
            +
                        active = _isActive(productNftId, bundleKey32);
         | 
| 100 | 
            +
                    }
         | 
| 101 | 
            +
                }
         | 
| 102 | 
            +
             | 
| 103 103 | 
             
                function bundles(NftId poolNftId) external view returns(uint256) {
         | 
| 104 104 | 
             
                    return _objects(poolNftId);
         | 
| 105 105 | 
             
                }
         | 
| 106 106 |  | 
| 107 | 
            -
                function getBundleNftId(NftId poolNftId, uint256 idx) external view returns(NftId | 
| 108 | 
            -
                    return _getObject(poolNftId, idx);
         | 
| 107 | 
            +
                function getBundleNftId(NftId poolNftId, uint256 idx) external view returns(NftId) {
         | 
| 108 | 
            +
                    return NftIdLib.toNftId(_getObject(poolNftId, idx).toKeyId());
         | 
| 109 109 | 
             
                }
         | 
| 110 110 |  | 
| 111 111 | 
             
                function activeBundles(NftId poolNftId) external view returns(uint256) {
         | 
| 112 112 | 
             
                    return _activeObjs(poolNftId);
         | 
| 113 113 | 
             
                }
         | 
| 114 114 |  | 
| 115 | 
            -
                function getActiveBundleNftId(NftId poolNftId, uint256 idx) external view returns(NftId | 
| 116 | 
            -
                    return _getActiveObject(poolNftId, idx);
         | 
| 115 | 
            +
                function getActiveBundleNftId(NftId poolNftId, uint256 idx) external view returns(NftId) {
         | 
| 116 | 
            +
                    return NftIdLib.toNftId(_getActiveObject(poolNftId, idx).toKeyId());
         | 
| 117 117 | 
             
                }
         | 
| 118 118 |  | 
| 119 119 | 
             
                function activePolicies(NftId bundleNftId) external view returns(uint256) {
         | 
| 120 | 
            -
                    return  | 
| 120 | 
            +
                    return _activePolicies[bundleNftId].size();
         | 
| 121 121 | 
             
                }
         | 
| 122 122 |  | 
| 123 123 | 
             
                function getActivePolicy(NftId bundleNftId, uint256 idx) external view returns(NftId policyNftId) {
         | 
| 124 | 
            -
                    return  | 
| 124 | 
            +
                    return _activePolicies[bundleNftId].getElementAt(idx);
         | 
| 125 | 
            +
                }
         | 
| 126 | 
            +
             | 
| 127 | 
            +
                function _toBundleKey32(NftId nftId) private pure returns (Key32) {
         | 
| 128 | 
            +
                    return nftId.toKey32(BUNDLE());
         | 
| 125 129 | 
             
                }
         | 
| 126 130 | 
             
            }
         | 
| @@ -1,26 +1,21 @@ | |
| 1 1 | 
             
            // SPDX-License-Identifier: Apache-2.0
         | 
| 2 2 | 
             
            pragma solidity ^0.8.20;
         | 
| 3 3 |  | 
| 4 | 
            -
            import {IAccessManaged} from "@openzeppelin/contracts/access/manager/IAccessManaged.sol";
         | 
| 5 | 
            -
             | 
| 6 4 | 
             
            import {Amount} from "../type/Amount.sol";
         | 
| 7 5 | 
             
            import {BundleSet} from "./BundleSet.sol";
         | 
| 6 | 
            +
            import {RiskSet} from "./RiskSet.sol";
         | 
| 8 7 | 
             
            import {InstanceAdmin} from "./InstanceAdmin.sol";
         | 
| 9 8 | 
             
            import {InstanceReader} from "./InstanceReader.sol";
         | 
| 10 9 | 
             
            import {InstanceStore} from "./InstanceStore.sol";
         | 
| 11 10 | 
             
            import {IRegisterable} from "../shared/IRegisterable.sol";
         | 
| 12 | 
            -
            import {ITransferInterceptor} from "../registry/ITransferInterceptor.sol";
         | 
| 13 11 | 
             
            import {NftId} from "../type/NftId.sol";
         | 
| 14 12 | 
             
            import {RoleId} from "../type/RoleId.sol";
         | 
| 15 13 | 
             
            import {Seconds} from "../type/Seconds.sol";
         | 
| 16 14 | 
             
            import {UFixed} from "../type/UFixed.sol";
         | 
| 17 | 
            -
            import {VersionPart} from "../type/Version.sol";
         | 
| 18 15 |  | 
| 19 16 |  | 
| 20 17 | 
             
            interface IInstance is 
         | 
| 21 | 
            -
                IRegisterable | 
| 22 | 
            -
                ITransferInterceptor, 
         | 
| 23 | 
            -
                IAccessManaged
         | 
| 18 | 
            +
                IRegisterable
         | 
| 24 19 | 
             
            {
         | 
| 25 20 | 
             
                error ErrorInstanceInstanceAdminZero();
         | 
| 26 21 | 
             
                error ErrorInstanceInstanceAdminAlreadySet(address InstanceAdmin);
         | 
| @@ -30,6 +25,10 @@ interface IInstance is | |
| 30 25 | 
             
                error ErrorInstanceBundleSetInstanceMismatch(address instance);
         | 
| 31 26 | 
             
                error ErrorInstanceBundleSetAuthorityMismatch(address instanceAuthority);
         | 
| 32 27 |  | 
| 28 | 
            +
                error ErrorInstanceRiskSetAlreadySet(address instanceRiskSet);
         | 
| 29 | 
            +
                error ErrorInstanceRiskSetInstanceMismatch(address instance);
         | 
| 30 | 
            +
                error ErrorInstanceRiskSetAuthorityMismatch(address instanceAuthority);
         | 
| 31 | 
            +
             | 
| 33 32 | 
             
                error ErrorInstanceInstanceReaderInstanceMismatch(address instanceAuthority);
         | 
| 34 33 |  | 
| 35 34 | 
             
                error ErrorInstanceInstanceStoreAlreadySet(address instanceStore);
         | 
| @@ -48,7 +47,7 @@ interface IInstance is | |
| 48 47 |  | 
| 49 48 | 
             
                function createTarget(address target, string memory name) external;
         | 
| 50 49 | 
             
                function setTargetFunctionRole(string memory targetName, bytes4[] calldata selectors, RoleId roleId) external;
         | 
| 51 | 
            -
                function  | 
| 50 | 
            +
                function setLocked(address target, bool locked) external;
         | 
| 52 51 |  | 
| 53 52 | 
             
                function setStakingLockingPeriod(Seconds stakeLockingPeriod) external;
         | 
| 54 53 | 
             
                function setStakingRewardRate(UFixed rewardRate) external;
         | 
| @@ -58,9 +57,14 @@ interface IInstance is | |
| 58 57 | 
             
                /// Permissioned: only the target owner may call this function.
         | 
| 59 58 | 
             
                function withdrawStakingRewardReserves(Amount dipAmount) external returns (Amount newBalance);
         | 
| 60 59 |  | 
| 61 | 
            -
                // get  | 
| 60 | 
            +
                // get products
         | 
| 61 | 
            +
                function products() external view returns (uint256 productCount);
         | 
| 62 | 
            +
                function getProductNftid(uint256 idx) external view returns (NftId productNftId);
         | 
| 63 | 
            +
             | 
| 64 | 
            +
                // get supporting contracts
         | 
| 62 65 | 
             
                function getInstanceReader() external view returns (InstanceReader);
         | 
| 63 66 | 
             
                function getBundleSet() external view returns (BundleSet);
         | 
| 67 | 
            +
                function getRiskSet() external view returns (RiskSet);
         | 
| 64 68 | 
             
                function getInstanceAdmin() external view returns (InstanceAdmin);
         | 
| 65 69 | 
             
                function getInstanceStore() external view returns (InstanceStore);
         | 
| 66 70 | 
             
            }
         | 
| @@ -2,13 +2,10 @@ | |
| 2 2 | 
             
            pragma solidity ^0.8.20;
         | 
| 3 3 |  | 
| 4 4 | 
             
            import {Amount} from "../type/Amount.sol";
         | 
| 5 | 
            -
            import { | 
| 6 | 
            -
            import {Instance} from "./Instance.sol";
         | 
| 7 | 
            -
            import {IInstanceLinkedComponent} from "../shared/IInstanceLinkedComponent.sol";
         | 
| 5 | 
            +
            import {IInstance} from "./IInstance.sol";
         | 
| 8 6 | 
             
            import {IService} from "../shared/IService.sol";
         | 
| 9 7 | 
             
            import {NftId} from "../type/NftId.sol";
         | 
| 10 8 | 
             
            import {ObjectType} from "../type/ObjectType.sol";
         | 
| 11 | 
            -
            import {RoleId} from "../type/RoleId.sol";
         | 
| 12 9 | 
             
            import {Seconds} from "../type/Seconds.sol";
         | 
| 13 10 | 
             
            import {UFixed} from "../type/UFixed.sol";
         | 
| 14 11 | 
             
            import {VersionPart} from "../type/Version.sol";
         | 
| @@ -25,6 +22,7 @@ interface IInstanceService is IService { | |
| 25 22 | 
             
                error ErrorInstanceServiceMasterInstanceAlreadySet();
         | 
| 26 23 | 
             
                error ErrorInstanceServiceMasterInstanceAdminAlreadySet();
         | 
| 27 24 | 
             
                error ErrorInstanceServiceMasterBundleSetAlreadySet();
         | 
| 25 | 
            +
                error ErrorInstanceServiceMasterRiskSetAlreadySet();
         | 
| 28 26 | 
             
                error ErrorInstanceServiceInstanceAddressZero();
         | 
| 29 27 |  | 
| 30 28 | 
             
                error ErrorInstanceServiceMasterInstanceReaderNotSet();
         | 
| @@ -36,12 +34,15 @@ interface IInstanceService is IService { | |
| 36 34 | 
             
                error ErrorInstanceServiceInstanceAdminZero();
         | 
| 37 35 | 
             
                error ErrorInstanceServiceInstanceReaderZero();
         | 
| 38 36 | 
             
                error ErrorInstanceServiceBundleSetZero();
         | 
| 37 | 
            +
                error ErrorInstanceServiceRiskSetZero();
         | 
| 39 38 | 
             
                error ErrorInstanceServiceInstanceStoreZero();
         | 
| 40 39 |  | 
| 41 40 | 
             
                error ErrorInstanceServiceInstanceAuthorityMismatch();
         | 
| 42 41 | 
             
                error ErrorInstanceServiceBundleSetAuthorityMismatch();
         | 
| 42 | 
            +
                error ErrorInstanceServiceRiskSetAuthorityMismatch();
         | 
| 43 43 | 
             
                error ErrorInstanceServiceInstanceReaderInstanceMismatch2();
         | 
| 44 | 
            -
                error  | 
| 44 | 
            +
                error ErrorInstanceServiceBundleSetInstanceMismatch();
         | 
| 45 | 
            +
                error ErrorInstanceServiceRiskSetInstanceMismatch();
         | 
| 45 46 | 
             
                error ErrorInstanceServiceInstanceStoreAuthorityMismatch();
         | 
| 46 47 |  | 
| 47 48 | 
             
                error ErrorInstanceServiceRequestUnauhorized(address caller);
         | 
| @@ -55,11 +56,12 @@ interface IInstanceService is IService { | |
| 55 56 | 
             
                function createInstance()
         | 
| 56 57 | 
             
                    external 
         | 
| 57 58 | 
             
                    returns (
         | 
| 58 | 
            -
                         | 
| 59 | 
            -
                        Instance clonedInstance,
         | 
| 59 | 
            +
                        IInstance instance,
         | 
| 60 60 | 
             
                        NftId instanceNftId
         | 
| 61 61 | 
             
                    );
         | 
| 62 62 |  | 
| 63 | 
            +
                function upgradeInstanceReader(NftId instanceNftId) external;
         | 
| 64 | 
            +
                function upgradeMasterInstanceReader(address instanceReaderAddress) external;
         | 
| 63 65 |  | 
| 64 66 | 
             
                function setStakingLockingPeriod(Seconds stakeLockingPeriod) external;
         | 
| 65 67 | 
             
                function setStakingRewardRate(UFixed rewardRate) external;
         | 
| @@ -67,6 +69,4 @@ interface IInstanceService is IService { | |
| 67 69 |  | 
| 68 70 | 
             
                /// @dev Defunds the staking reward reserves for the specified target.
         | 
| 69 71 | 
             
                function withdrawStakingRewardReserves(Amount dipAmount) external returns (Amount newBalance);
         | 
| 70 | 
            -
             | 
| 71 | 
            -
                function setComponentLocked(bool locked) external;
         | 
| 72 72 | 
             
            }
         | 
| @@ -1,10 +1,9 @@ | |
| 1 1 | 
             
            // SPDX-License-Identifier: Apache-2.0
         | 
| 2 2 | 
             
            pragma solidity ^0.8.20;
         | 
| 3 3 |  | 
| 4 | 
            -
            import {AccessManagedUpgradeable} from "@openzeppelin/contracts-upgradeable/access/manager/AccessManagedUpgradeable.sol";
         | 
| 5 | 
            -
             | 
| 6 4 | 
             
            import {Amount} from "../type/Amount.sol";
         | 
| 7 5 | 
             
            import {BundleSet} from "./BundleSet.sol";
         | 
| 6 | 
            +
            import {RiskSet} from "./RiskSet.sol";
         | 
| 8 7 | 
             
            import {COMPONENT, INSTANCE} from "../type/ObjectType.sol";
         | 
| 9 8 | 
             
            import {IInstance} from "./IInstance.sol";
         | 
| 10 9 | 
             
            import {IComponentService} from "../shared/IComponentService.sol";
         | 
| @@ -18,21 +17,22 @@ import {Registerable} from "../shared/Registerable.sol"; | |
| 18 17 | 
             
            import {RoleId} from "../type/RoleId.sol";
         | 
| 19 18 | 
             
            import {Seconds} from "../type/Seconds.sol";
         | 
| 20 19 | 
             
            import {UFixed} from "../type/UFixed.sol";
         | 
| 21 | 
            -
            import {VersionPart, VersionPartLib} from "../type/Version.sol";
         | 
| 22 20 |  | 
| 23 21 | 
             
            contract Instance is
         | 
| 24 22 | 
             
                IInstance,
         | 
| 25 | 
            -
                AccessManagedUpgradeable,
         | 
| 26 23 | 
             
                Registerable
         | 
| 27 24 | 
             
            {
         | 
| 28 25 | 
             
                bool private _initialized;
         | 
| 29 26 |  | 
| 30 27 | 
             
                IComponentService internal _componentService;
         | 
| 31 28 | 
             
                IInstanceService internal _instanceService;
         | 
| 29 | 
            +
             | 
| 32 30 | 
             
                InstanceAdmin internal _instanceAdmin;
         | 
| 33 31 | 
             
                InstanceReader internal _instanceReader;
         | 
| 34 | 
            -
                BundleSet internal  | 
| 32 | 
            +
                BundleSet internal _bundleSet;
         | 
| 33 | 
            +
                RiskSet internal _riskSet;
         | 
| 35 34 | 
             
                InstanceStore internal _instanceStore;
         | 
| 35 | 
            +
                NftId [] internal _products;
         | 
| 36 36 |  | 
| 37 37 | 
             
                modifier onlyChainNft() {
         | 
| 38 38 | 
             
                    if(msg.sender != getRegistry().getChainNftAddress()) {
         | 
| @@ -44,7 +44,8 @@ contract Instance is | |
| 44 44 | 
             
                function initialize(
         | 
| 45 45 | 
             
                    InstanceAdmin instanceAdmin, 
         | 
| 46 46 | 
             
                    InstanceStore instanceStore,
         | 
| 47 | 
            -
                    BundleSet  | 
| 47 | 
            +
                    BundleSet bundleSet,
         | 
| 48 | 
            +
                    RiskSet riskSet,
         | 
| 48 49 | 
             
                    InstanceReader instanceReader,
         | 
| 49 50 | 
             
                    IRegistry registry, 
         | 
| 50 51 | 
             
                    address initialOwner
         | 
| @@ -52,16 +53,15 @@ contract Instance is | |
| 52 53 | 
             
                    external 
         | 
| 53 54 | 
             
                    initializer()
         | 
| 54 55 | 
             
                {
         | 
| 55 | 
            -
                     | 
| 56 | 
            -
                    if(_instanceAdmin.authority() == address(0)) {
         | 
| 56 | 
            +
                    if(address(instanceAdmin) == address(0)) {
         | 
| 57 57 | 
             
                        revert ErrorInstanceInstanceAdminZero();
         | 
| 58 58 | 
             
                    }
         | 
| 59 59 |  | 
| 60 | 
            -
                     | 
| 61 | 
            -
                    __AccessManaged_init(_instanceAdmin.authority());
         | 
| 60 | 
            +
                    _instanceAdmin = instanceAdmin;
         | 
| 62 61 |  | 
| 63 62 | 
             
                    // setup instance object info
         | 
| 64 | 
            -
                     | 
| 63 | 
            +
                    __Registerable_init(
         | 
| 64 | 
            +
                        instanceAdmin.authority(),
         | 
| 65 65 | 
             
                        address(registry), 
         | 
| 66 66 | 
             
                        registry.getNftId(), 
         | 
| 67 67 | 
             
                        INSTANCE(), 
         | 
| @@ -71,12 +71,14 @@ contract Instance is | |
| 71 71 |  | 
| 72 72 | 
             
                    // store instance supporting contracts
         | 
| 73 73 | 
             
                    _instanceStore = instanceStore;
         | 
| 74 | 
            -
                     | 
| 74 | 
            +
                    _bundleSet = bundleSet;
         | 
| 75 | 
            +
                    _riskSet = riskSet;
         | 
| 75 76 | 
             
                    _instanceReader = instanceReader;
         | 
| 76 77 |  | 
| 77 78 | 
             
                    // initialize instance supporting contracts
         | 
| 78 79 | 
             
                    _instanceStore.initialize();
         | 
| 79 | 
            -
                     | 
| 80 | 
            +
                    _bundleSet.initialize(instanceAdmin.authority(), address(registry));
         | 
| 81 | 
            +
                    _riskSet.initialize(instanceAdmin.authority(), address(registry));
         | 
| 80 82 | 
             
                    _instanceReader.initialize();
         | 
| 81 83 |  | 
| 82 84 | 
             
                    _componentService = IComponentService(
         | 
| @@ -93,12 +95,14 @@ contract Instance is | |
| 93 95 | 
             
                }
         | 
| 94 96 |  | 
| 95 97 | 
             
                //--- ProductRegistration ----------------------------------------------//
         | 
| 98 | 
            +
             | 
| 96 99 | 
             
                function registerProduct(address product)
         | 
| 97 100 | 
             
                    external
         | 
| 98 101 | 
             
                    onlyOwner()
         | 
| 99 102 | 
             
                    returns (NftId productNftId)
         | 
| 100 103 | 
             
                {
         | 
| 101 | 
            -
                     | 
| 104 | 
            +
                    productNftId = _componentService.registerProduct(product);
         | 
| 105 | 
            +
                    _products.push(productNftId);
         | 
| 102 106 | 
             
                }
         | 
| 103 107 |  | 
| 104 108 | 
             
                //--- Staking ----------------------------------------------------------//
         | 
| @@ -181,12 +185,11 @@ contract Instance is | |
| 181 185 | 
             
                    // _instanceAdmin.setTargetFunctionRoleByInstance(targetName, selectors, roleId);
         | 
| 182 186 | 
             
                }
         | 
| 183 187 |  | 
| 184 | 
            -
                function  | 
| 188 | 
            +
                function setLocked(address target, bool locked)
         | 
| 185 189 | 
             
                    external 
         | 
| 186 190 | 
             
                    onlyOwner()
         | 
| 187 191 | 
             
                {
         | 
| 188 | 
            -
                     | 
| 189 | 
            -
                    // _instanceAdmin.setTargetLockedByInstance(target, locked);
         | 
| 192 | 
            +
                    _componentService.setLockedFromInstance(target, locked);
         | 
| 190 193 | 
             
                }
         | 
| 191 194 |  | 
| 192 195 | 
             
                //--- ITransferInterceptor ----------------------------------------------//
         | 
| @@ -212,12 +215,24 @@ contract Instance is | |
| 212 215 |  | 
| 213 216 | 
             
                //--- external view functions -------------------------------------------//
         | 
| 214 217 |  | 
| 218 | 
            +
                function products() external view returns (uint256 productCount) {
         | 
| 219 | 
            +
                    return _products.length;
         | 
| 220 | 
            +
                }
         | 
| 221 | 
            +
             | 
| 222 | 
            +
                function getProductNftid(uint256 idx) external view returns (NftId productNftId) {
         | 
| 223 | 
            +
                    return _products[idx];
         | 
| 224 | 
            +
                }
         | 
| 225 | 
            +
             | 
| 215 226 | 
             
                function getInstanceReader() external view returns (InstanceReader) {
         | 
| 216 227 | 
             
                    return _instanceReader;
         | 
| 217 228 | 
             
                }
         | 
| 218 229 |  | 
| 219 230 | 
             
                function getBundleSet() external view returns (BundleSet) {
         | 
| 220 | 
            -
                    return  | 
| 231 | 
            +
                    return _bundleSet;
         | 
| 232 | 
            +
                }
         | 
| 233 | 
            +
             | 
| 234 | 
            +
                function getRiskSet() external view returns (RiskSet) {
         | 
| 235 | 
            +
                    return _riskSet;
         | 
| 221 236 | 
             
                }
         | 
| 222 237 |  | 
| 223 238 | 
             
                function getInstanceAdmin() external view returns (InstanceAdmin) {
         |