@etherisc/gif-next 0.0.2-d0b1ffb-653 → 0.0.2-d0faf15-906
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 +103 -55
- package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.dbg.json +4 -0
- package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.json +24 -0
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +233 -5
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +2 -2
- package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +1 -1
- package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +1 -1
- package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +37 -5
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +2 -2
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +106 -186
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +2 -2
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +57 -89
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +166 -104
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +81 -51
- 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 +102 -165
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +49 -17
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +258 -295
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +17 -17
- 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 +470 -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 +502 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +630 -317
- package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +470 -0
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +193 -45
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +94 -47
- 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 +131 -56
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +240 -93
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +40 -27
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +478 -197
- 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/IAccess.sol/IAccess.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
- package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
- package/artifacts/contracts/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 +2 -2
- package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
- package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +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 +49 -17
- package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +128 -226
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +60 -74
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +46 -60
- 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 +104 -78
- 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/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +175 -174
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +64 -38
- 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 +2 -2
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +251 -144
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +79 -57
- 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 +143 -3
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +65 -22
- 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 +158 -140
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +73 -47
- 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 +31 -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 +69 -40
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +188 -213
- 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 +1795 -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 +310 -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 +250 -421
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +71 -61
- 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 +134 -248
- 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 +388 -35
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +4 -0
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +395 -0
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +88 -24
- package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
- package/artifacts/contracts/staking/IStaking.sol/IStaking.json +62 -80
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +27 -3
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +3 -3
- package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
- package/artifacts/contracts/staking/Staking.sol/Staking.json +134 -173
- 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 +58 -46
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +2 -2
- package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingService.sol/StakingService.json +73 -50
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +46 -24
- 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 +3 -3
- 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/SelectorSetLib.dbg.json +1 -1
- 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 +136 -73
- package/contracts/authorization/AccessManagerCloneable.sol +136 -3
- package/contracts/authorization/IAccessAdmin.sol +6 -3
- package/contracts/distribution/BasicDistribution.sol +6 -6
- package/contracts/distribution/BasicDistributionAuthorization.sol +1 -1
- package/contracts/distribution/Distribution.sol +32 -30
- package/contracts/distribution/DistributionService.sol +36 -33
- package/contracts/distribution/DistributionServiceManager.sol +1 -1
- package/contracts/distribution/IDistributionService.sol +5 -6
- package/contracts/examples/fire/FirePool.sol +25 -10
- package/contracts/examples/fire/FirePoolAuthorization.sol +1 -0
- package/contracts/examples/fire/FireProduct.sol +38 -12
- package/contracts/examples/fire/FireProductAuthorization.sol +1 -0
- package/contracts/examples/unpermissioned/SimpleDistribution.sol +7 -0
- package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +28 -0
- package/contracts/examples/unpermissioned/SimplePool.sol +33 -2
- package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
- package/contracts/examples/unpermissioned/SimpleProduct.sol +40 -21
- package/contracts/examples/unpermissioned/SimpleProductAuthorization.sol +28 -0
- package/contracts/instance/BundleSet.sol +42 -38
- package/contracts/instance/IInstance.sol +8 -8
- package/contracts/instance/IInstanceService.sol +9 -9
- package/contracts/instance/Instance.sol +20 -17
- package/contracts/instance/InstanceAdmin.sol +98 -49
- package/contracts/instance/InstanceAuthorizationV3.sol +45 -14
- package/contracts/instance/InstanceReader.sol +108 -7
- package/contracts/instance/InstanceService.sol +73 -79
- 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/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 +12 -1
- package/contracts/pool/BundleService.sol +71 -107
- package/contracts/pool/BundleServiceManager.sol +1 -1
- package/contracts/pool/IBundleService.sol +2 -24
- package/contracts/pool/IPoolComponent.sol +1 -7
- package/contracts/pool/IPoolService.sol +12 -26
- package/contracts/pool/Pool.sol +112 -102
- package/contracts/pool/PoolService.sol +194 -104
- package/contracts/pool/PoolServiceManager.sol +1 -1
- package/contracts/product/ApplicationService.sol +24 -16
- package/contracts/product/ApplicationServiceManager.sol +1 -1
- package/contracts/product/BasicProduct.sol +9 -11
- package/contracts/product/BasicProductAuthorization.sol +1 -2
- package/contracts/product/ClaimService.sol +188 -71
- package/contracts/product/ClaimServiceManager.sol +1 -1
- package/contracts/product/IApplicationService.sol +5 -2
- package/contracts/product/IClaimService.sol +13 -0
- package/contracts/product/IPolicyService.sol +17 -7
- package/contracts/product/IProductComponent.sol +4 -1
- package/contracts/product/PolicyService.sol +248 -195
- package/contracts/product/PolicyServiceManager.sol +1 -1
- package/contracts/product/PricingService.sol +27 -20
- package/contracts/product/PricingServiceManager.sol +3 -3
- package/contracts/product/Product.sol +47 -39
- package/contracts/product/RiskService.sol +78 -23
- 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 +12 -3
- package/contracts/registry/RegistryAdmin.sol +121 -225
- 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 +88 -40
- package/contracts/registry/TokenRegistry.sol +6 -8
- package/contracts/shared/Component.sol +59 -98
- package/contracts/shared/ComponentService.sol +206 -241
- package/contracts/shared/ComponentServiceManager.sol +1 -1
- package/contracts/shared/ComponentVerifyingService.sol +15 -13
- package/contracts/shared/ContractLib.sol +223 -9
- package/contracts/shared/IComponent.sol +4 -17
- package/contracts/shared/IComponentService.sol +20 -24
- 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 +2 -18
- package/contracts/shared/NftOwnable.sol +9 -5
- 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 +316 -66
- package/contracts/shared/TokenHandlerDeployerLib.sol +10 -2
- package/contracts/staking/IStaking.sol +9 -4
- package/contracts/staking/Staking.sol +62 -33
- package/contracts/staking/StakingService.sol +55 -9
- 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 +32 -18
- package/contracts/type/RiskId.sol +23 -6
- package/contracts/type/RoleId.sol +5 -2
- 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/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
@@ -3,45 +3,40 @@ pragma solidity ^0.8.20;
|
|
3
3
|
|
4
4
|
import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
|
5
5
|
|
6
|
-
import {
|
7
|
-
import {
|
6
|
+
import {IAccountingService} from "../accounting/IAccountingService.sol";
|
7
|
+
import {IComponentService} from "../shared/IComponentService.sol";
|
8
8
|
import {IComponents} from "../instance/module/IComponents.sol";
|
9
|
+
import {IDistributionService} from "../distribution/IDistributionService.sol";
|
10
|
+
import {InstanceReader} from "../instance/InstanceReader.sol";
|
11
|
+
import {InstanceStore} from "../instance/InstanceStore.sol";
|
9
12
|
import {IInstance} from "../instance/IInstance.sol";
|
10
13
|
import {IPolicy} from "../instance/module/IPolicy.sol";
|
14
|
+
import {IPolicyHolder} from "../shared/IPolicyHolder.sol";
|
15
|
+
import {IPolicyService} from "./IPolicyService.sol";
|
16
|
+
import {IPoolService} from "../pool/IPoolService.sol";
|
17
|
+
import {IPricingService} from "./IPricingService.sol";
|
18
|
+
import {IRegistry} from "../registry/IRegistry.sol";
|
11
19
|
|
12
|
-
import {
|
13
|
-
|
14
|
-
import {Amount, AmountLib} from "../type/Amount.sol";
|
15
|
-
import {Timestamp, TimestampLib, zeroTimestamp} from "../type/Timestamp.sol";
|
16
|
-
import {ObjectType, APPLICATION, COMPONENT, DISTRIBUTION, PRODUCT, POOL, POLICY, BUNDLE, CLAIM, PRICE} from "../type/ObjectType.sol";
|
20
|
+
import {Amount} from "../type/Amount.sol";
|
17
21
|
import {APPLIED, COLLATERALIZED, KEEP_STATE, CLOSED, DECLINED, PAID} from "../type/StateId.sol";
|
18
|
-
import {
|
22
|
+
import {ContractLib} from "../shared/ContractLib.sol";
|
23
|
+
import {NftId} from "../type/NftId.sol";
|
24
|
+
import {ObjectType, ACCOUNTING, COMPONENT, DISTRIBUTION, PRODUCT, POOL, POLICY, PRICE} from "../type/ObjectType.sol";
|
19
25
|
import {ReferralId} from "../type/Referral.sol";
|
26
|
+
import {RiskId} from "../type/RiskId.sol";
|
27
|
+
import {Service} from "../shared/Service.sol";
|
20
28
|
import {StateId} from "../type/StateId.sol";
|
29
|
+
import {Timestamp, TimestampLib} from "../type/Timestamp.sol";
|
30
|
+
import {TokenHandler} from "../shared/TokenHandler.sol";
|
21
31
|
import {VersionPart} from "../type/Version.sol";
|
22
32
|
|
23
|
-
import {ComponentVerifyingService} from "../shared/ComponentVerifyingService.sol";
|
24
|
-
import {ContractLib} from "../shared/ContractLib.sol";
|
25
|
-
import {IApplicationService} from "./IApplicationService.sol";
|
26
|
-
import {IBundleService} from "../pool/IBundleService.sol";
|
27
|
-
import {IClaimService} from "./IClaimService.sol";
|
28
|
-
import {IComponentService} from "../shared/IComponentService.sol";
|
29
|
-
import {IDistributionService} from "../distribution/IDistributionService.sol";
|
30
|
-
import {InstanceReader} from "../instance/InstanceReader.sol";
|
31
|
-
import {InstanceStore} from "../instance/InstanceStore.sol";
|
32
|
-
import {IPolicyHolder} from "../shared/IPolicyHolder.sol";
|
33
|
-
import {IPolicyService} from "./IPolicyService.sol";
|
34
|
-
import {IPoolService} from "../pool/IPoolService.sol";
|
35
|
-
import {IPricingService} from "./IPricingService.sol";
|
36
33
|
|
37
34
|
contract PolicyService is
|
38
|
-
|
35
|
+
Service,
|
39
36
|
IPolicyService
|
40
37
|
{
|
41
|
-
|
38
|
+
IAccountingService private _accountingService;
|
42
39
|
IComponentService internal _componentService;
|
43
|
-
IBundleService internal _bundleService;
|
44
|
-
IClaimService internal _claimService;
|
45
40
|
IDistributionService internal _distributionService;
|
46
41
|
IPoolService internal _poolService;
|
47
42
|
IPricingService internal _pricingService;
|
@@ -55,17 +50,15 @@ contract PolicyService is
|
|
55
50
|
initializer
|
56
51
|
{
|
57
52
|
(
|
58
|
-
address
|
59
|
-
address
|
53
|
+
address authority,
|
54
|
+
address registry
|
60
55
|
) = abi.decode(data, (address, address));
|
61
56
|
|
62
|
-
|
57
|
+
__Service_init(authority, registry, owner);
|
63
58
|
|
64
59
|
VersionPart majorVersion = getVersion().toMajorPart();
|
65
|
-
|
66
|
-
_bundleService = IBundleService(getRegistry().getServiceAddress(BUNDLE(), majorVersion));
|
60
|
+
_accountingService = IAccountingService(getRegistry().getServiceAddress(ACCOUNTING(), majorVersion));
|
67
61
|
_componentService = IComponentService(getRegistry().getServiceAddress(COMPONENT(), majorVersion));
|
68
|
-
_claimService = IClaimService(getRegistry().getServiceAddress(CLAIM(), majorVersion));
|
69
62
|
_poolService = IPoolService(getRegistry().getServiceAddress(POOL(), majorVersion));
|
70
63
|
_distributionService = IDistributionService(getRegistry().getServiceAddress(DISTRIBUTION(), majorVersion));
|
71
64
|
_pricingService = IPricingService(getRegistry().getServiceAddress(PRICE(), majorVersion));
|
@@ -81,24 +74,15 @@ contract PolicyService is
|
|
81
74
|
virtual
|
82
75
|
nonReentrant()
|
83
76
|
{
|
84
|
-
|
85
|
-
|
77
|
+
// checks
|
78
|
+
(IInstance instance,,) = _getAndVerifyCallerForPolicy(applicationNftId);
|
86
79
|
|
87
80
|
// check policy is in state applied
|
88
|
-
if (
|
81
|
+
if (instance.getInstanceReader().getPolicyState(applicationNftId) != APPLIED()) {
|
89
82
|
revert ErrorPolicyServicePolicyStateNotApplied(applicationNftId);
|
90
83
|
}
|
91
84
|
|
92
|
-
//
|
93
|
-
IPolicy.PolicyInfo memory applicationInfo = instanceReader.getPolicyInfo(applicationNftId);
|
94
|
-
if(applicationInfo.productNftId != productNftId) {
|
95
|
-
revert ErrorPolicyServicePolicyProductMismatch(
|
96
|
-
applicationNftId,
|
97
|
-
applicationInfo.productNftId,
|
98
|
-
productNftId);
|
99
|
-
}
|
100
|
-
|
101
|
-
|
85
|
+
// effects
|
102
86
|
// store updated policy info
|
103
87
|
instance.getInstanceStore().updatePolicyState(
|
104
88
|
applicationNftId,
|
@@ -116,25 +100,22 @@ contract PolicyService is
|
|
116
100
|
external
|
117
101
|
virtual
|
118
102
|
nonReentrant()
|
103
|
+
returns (Amount premiumAmount)
|
119
104
|
{
|
120
|
-
//
|
121
|
-
(
|
122
|
-
|
105
|
+
// checks
|
106
|
+
(
|
107
|
+
IInstance instance,
|
108
|
+
NftId productNftId,
|
109
|
+
IPolicy.PolicyInfo memory applicationInfo
|
110
|
+
) = _getAndVerifyCallerForPolicy(applicationNftId);
|
123
111
|
|
124
112
|
// check policy is in state applied
|
113
|
+
InstanceReader instanceReader = instance.getInstanceReader();
|
125
114
|
if (instanceReader.getPolicyState(applicationNftId) != APPLIED()) {
|
126
115
|
revert ErrorPolicyServicePolicyStateNotApplied(applicationNftId);
|
127
116
|
}
|
128
117
|
|
129
|
-
//
|
130
|
-
IPolicy.PolicyInfo memory applicationInfo = instanceReader.getPolicyInfo(applicationNftId);
|
131
|
-
if(applicationInfo.productNftId != productNftId) {
|
132
|
-
revert ErrorPolicyServicePolicyProductMismatch(
|
133
|
-
applicationNftId,
|
134
|
-
applicationInfo.productNftId,
|
135
|
-
productNftId);
|
136
|
-
}
|
137
|
-
|
118
|
+
// effects
|
138
119
|
// actual collateralizaion
|
139
120
|
_poolService.lockCollateral(
|
140
121
|
instance,
|
@@ -145,11 +126,8 @@ contract PolicyService is
|
|
145
126
|
applicationInfo.sumInsuredAmount);
|
146
127
|
|
147
128
|
// optional activation of policy
|
148
|
-
if(activateAt >
|
149
|
-
applicationInfo = _activate(
|
150
|
-
applicationNftId,
|
151
|
-
applicationInfo,
|
152
|
-
activateAt);
|
129
|
+
if(activateAt > TimestampLib.zero()) {
|
130
|
+
applicationInfo = _activate(applicationNftId, applicationInfo, activateAt);
|
153
131
|
}
|
154
132
|
|
155
133
|
// update policy and set state to collateralized
|
@@ -159,35 +137,42 @@ contract PolicyService is
|
|
159
137
|
COLLATERALIZED());
|
160
138
|
|
161
139
|
// calculate and store premium
|
140
|
+
RiskId riskId = applicationInfo.riskId;
|
141
|
+
NftId bundleNftId = applicationInfo.bundleNftId;
|
142
|
+
|
162
143
|
IPolicy.PremiumInfo memory premium = _pricingService.calculatePremium(
|
163
144
|
productNftId,
|
164
|
-
|
145
|
+
riskId,
|
165
146
|
applicationInfo.sumInsuredAmount,
|
166
147
|
applicationInfo.lifetime,
|
167
148
|
applicationInfo.applicationData,
|
168
|
-
|
149
|
+
bundleNftId,
|
169
150
|
applicationInfo.referralId);
|
170
151
|
|
152
|
+
premiumAmount = premium.fullPremiumAmount;
|
171
153
|
instance.getInstanceStore().createPremium(
|
172
154
|
applicationNftId,
|
173
155
|
premium);
|
174
156
|
|
175
|
-
// update referral counter
|
157
|
+
// update referral counter if product has linked distributino component
|
176
158
|
{
|
177
159
|
IComponents.ProductInfo memory productInfo = instanceReader.getProductInfo(productNftId);
|
178
|
-
|
179
|
-
if (! productInfo.distributionNftId.eqz()) { // only call distribution service if a distribution component is connected to the product
|
160
|
+
if (productInfo.hasDistribution) {
|
180
161
|
_distributionService.processReferral(
|
181
162
|
productInfo.distributionNftId,
|
182
163
|
applicationInfo.referralId);
|
183
164
|
}
|
184
165
|
}
|
185
166
|
|
167
|
+
// link policy to risk and bundle
|
168
|
+
NftId poolNftId = getRegistry().getObjectInfo(bundleNftId).parentNftId;
|
169
|
+
instance.getRiskSet().linkPolicy(productNftId, riskId, applicationNftId);
|
170
|
+
instance.getBundleSet().linkPolicy(poolNftId, bundleNftId, applicationNftId);
|
171
|
+
|
186
172
|
// log policy creation before interactions with token and policy holder
|
187
173
|
emit LogPolicyServicePolicyCreated(applicationNftId, premium.premiumAmount, activateAt);
|
188
174
|
|
189
|
-
//
|
190
|
-
|
175
|
+
// interactions
|
191
176
|
// callback to policy holder if applicable
|
192
177
|
_policyHolderPolicyActivated(applicationNftId, activateAt);
|
193
178
|
}
|
@@ -202,28 +187,40 @@ contract PolicyService is
|
|
202
187
|
virtual
|
203
188
|
nonReentrant()
|
204
189
|
{
|
205
|
-
//
|
206
|
-
(
|
207
|
-
|
208
|
-
|
190
|
+
// checks
|
191
|
+
(
|
192
|
+
IInstance instance,
|
193
|
+
NftId productNftId,
|
194
|
+
IPolicy.PolicyInfo memory policyInfo
|
195
|
+
) = _getAndVerifyCallerForPolicy(policyNftId);
|
209
196
|
|
210
|
-
// check policy is in state collateralized
|
211
|
-
|
197
|
+
// check policy is in state collateralized
|
198
|
+
InstanceReader instanceReader = instance.getInstanceReader();
|
199
|
+
if (instanceReader.getPolicyState(policyNftId) != COLLATERALIZED()) {
|
212
200
|
revert ErrorPolicyServicePolicyStateNotCollateralized(policyNftId);
|
213
201
|
}
|
214
202
|
|
215
|
-
// check if premium
|
203
|
+
// check if premium has already been collected
|
216
204
|
if (instanceReader.getPremiumInfoState(policyNftId) == PAID()) {
|
217
205
|
revert ErrorPolicyServicePremiumAlreadyPaid(policyNftId);
|
218
206
|
}
|
219
207
|
|
220
|
-
|
221
|
-
IPolicy.PremiumInfo memory premium = instanceReader.getPremiumInfo(policyNftId);
|
222
|
-
|
223
|
-
|
224
|
-
|
225
|
-
|
226
|
-
|
208
|
+
// check funds and allowance of policy holder
|
209
|
+
IPolicy.PremiumInfo memory premium = instanceReader.getPremiumInfo(policyNftId);
|
210
|
+
TokenHandler tokenHandler = _getTokenHandler(instanceReader, policyInfo.productNftId);
|
211
|
+
_checkPremiumBalanceAndAllowance(
|
212
|
+
tokenHandler.TOKEN(),
|
213
|
+
address(tokenHandler),
|
214
|
+
getRegistry().ownerOf(policyNftId),
|
215
|
+
premium.premiumAmount);
|
216
|
+
|
217
|
+
// effects
|
218
|
+
_processSale(
|
219
|
+
instanceReader,
|
220
|
+
instance.getInstanceStore(),
|
221
|
+
productNftId,
|
222
|
+
policyInfo.bundleNftId,
|
223
|
+
policyInfo.referralId,
|
227
224
|
premium);
|
228
225
|
|
229
226
|
// optionally activate policy
|
@@ -237,27 +234,31 @@ contract PolicyService is
|
|
237
234
|
// log premium collection before interactions with token
|
238
235
|
emit LogPolicyServicePolicyPremiumCollected(policyNftId, premium.premiumAmount);
|
239
236
|
|
237
|
+
// interactions
|
240
238
|
_transferFunds(instanceReader, policyNftId, policyInfo.productNftId, premium);
|
241
239
|
}
|
242
240
|
|
241
|
+
|
243
242
|
/// @inheritdoc IPolicyService
|
244
243
|
function activate(NftId policyNftId, Timestamp activateAt)
|
245
244
|
external
|
246
245
|
virtual
|
247
246
|
nonReentrant()
|
248
247
|
{
|
249
|
-
//
|
250
|
-
(
|
251
|
-
|
248
|
+
// checks
|
249
|
+
(
|
250
|
+
IInstance instance,,
|
251
|
+
IPolicy.PolicyInfo memory policyInfo
|
252
|
+
) = _getAndVerifyCallerForPolicy(policyNftId);
|
252
253
|
|
253
|
-
|
254
|
+
// effects
|
254
255
|
policyInfo = _activate(policyNftId, policyInfo, activateAt);
|
255
|
-
|
256
256
|
instance.getInstanceStore().updatePolicy(policyNftId, policyInfo, KEEP_STATE());
|
257
257
|
|
258
258
|
// log policy activation before interactions with policy holder
|
259
259
|
emit LogPolicyServicePolicyActivated(policyNftId, activateAt);
|
260
260
|
|
261
|
+
// interactions
|
261
262
|
// callback to policy holder if applicable
|
262
263
|
_policyHolderPolicyActivated(policyNftId, activateAt);
|
263
264
|
}
|
@@ -273,24 +274,22 @@ contract PolicyService is
|
|
273
274
|
nonReentrant()
|
274
275
|
returns (Timestamp expiredAt)
|
275
276
|
{
|
276
|
-
|
277
|
-
|
278
|
-
|
279
|
-
|
280
|
-
|
281
|
-
revert ErrorPolicyServicePolicyProductMismatch(
|
282
|
-
policyNftId,
|
283
|
-
policyInfo.productNftId,
|
284
|
-
productNftId);
|
285
|
-
}
|
277
|
+
// checks
|
278
|
+
(
|
279
|
+
IInstance instance,,
|
280
|
+
IPolicy.PolicyInfo memory policyInfo
|
281
|
+
) = _getAndVerifyCallerForPolicy(policyNftId);
|
286
282
|
|
283
|
+
// more checks, effects + interactions
|
287
284
|
return _expire(
|
288
285
|
instance,
|
289
286
|
policyNftId,
|
287
|
+
policyInfo,
|
290
288
|
expireAt
|
291
289
|
);
|
292
290
|
}
|
293
291
|
|
292
|
+
|
294
293
|
/// @inheritdoc IPolicyService
|
295
294
|
function expirePolicy(
|
296
295
|
IInstance instance,
|
@@ -302,26 +301,112 @@ contract PolicyService is
|
|
302
301
|
nonReentrant()
|
303
302
|
returns (Timestamp expiredAt)
|
304
303
|
{
|
304
|
+
// checks
|
305
|
+
_checkNftType(policyNftId, POLICY());
|
306
|
+
IPolicy.PolicyInfo memory policyInfo = instance.getInstanceReader().getPolicyInfo(
|
307
|
+
policyNftId);
|
308
|
+
|
309
|
+
// more checks, effects + interactions
|
305
310
|
return _expire(
|
306
311
|
instance,
|
307
312
|
policyNftId,
|
313
|
+
policyInfo,
|
308
314
|
expireAt
|
309
315
|
);
|
310
316
|
}
|
311
317
|
|
318
|
+
|
319
|
+
/// @inheritdoc IPolicyService
|
320
|
+
function close(
|
321
|
+
NftId policyNftId
|
322
|
+
)
|
323
|
+
external
|
324
|
+
virtual
|
325
|
+
nonReentrant()
|
326
|
+
{
|
327
|
+
// checks
|
328
|
+
(
|
329
|
+
IInstance instance,
|
330
|
+
NftId productNftId,
|
331
|
+
IPolicy.PolicyInfo memory policyInfo
|
332
|
+
) = _getAndVerifyCallerForPolicy(policyNftId);
|
333
|
+
InstanceReader instanceReader = instance.getInstanceReader();
|
334
|
+
|
335
|
+
// check policy is in a closeable state
|
336
|
+
if (!policyIsCloseable(instanceReader, policyNftId)) {
|
337
|
+
revert ErrorPolicyServicePolicyNotCloseable(policyNftId);
|
338
|
+
}
|
339
|
+
|
340
|
+
// check that policy has been activated
|
341
|
+
RiskId riskId = policyInfo.riskId;
|
342
|
+
NftId bundleNftId = policyInfo.bundleNftId;
|
343
|
+
|
344
|
+
if (instanceReader.getPremiumInfoState(policyNftId) != PAID()) {
|
345
|
+
revert ErrorPolicyServicePremiumNotPaid(policyNftId, policyInfo.premiumAmount);
|
346
|
+
}
|
347
|
+
|
348
|
+
// effects
|
349
|
+
// release (remaining) collateral that was blocked by policy
|
350
|
+
_poolService.releaseCollateral(
|
351
|
+
instance,
|
352
|
+
address(instanceReader.getComponentInfo(productNftId).token),
|
353
|
+
policyNftId,
|
354
|
+
policyInfo);
|
355
|
+
|
356
|
+
// TODO consider to also set expiredAt to current block timestamp if that timestamp is still in the futue
|
357
|
+
|
358
|
+
// update policy state to closed
|
359
|
+
policyInfo.closedAt = TimestampLib.blockTimestamp();
|
360
|
+
instance.getInstanceStore().updatePolicy(policyNftId, policyInfo, CLOSED());
|
361
|
+
|
362
|
+
// unlink policy from risk and bundle
|
363
|
+
NftId poolNftId = getRegistry().getObjectInfo(bundleNftId).parentNftId;
|
364
|
+
instance.getRiskSet().unlinkPolicy(productNftId, riskId, policyNftId);
|
365
|
+
instance.getBundleSet().unlinkPolicy(poolNftId, bundleNftId, policyNftId);
|
366
|
+
|
367
|
+
emit LogPolicyServicePolicyClosed(policyNftId);
|
368
|
+
}
|
369
|
+
|
370
|
+
|
371
|
+
function policyIsCloseable(InstanceReader instanceReader, NftId policyNftId)
|
372
|
+
public
|
373
|
+
view
|
374
|
+
returns (bool isCloseable)
|
375
|
+
{
|
376
|
+
// policy already closed
|
377
|
+
if (instanceReader.getPolicyState(policyNftId) == CLOSED()) {
|
378
|
+
return false;
|
379
|
+
}
|
380
|
+
|
381
|
+
IPolicy.PolicyInfo memory info = instanceReader.getPolicyInfo(policyNftId);
|
382
|
+
|
383
|
+
if (info.productNftId.eqz()) { return false; } // not closeable: policy does not exist (or does not belong to this instance)
|
384
|
+
if (info.activatedAt.eqz()) { return false; } // not closeable: not yet activated
|
385
|
+
if (info.openClaimsCount > 0) { return false; } // not closeable: has open claims
|
386
|
+
|
387
|
+
// closeable: if sum of claims matches sum insured a policy may be closed prior to the expiry date
|
388
|
+
if (info.claimAmount == info.sumInsuredAmount) { return true; }
|
389
|
+
|
390
|
+
// not closeable: not yet expired
|
391
|
+
if (TimestampLib.blockTimestamp() < info.expiredAt) { return false; }
|
392
|
+
|
393
|
+
// all conditions to close the policy are met
|
394
|
+
return true;
|
395
|
+
}
|
396
|
+
|
397
|
+
/// @dev shared functionality for expire() and policyExpire().
|
312
398
|
function _expire(
|
313
399
|
IInstance instance,
|
314
400
|
NftId policyNftId,
|
401
|
+
IPolicy.PolicyInfo memory policyInfo,
|
315
402
|
Timestamp expireAt
|
316
403
|
)
|
317
404
|
internal
|
318
405
|
returns (Timestamp expiredAt)
|
319
406
|
{
|
320
|
-
|
321
|
-
|
407
|
+
// checks
|
322
408
|
// check policy is active
|
323
|
-
StateId policyState =
|
324
|
-
IPolicy.PolicyInfo memory policyInfo = instance.getInstanceReader().getPolicyInfo(policyNftId);
|
409
|
+
StateId policyState = instance.getInstanceReader().getPolicyState(policyNftId);
|
325
410
|
if (!_policyHasBeenActivated(policyState, policyInfo)) {
|
326
411
|
revert ErrorPolicyServicePolicyNotActive(policyNftId, policyState);
|
327
412
|
}
|
@@ -338,10 +423,12 @@ contract PolicyService is
|
|
338
423
|
if (expiredAt >= policyInfo.expiredAt) {
|
339
424
|
revert ErrorPolicyServicePolicyExpirationTooLate(policyNftId, policyInfo.expiredAt, expireAt);
|
340
425
|
}
|
426
|
+
|
341
427
|
if (expiredAt < TimestampLib.blockTimestamp()) {
|
342
428
|
revert ErrorPolicyServicePolicyExpirationTooEarly(policyNftId, TimestampLib.blockTimestamp(), expireAt);
|
343
429
|
}
|
344
430
|
|
431
|
+
// effects
|
345
432
|
// update policyInfo with new expiredAt timestamp
|
346
433
|
Timestamp originalExpiredAt = policyInfo.expiredAt;
|
347
434
|
policyInfo.expiredAt = expiredAt;
|
@@ -349,95 +436,33 @@ contract PolicyService is
|
|
349
436
|
|
350
437
|
emit LogPolicyServicePolicyExpirationUpdated(policyNftId, originalExpiredAt, expiredAt);
|
351
438
|
|
439
|
+
// interactions
|
352
440
|
// callback to policy holder if applicable
|
353
441
|
_policyHolderPolicyExpired(policyNftId, expiredAt);
|
354
442
|
}
|
355
443
|
|
444
|
+
// TODO cleanup
|
445
|
+
// /// @dev Calculates the premium and updates all counters in the other services.
|
446
|
+
// /// Only book keeping, no token transfers.
|
447
|
+
// function _processPremium(
|
448
|
+
// IInstance instance,
|
449
|
+
// NftId applicationNftId,
|
450
|
+
// IPolicy.PolicyInfo memory applicationInfo,
|
451
|
+
// IPolicy.PremiumInfo memory premium
|
452
|
+
// )
|
453
|
+
// internal
|
454
|
+
// virtual
|
455
|
+
// {
|
456
|
+
// // update the counters
|
457
|
+
// _processSale(
|
458
|
+
// instanceReader,
|
459
|
+
// instance.getInstanceStore(),
|
460
|
+
// productNftId,
|
461
|
+
// applicationInfo.bundleNftId,
|
462
|
+
// applicationInfo.referralId,
|
463
|
+
// premium);
|
464
|
+
// }
|
356
465
|
|
357
|
-
function close(
|
358
|
-
NftId policyNftId
|
359
|
-
)
|
360
|
-
external
|
361
|
-
virtual
|
362
|
-
nonReentrant()
|
363
|
-
{
|
364
|
-
(,, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
|
365
|
-
InstanceReader instanceReader = instance.getInstanceReader();
|
366
|
-
|
367
|
-
// check that policy has been activated
|
368
|
-
IPolicy.PolicyInfo memory policyInfo = instanceReader.getPolicyInfo(policyNftId);
|
369
|
-
StateId policyState = instanceReader.getPolicyState(policyNftId);
|
370
|
-
if (!_policyHasBeenActivated(policyState, policyInfo)) {
|
371
|
-
revert ErrorPolicyServicePolicyNotActive(policyNftId, policyState);
|
372
|
-
}
|
373
|
-
|
374
|
-
// check that policy has not already been closed
|
375
|
-
if (policyInfo.closedAt.gtz()) {
|
376
|
-
revert ErrorPolicyServicePolicyAlreadyClosed(policyNftId);
|
377
|
-
}
|
378
|
-
|
379
|
-
// check that policy does not have any open claims
|
380
|
-
if (policyInfo.openClaimsCount > 0) {
|
381
|
-
revert ErrorPolicyServiceOpenClaims(policyNftId, policyInfo.openClaimsCount);
|
382
|
-
}
|
383
|
-
|
384
|
-
// TODO consider to allow for underpaid premiums (with the effects of reducing max payouts accordingly)
|
385
|
-
// TODO consider to remove requirement for fully paid premiums altogether
|
386
|
-
if (! instanceReader.getPremiumInfoState(policyNftId).eq(PAID())) {
|
387
|
-
revert ErrorPolicyServicePremiumNotPaid(policyNftId, policyInfo.premiumAmount);
|
388
|
-
}
|
389
|
-
|
390
|
-
// release (remaining) collateral that was blocked by policy
|
391
|
-
_poolService.releaseCollateral(
|
392
|
-
instance,
|
393
|
-
address(instanceReader.getComponentInfo(policyInfo.productNftId).token),
|
394
|
-
policyNftId,
|
395
|
-
policyInfo);
|
396
|
-
|
397
|
-
// TODO consider to also set expiredAt to current block timestamp if that timestamp is still in the futue
|
398
|
-
|
399
|
-
// update policy state to closed
|
400
|
-
policyInfo.closedAt = TimestampLib.blockTimestamp();
|
401
|
-
instance.getInstanceStore().updatePolicy(policyNftId, policyInfo, CLOSED());
|
402
|
-
|
403
|
-
emit LogPolicyServicePolicyClosed(policyNftId);
|
404
|
-
}
|
405
|
-
|
406
|
-
|
407
|
-
/// @dev calculates the premium and updates all counters in the other services
|
408
|
-
function _processPremium(
|
409
|
-
IInstance instance,
|
410
|
-
NftId applicationNftId,
|
411
|
-
IPolicy.PolicyInfo memory applicationInfo,
|
412
|
-
IPolicy.PremiumInfo memory premium
|
413
|
-
)
|
414
|
-
internal
|
415
|
-
virtual
|
416
|
-
{
|
417
|
-
NftId productNftId = applicationInfo.productNftId;
|
418
|
-
InstanceReader instanceReader = instance.getInstanceReader();
|
419
|
-
|
420
|
-
// check if premium balance and allowance of policy holder is sufficient
|
421
|
-
{
|
422
|
-
TokenHandler tokenHandler = _getTokenHandler(instanceReader, productNftId);
|
423
|
-
address policyHolder = getRegistry().ownerOf(applicationNftId);
|
424
|
-
|
425
|
-
_checkPremiumBalanceAndAllowance(
|
426
|
-
tokenHandler.getToken(),
|
427
|
-
address(tokenHandler),
|
428
|
-
policyHolder,
|
429
|
-
premium.premiumAmount);
|
430
|
-
}
|
431
|
-
|
432
|
-
// update the counters
|
433
|
-
_processSale(
|
434
|
-
instanceReader,
|
435
|
-
instance.getInstanceStore(),
|
436
|
-
productNftId,
|
437
|
-
applicationInfo.bundleNftId,
|
438
|
-
applicationInfo.referralId,
|
439
|
-
premium);
|
440
|
-
}
|
441
466
|
|
442
467
|
function _activate(
|
443
468
|
NftId policyNftId,
|
@@ -477,12 +502,12 @@ contract PolicyService is
|
|
477
502
|
internal
|
478
503
|
virtual
|
479
504
|
{
|
480
|
-
(NftId distributionNftId
|
505
|
+
(NftId distributionNftId,,,) = _getDistributionNftAndWallets(
|
481
506
|
instanceReader,
|
482
507
|
productNftId);
|
483
508
|
|
484
509
|
// update product fees, distribution and pool fees
|
485
|
-
|
510
|
+
_accountingService.increaseProductFees(
|
486
511
|
instanceStore,
|
487
512
|
productNftId,
|
488
513
|
premium.productFeeVarAmount + premium.productFeeFixAmount);
|
@@ -663,17 +688,45 @@ contract PolicyService is
|
|
663
688
|
)
|
664
689
|
{
|
665
690
|
IComponents.ProductInfo memory productInfo = instanceReader.getProductInfo(productNftId);
|
666
|
-
|
667
|
-
|
668
|
-
|
669
|
-
|
691
|
+
productWallet = instanceReader.getComponentInfo(productNftId).tokenHandler.getWallet();
|
692
|
+
poolWallet = instanceReader.getComponentInfo(productInfo.poolNftId).tokenHandler.getWallet();
|
693
|
+
|
694
|
+
if (productInfo.hasDistribution) {
|
695
|
+
distributionNftId = productInfo.distributionNftId;
|
696
|
+
distributionWallet = instanceReader.getComponentInfo(distributionNftId).tokenHandler.getWallet();
|
697
|
+
}
|
670
698
|
}
|
671
699
|
|
672
700
|
|
673
|
-
function
|
674
|
-
|
675
|
-
|
676
|
-
|
701
|
+
function _getAndVerifyCallerForPolicy(NftId policyNftId)
|
702
|
+
internal
|
703
|
+
virtual
|
704
|
+
view
|
705
|
+
returns (
|
706
|
+
IInstance instance,
|
707
|
+
NftId productNftId,
|
708
|
+
IPolicy.PolicyInfo memory policyInfo
|
709
|
+
)
|
710
|
+
{
|
711
|
+
(
|
712
|
+
IRegistry.ObjectInfo memory productInfo,
|
713
|
+
address instanceAddress
|
714
|
+
) = ContractLib.getAndVerifyComponent(
|
715
|
+
getRegistry(),
|
716
|
+
msg.sender, // caller contract
|
717
|
+
PRODUCT(), // caller must be product
|
718
|
+
true); // only active caller
|
719
|
+
|
720
|
+
productNftId = productInfo.nftId;
|
721
|
+
instance = IInstance(instanceAddress);
|
722
|
+
policyInfo = instance.getInstanceReader().getPolicyInfo(policyNftId);
|
723
|
+
|
724
|
+
if (policyInfo.productNftId != productNftId) {
|
725
|
+
revert ErrorPolicyServicePolicyProductMismatch(
|
726
|
+
policyNftId,
|
727
|
+
productNftId,
|
728
|
+
policyInfo.productNftId);
|
729
|
+
}
|
677
730
|
}
|
678
731
|
|
679
732
|
|
@@ -17,7 +17,7 @@ contract PolicyServiceManager is ProxyManager {
|
|
17
17
|
)
|
18
18
|
{
|
19
19
|
PolicyService svc = new PolicyService{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),
|