@etherisc/gif-next 0.0.2-9dd41ff-671 → 0.0.2-9e03baf-990
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 +75 -9
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +4 -0
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +1293 -0
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +4 -0
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +1206 -0
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +4 -0
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +414 -0
- package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +4 -0
- package/artifacts/contracts/{instance/module/ISetup.sol/ISetup.json → authorization/IAccess.sol/IAccess.json} +2 -2
- package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +4 -0
- package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +1060 -0
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +4 -0
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +295 -0
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +4 -0
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +167 -0
- package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.dbg.json +4 -0
- package/artifacts/contracts/{shared/AccessManagerCustom.sol/AccessManagerCustom.json → authorization/ReleaseAccessManager.sol/ReleaseAccessManager.json} +28 -25
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +4 -0
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +253 -0
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +4 -0
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +1324 -0
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +4 -0
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +470 -0
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +219 -596
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +340 -444
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +144 -133
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +226 -309
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +215 -94
- package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.json +22 -0
- package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +1429 -0
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +502 -0
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +1979 -0
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +470 -0
- package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.json +376 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +1430 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1177 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1606 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2281 -0
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +4 -0
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +703 -0
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +112 -91
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +170 -84
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +127 -238
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +1183 -276
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +561 -0
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +874 -395
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +255 -242
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +122 -103
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +1210 -389
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +4 -0
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +318 -0
- package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
- package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.json +0 -53
- package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +4 -0
- package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +10 -0
- package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +4 -0
- package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +223 -0
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +4 -0
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +181 -0
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +21 -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 +4 -0
- package/artifacts/contracts/mock/Dip.sol/Dip.json +376 -0
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +4 -0
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +961 -0
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +4 -0
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +478 -0
- package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +4 -0
- package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +52 -0
- package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +4 -0
- package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +776 -0
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +4 -0
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +709 -0
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +4 -0
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +877 -0
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +4 -0
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +982 -0
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +4 -0
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +746 -0
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +1254 -0
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +502 -0
- package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +507 -345
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +194 -111
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +275 -46
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +214 -400
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +490 -282
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +224 -621
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +634 -640
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +124 -117
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +132 -282
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +112 -97
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +1148 -0
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +470 -0
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +333 -299
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +153 -114
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +54 -1
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +196 -7
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +361 -81
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +154 -86
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +365 -221
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
- package/artifacts/contracts/product/{IProductService.sol/IProductService.json → IRiskService.sol/IRiskService.json} +44 -57
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +422 -406
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +128 -137
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +248 -348
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +143 -116
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/product/Product.sol/Product.json +364 -475
- package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
- package/artifacts/contracts/product/RiskService.sol/RiskService.json +638 -0
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +718 -0
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +59 -16
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +400 -50
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +112 -64
- package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
- package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +5 -18
- package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
- package/artifacts/contracts/registry/Registry.sol/Registry.json +840 -107
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +1743 -149
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +180 -200
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +105 -86
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +205 -0
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1067 -0
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +4 -0
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +272 -0
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +314 -136
- package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
- package/artifacts/contracts/shared/Component.sol/Component.json +120 -317
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1406 -213
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +834 -0
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +4 -0
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +474 -0
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +111 -0
- package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponent.sol/IComponent.json +114 -130
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +1402 -0
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +711 -0
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
- package/artifacts/contracts/{instance/base → shared}/IKeyValueStore.sol/IKeyValueStore.json +46 -14
- package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
- package/artifacts/contracts/{instance/base → shared}/ILifecycle.sol/ILifecycle.json +35 -4
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +23 -1
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +16 -30
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +36 -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 +49 -1
- package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
- package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +53 -0
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +4 -0
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +799 -0
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +538 -0
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +174 -0
- package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
- package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +48 -70
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +20 -124
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +67 -103
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -15
- package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
- package/artifacts/contracts/shared/Service.sol/Service.json +54 -119
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +735 -27
- 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 +4 -0
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +172 -0
- package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +4 -0
- package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1435 -0
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +573 -53
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +4 -0
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +440 -0
- package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
- package/artifacts/contracts/staking/Staking.sol/Staking.json +1816 -0
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +205 -0
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +780 -0
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +587 -0
- package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingService.sol/StakingService.json +661 -182
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +125 -90
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2283 -0
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +607 -0
- package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
- package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +2 -2
- package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
- package/artifacts/contracts/type/Amount.sol/AmountLib.json +121 -4
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +53 -2
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +28 -4
- package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
- package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +4 -4
- package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
- package/artifacts/contracts/type/Fee.sol/FeeLib.json +39 -34
- 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/NftId.sol/NftIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/NftId.sol/NftIdLib.json +47 -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 +149 -2
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +19 -19
- package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
- package/artifacts/contracts/type/Referral.sol/ReferralLib.json +4 -4
- package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
- package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +60 -4
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +219 -6
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +124 -2
- package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
- package/artifacts/contracts/type/Selector.sol/SelectorLib.json +129 -0
- package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
- package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
- package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/StateId.sol/StateIdLib.json +15 -2
- package/artifacts/contracts/type/String.sol/StrLib.dbg.json +4 -0
- package/artifacts/contracts/type/String.sol/StrLib.json +132 -0
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +36 -4
- package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +1 -1
- package/artifacts/contracts/type/UFixed.sol/MathLib.json +9 -3
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +71 -2
- package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
- package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -2
- package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
- package/artifacts/contracts/type/Version.sol/VersionPartLib.json +21 -2
- package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
- package/artifacts/contracts/{shared → upgradeability}/IVersionable.sol/IVersionable.json +1 -1
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +618 -0
- package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
- package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
- package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
- package/artifacts/contracts/{shared → upgradeability}/Versionable.sol/Versionable.json +1 -1
- package/contracts/authorization/AccessAdmin.sol +596 -0
- package/contracts/authorization/AccessManagerCloneable.sol +16 -0
- package/contracts/authorization/Authorization.sol +289 -0
- package/contracts/authorization/IAccess.sol +49 -0
- package/contracts/authorization/IAccessAdmin.sol +137 -0
- package/contracts/authorization/IAuthorization.sol +60 -0
- package/contracts/authorization/IServiceAuthorization.sol +40 -0
- package/contracts/authorization/ReleaseAccessManager.sol +38 -0
- package/contracts/authorization/ServiceAuthorization.sol +106 -0
- package/contracts/distribution/BasicDistribution.sol +139 -0
- package/contracts/distribution/BasicDistributionAuthorization.sol +47 -0
- package/contracts/distribution/Distribution.sol +156 -156
- package/contracts/distribution/DistributionService.sol +177 -173
- package/contracts/distribution/DistributionServiceManager.sol +8 -11
- package/contracts/distribution/IDistributionComponent.sol +28 -47
- package/contracts/distribution/IDistributionService.sol +24 -10
- package/contracts/examples/fire/DamageLevel.sol +59 -0
- package/contracts/examples/fire/FirePool.sol +86 -0
- package/contracts/examples/fire/FirePoolAuthorization.sol +34 -0
- package/contracts/examples/fire/FireProduct.sol +431 -0
- package/contracts/examples/fire/FireProductAuthorization.sol +44 -0
- package/contracts/examples/fire/FireUSD.sol +26 -0
- package/contracts/examples/unpermissioned/SimpleDistribution.sol +58 -0
- package/contracts/examples/unpermissioned/SimpleOracle.sol +137 -0
- package/contracts/examples/unpermissioned/SimplePool.sol +108 -0
- package/contracts/examples/unpermissioned/SimpleProduct.sol +345 -0
- package/contracts/instance/{BundleManager.sol → BundleSet.sol} +23 -23
- package/contracts/instance/IInstance.sol +28 -39
- package/contracts/instance/IInstanceService.sol +30 -32
- package/contracts/instance/Instance.sol +124 -122
- package/contracts/instance/InstanceAdmin.sol +208 -285
- package/contracts/instance/InstanceAuthorizationV3.sol +194 -0
- package/contracts/instance/InstanceReader.sol +194 -67
- package/contracts/instance/InstanceService.sol +246 -130
- package/contracts/instance/InstanceServiceManager.sol +8 -13
- package/contracts/instance/InstanceStore.sol +142 -66
- package/contracts/instance/base/BalanceStore.sol +123 -0
- package/contracts/instance/base/Cloneable.sol +2 -25
- package/contracts/instance/base/ObjectCounter.sol +21 -0
- package/contracts/instance/base/ObjectLifecycle.sol +111 -0
- package/contracts/instance/base/{ObjectManager.sol → ObjectSet.sol} +11 -14
- package/contracts/instance/module/IAccess.sol +2 -0
- package/contracts/instance/module/IBundle.sol +1 -4
- package/contracts/instance/module/IComponents.sol +22 -13
- package/contracts/instance/module/IDistribution.sol +0 -1
- package/contracts/instance/module/IPolicy.sol +33 -26
- package/contracts/mock/Dip.sol +26 -0
- package/contracts/oracle/BasicOracle.sol +47 -0
- package/contracts/oracle/BasicOracleAuthorization.sol +46 -0
- package/contracts/oracle/IOracle.sol +36 -0
- package/contracts/oracle/IOracleComponent.sol +33 -0
- package/contracts/oracle/IOracleService.sol +66 -0
- package/contracts/oracle/Oracle.sol +156 -0
- package/contracts/oracle/OracleService.sol +292 -0
- package/contracts/oracle/OracleServiceManager.sol +39 -0
- package/contracts/pool/BasicPool.sol +175 -0
- package/contracts/pool/BasicPoolAuthorization.sol +68 -0
- package/contracts/pool/BundleService.sol +314 -213
- package/contracts/pool/BundleServiceManager.sol +8 -11
- package/contracts/pool/IBundleService.sol +46 -24
- package/contracts/pool/IPoolComponent.sol +23 -75
- package/contracts/pool/IPoolService.sol +105 -47
- package/contracts/pool/Pool.sol +211 -168
- package/contracts/pool/PoolService.sol +448 -232
- package/contracts/pool/PoolServiceManager.sol +6 -9
- package/contracts/product/ApplicationService.sol +156 -84
- package/contracts/product/ApplicationServiceManager.sol +6 -6
- package/contracts/product/BasicProduct.sol +49 -0
- package/contracts/product/BasicProductAuthorization.sol +42 -0
- package/contracts/product/ClaimService.sol +333 -162
- package/contracts/product/ClaimServiceManager.sol +6 -6
- package/contracts/product/IApplicationService.sol +2 -1
- package/contracts/product/IClaimService.sol +35 -5
- package/contracts/product/IPolicyService.sol +41 -39
- package/contracts/product/IPricingService.sol +13 -11
- package/contracts/product/IProductComponent.sol +28 -10
- package/contracts/product/{IProductService.sol → IRiskService.sol} +2 -9
- package/contracts/product/PolicyService.sol +521 -204
- package/contracts/product/PolicyServiceManager.sol +6 -9
- package/contracts/product/PricingService.sol +107 -83
- package/contracts/product/PricingServiceManager.sol +5 -8
- package/contracts/product/Product.sol +199 -146
- package/contracts/product/RiskService.sol +96 -0
- package/contracts/product/RiskServiceManager.sol +39 -0
- package/contracts/registry/ChainNft.sol +75 -38
- package/contracts/registry/IRegistry.sol +85 -24
- package/contracts/registry/IRegistryService.sol +9 -6
- package/contracts/registry/ITransferInterceptor.sol +1 -2
- package/contracts/registry/Registry.sol +439 -179
- package/contracts/registry/RegistryAdmin.sol +396 -77
- package/contracts/registry/RegistryService.sol +73 -64
- package/contracts/registry/RegistryServiceManager.sol +6 -13
- package/contracts/registry/ReleaseLifecycle.sol +30 -0
- package/contracts/registry/ReleaseRegistry.sol +485 -0
- package/contracts/registry/ServiceAuthorizationV3.sol +203 -0
- package/contracts/registry/TokenRegistry.sol +261 -64
- package/contracts/shared/Component.sol +128 -170
- package/contracts/shared/ComponentService.sol +732 -94
- package/contracts/shared/ComponentServiceManager.sol +38 -0
- package/contracts/shared/ComponentVerifyingService.sol +128 -0
- package/contracts/shared/ContractLib.sol +54 -0
- package/contracts/shared/IComponent.sol +24 -47
- package/contracts/shared/IComponentService.sol +130 -0
- package/contracts/shared/IInstanceLinkedComponent.sol +41 -0
- package/contracts/{instance/base → shared}/IKeyValueStore.sol +7 -6
- package/contracts/{instance/base → shared}/ILifecycle.sol +5 -4
- package/contracts/shared/INftOwnable.sol +3 -1
- package/contracts/shared/IPolicyHolder.sol +12 -17
- package/contracts/shared/IRegisterable.sol +11 -0
- package/contracts/shared/IService.sol +9 -2
- package/contracts/shared/{ERC165.sol → InitializableERC165.sol} +4 -4
- package/contracts/shared/InstanceLinkedComponent.sol +205 -0
- package/contracts/{instance/base → shared}/KeyValueStore.sol +36 -74
- package/contracts/shared/Lifecycle.sol +88 -0
- package/contracts/shared/NftIdSet.sol +65 -0
- package/contracts/shared/NftOwnable.sol +32 -22
- package/contracts/shared/PolicyHolder.sol +18 -50
- package/contracts/shared/Registerable.sol +21 -13
- package/contracts/shared/RegistryLinked.sol +9 -14
- package/contracts/shared/Service.sol +48 -36
- package/contracts/shared/TokenHandler.sol +375 -13
- package/contracts/shared/TokenHandlerDeployerLib.sol +20 -0
- package/contracts/staking/IStaking.sol +173 -0
- package/contracts/staking/IStakingService.sol +103 -48
- package/contracts/staking/StakeManagerLib.sol +224 -0
- package/contracts/staking/Staking.sol +505 -0
- package/contracts/staking/StakingLifecycle.sol +23 -0
- package/contracts/staking/StakingManager.sol +52 -0
- package/contracts/staking/StakingReader.sol +190 -0
- package/contracts/staking/StakingService.sol +331 -47
- package/contracts/staking/StakingServiceManager.sol +11 -7
- package/contracts/staking/StakingStore.sol +605 -0
- package/contracts/staking/TargetManagerLib.sol +211 -0
- package/contracts/type/AddressSet.sol +1 -1
- package/contracts/type/Amount.sol +44 -3
- package/contracts/type/Blocknumber.sol +26 -3
- package/contracts/type/ClaimId.sol +6 -1
- package/contracts/type/Fee.sol +17 -16
- package/contracts/type/NftId.sol +15 -16
- package/contracts/type/NftIdSet.sol +1 -1
- package/contracts/type/ObjectType.sol +176 -62
- package/contracts/type/PayoutId.sol +10 -10
- package/contracts/type/Referral.sol +2 -1
- package/contracts/type/RequestId.sol +75 -0
- package/contracts/type/RiskId.sol +17 -3
- package/contracts/type/RoleId.sol +98 -75
- package/contracts/type/Seconds.sol +48 -1
- package/contracts/type/Selector.sol +102 -0
- package/contracts/type/StateId.sol +41 -2
- package/contracts/type/String.sol +53 -0
- package/contracts/type/Timestamp.sol +17 -3
- package/contracts/type/UFixed.sol +38 -9
- package/contracts/type/Version.sol +4 -2
- package/contracts/{shared → upgradeability}/ProxyManager.sol +73 -41
- package/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol +1 -3
- package/contracts/{shared → upgradeability}/Versionable.sol +2 -2
- package/package.json +11 -7
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +0 -4
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +0 -778
- package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +0 -4
- package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +0 -188
- package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
- package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +0 -4
- package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
- package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +0 -581
- package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +0 -4
- package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +0 -194
- package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +0 -4
- package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +0 -256
- package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +0 -4
- package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +0 -4
- package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.json +0 -10
- package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +0 -4
- package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +0 -4
- package/artifacts/contracts/product/ProductService.sol/ProductService.json +0 -883
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +0 -711
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +0 -4
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +0 -1018
- package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.dbg.json +0 -4
- package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.dbg.json +0 -4
- package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.json +0 -1715
- package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.dbg.json +0 -4
- package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.json +0 -1728
- package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.dbg.json +0 -4
- package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.json +0 -1747
- package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.dbg.json +0 -4
- package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.json +0 -1765
- package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +0 -4
- package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +0 -1206
- package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
- package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -73
- package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.dbg.json +0 -4
- package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.json +0 -1562
- package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.dbg.json +0 -4
- package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.json +0 -1594
- package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +0 -630
- package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
- package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +0 -129
- package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
- package/contracts/instance/InstanceAuthorizationsLib.sol +0 -320
- package/contracts/instance/base/Lifecycle.sol +0 -121
- package/contracts/instance/module/ISetup.sol +0 -33
- package/contracts/instance/module/ITreasury.sol +0 -23
- package/contracts/product/ProductService.sol +0 -212
- package/contracts/product/ProductServiceManager.sol +0 -42
- package/contracts/registry/ReleaseManager.sol +0 -465
- package/contracts/shared/AccessManagerCustom.sol +0 -736
- package/contracts/shared/AccessManagerExtended.sol +0 -469
- package/contracts/shared/AccessManagerExtendedInitializeable.sol +0 -13
- package/contracts/shared/AccessManagerExtendedWithDisable.sol +0 -125
- package/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol +0 -14
- package/contracts/shared/AccessManagerUpgradeableInitializeable.sol +0 -13
- package/contracts/shared/IAccessManagerExtended.sol +0 -74
- package/contracts/shared/IAccessManagerExtendedWithDisable.sol +0 -17
- /package/contracts/{shared → upgradeability}/IVersionable.sol +0 -0
@@ -1,135 +1,105 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
|
-
pragma solidity ^0.8.
|
2
|
+
pragma solidity ^0.8.20;
|
3
3
|
|
4
4
|
import {IBundle} from "../instance/module/IBundle.sol";
|
5
|
+
import {IBundleService} from "./IBundleService.sol";
|
5
6
|
import {IComponents} from "../instance/module/IComponents.sol";
|
7
|
+
import {IComponentService} from "../shared/IComponentService.sol";
|
6
8
|
import {IRegistry} from "../registry/IRegistry.sol";
|
9
|
+
import {IRegistryService} from "../registry/IRegistryService.sol";
|
7
10
|
import {IInstance} from "../instance/IInstance.sol";
|
8
|
-
import {
|
9
|
-
import {ISetup} from "../instance/module/ISetup.sol";
|
11
|
+
import {InstanceStore} from "../instance/InstanceStore.sol";
|
10
12
|
import {IPolicy} from "../instance/module/IPolicy.sol";
|
11
13
|
|
12
|
-
import {IVersionable} from "../shared/IVersionable.sol";
|
13
|
-
import {INftOwnable} from "../shared/INftOwnable.sol";
|
14
|
-
import {NftId, NftIdLib, zeroNftId} from "../type/NftId.sol";
|
15
|
-
import {ObjectType, POOL, BUNDLE} from "../type/ObjectType.sol";
|
16
|
-
import {POOL_OWNER_ROLE, RoleId} from "../type/RoleId.sol";
|
17
|
-
import {Pool} from "./Pool.sol";
|
18
|
-
|
19
14
|
import {Amount, AmountLib} from "../type/Amount.sol";
|
20
|
-
import {
|
15
|
+
import {BundleSet} from "../instance/BundleSet.sol";
|
16
|
+
import {ComponentVerifyingService} from "../shared/ComponentVerifyingService.sol";
|
17
|
+
import {Fee} from "../type/Fee.sol";
|
18
|
+
import {InstanceReader} from "../instance/InstanceReader.sol";
|
19
|
+
import {NftId, NftIdLib} from "../type/NftId.sol";
|
20
|
+
import {ObjectType, COMPONENT, POOL, BUNDLE, POLICY, REGISTRY} from "../type/ObjectType.sol";
|
21
21
|
import {StateId, ACTIVE, PAUSED, CLOSED, KEEP_STATE} from "../type/StateId.sol";
|
22
22
|
import {Seconds} from "../type/Seconds.sol";
|
23
|
-
import {TimestampLib, zeroTimestamp} from "../type/Timestamp.sol";
|
24
|
-
import {Version, VersionLib} from "../type/Version.sol";
|
25
|
-
import {Versionable} from "../shared/Versionable.sol";
|
26
|
-
|
27
|
-
import {IService} from "../shared/IService.sol";
|
28
|
-
import {Service} from "../shared/Service.sol";
|
29
|
-
import {BundleManager} from "../instance/BundleManager.sol";
|
30
|
-
import {ComponentService} from "../shared/ComponentService.sol";
|
31
|
-
import {IBundleService} from "./IBundleService.sol";
|
32
|
-
import {IRegistryService} from "../registry/IRegistryService.sol";
|
33
|
-
import {InstanceService} from "../instance/InstanceService.sol";
|
34
|
-
import {InstanceReader} from "../instance/InstanceReader.sol";
|
23
|
+
import {Timestamp, TimestampLib, zeroTimestamp} from "../type/Timestamp.sol";
|
35
24
|
|
36
25
|
string constant BUNDLE_SERVICE_NAME = "BundleService";
|
37
26
|
|
38
27
|
contract BundleService is
|
39
|
-
|
28
|
+
ComponentVerifyingService,
|
40
29
|
IBundleService
|
41
30
|
{
|
42
|
-
|
43
|
-
|
31
|
+
|
44
32
|
string public constant NAME = "BundleService";
|
45
33
|
|
46
|
-
address
|
34
|
+
address private _registryAddress;
|
35
|
+
IRegistryService private _registryService;
|
36
|
+
IComponentService private _componentService;
|
47
37
|
|
48
38
|
function _initialize(
|
49
39
|
address owner,
|
50
40
|
bytes memory data
|
51
41
|
)
|
52
42
|
internal
|
53
|
-
initializer
|
54
43
|
virtual override
|
44
|
+
initializer()
|
55
45
|
{
|
56
46
|
(
|
57
|
-
address registryAddress
|
58
|
-
//address managerAddress
|
47
|
+
address registryAddress,
|
59
48
|
address authority
|
60
|
-
) = abi.decode(data, (address, address
|
49
|
+
) = abi.decode(data, (address, address));
|
61
50
|
|
62
|
-
|
63
|
-
registerInterface(type(IBundleService).interfaceId);
|
64
|
-
}
|
51
|
+
_initializeService(registryAddress, authority, owner);
|
65
52
|
|
66
|
-
|
67
|
-
|
53
|
+
_registryService = IRegistryService(_getServiceAddress(REGISTRY()));
|
54
|
+
_componentService = IComponentService(_getServiceAddress(COMPONENT()));
|
55
|
+
|
56
|
+
_registerInterface(type(IBundleService).interfaceId);
|
68
57
|
}
|
69
58
|
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
// staking -> potentially accumulate staking fees
|
75
|
-
// unstaking -> potentially accumulate performance fees
|
76
|
-
function _updatePoolWithStakes(
|
77
|
-
IInstance instance,
|
78
|
-
NftId poolNftId,
|
79
|
-
Amount stakingAmount
|
59
|
+
|
60
|
+
function setFee(
|
61
|
+
NftId bundleNftId,
|
62
|
+
Fee memory fee
|
80
63
|
)
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
address wallet,
|
85
|
-
Amount netStakingAmount
|
86
|
-
)
|
64
|
+
external
|
65
|
+
virtual
|
66
|
+
restricted()
|
87
67
|
{
|
88
|
-
|
89
|
-
InstanceReader instanceReader = instance.getInstanceReader();
|
90
|
-
IComponents.ComponentInfo memory componentInfo = instanceReader.getComponentInfo(poolNftId);
|
91
|
-
|
92
|
-
tokenHandler = componentInfo.tokenHandler;
|
93
|
-
wallet = componentInfo.wallet;
|
68
|
+
_checkNftType(bundleNftId, BUNDLE());
|
94
69
|
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
// update pool balance and fee amount
|
102
|
-
poolInfo.balanceAmount = poolInfo.balanceAmount + netStakingAmount;
|
103
|
-
|
104
|
-
if(poolFeeAmount.gtz()) {
|
105
|
-
poolInfo.feeAmount = poolInfo.feeAmount + poolFeeAmount;
|
106
|
-
}
|
70
|
+
(NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
|
71
|
+
InstanceReader instanceReader = instance.getInstanceReader();
|
72
|
+
IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
|
73
|
+
if(bundleInfo.poolNftId.eqz()) {
|
74
|
+
revert ErrorBundleServiceBundleUnknown(bundleNftId);
|
75
|
+
}
|
107
76
|
|
108
|
-
|
109
|
-
|
110
|
-
instance.getInstanceStore().updatePoolSetup(poolNftId, componentInfo, KEEP_STATE());
|
77
|
+
if(bundleInfo.poolNftId != poolNftId) {
|
78
|
+
revert ErrorBundleServiceBundlePoolMismatch(bundleNftId, bundleInfo.poolNftId, poolNftId);
|
111
79
|
}
|
80
|
+
|
81
|
+
bundleInfo.fee = fee;
|
82
|
+
instance.getInstanceStore().updateBundle(bundleNftId, bundleInfo, KEEP_STATE());
|
112
83
|
}
|
113
84
|
|
114
85
|
|
115
86
|
function create(
|
116
|
-
IInstance instance,
|
117
|
-
NftId poolNftId,
|
118
87
|
address owner,
|
119
88
|
Fee memory bundleFee,
|
120
|
-
Amount stakingAmount,
|
121
89
|
Seconds lifetime,
|
122
90
|
bytes calldata filter
|
123
91
|
)
|
124
92
|
external
|
125
|
-
|
126
|
-
restricted
|
93
|
+
virtual
|
94
|
+
restricted()
|
127
95
|
returns(NftId bundleNftId)
|
128
96
|
{
|
97
|
+
(NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
|
98
|
+
|
129
99
|
// register bundle with registry
|
130
|
-
bundleNftId =
|
100
|
+
bundleNftId = _registryService.registerBundle(
|
131
101
|
IRegistry.ObjectInfo(
|
132
|
-
|
102
|
+
NftIdLib.zero(),
|
133
103
|
poolNftId,
|
134
104
|
BUNDLE(),
|
135
105
|
false, // intercepting property for bundles is defined on pool
|
@@ -140,47 +110,24 @@ contract BundleService is
|
|
140
110
|
);
|
141
111
|
|
142
112
|
// create bundle info in instance
|
143
|
-
instance.getInstanceStore()
|
113
|
+
InstanceStore instanceStore = instance.getInstanceStore();
|
114
|
+
instanceStore.createBundle(
|
144
115
|
bundleNftId,
|
145
|
-
IBundle.BundleInfo(
|
146
|
-
poolNftId,
|
147
|
-
bundleFee,
|
148
|
-
filter,
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
zeroTimestamp()));
|
116
|
+
IBundle.BundleInfo({
|
117
|
+
poolNftId: poolNftId,
|
118
|
+
fee: bundleFee,
|
119
|
+
filter: filter,
|
120
|
+
activatedAt: TimestampLib.blockTimestamp(),
|
121
|
+
expiredAt: TimestampLib.blockTimestamp().addSeconds(lifetime),
|
122
|
+
closedAt: zeroTimestamp()
|
123
|
+
})
|
124
|
+
);
|
155
125
|
|
156
126
|
// put bundle under bundle managemet
|
157
|
-
|
127
|
+
BundleSet bundleManager = instance.getBundleSet();
|
158
128
|
bundleManager.add(bundleNftId);
|
159
129
|
|
160
|
-
|
161
|
-
}
|
162
|
-
|
163
|
-
|
164
|
-
function setFee(
|
165
|
-
NftId bundleNftId,
|
166
|
-
Fee memory fee
|
167
|
-
)
|
168
|
-
external
|
169
|
-
override
|
170
|
-
{
|
171
|
-
(NftId poolNftId,, IInstance instance) = _getAndVerifyCallingComponentAndInstance(POOL());
|
172
|
-
InstanceReader instanceReader = instance.getInstanceReader();
|
173
|
-
IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
|
174
|
-
if(bundleInfo.poolNftId.eqz()) {
|
175
|
-
revert ErrorBundleServiceBundleUnknown(bundleNftId);
|
176
|
-
}
|
177
|
-
|
178
|
-
if(bundleInfo.poolNftId != poolNftId) {
|
179
|
-
revert ErrorBundleServiceBundlePoolMismatch(bundleNftId, bundleInfo.poolNftId, poolNftId);
|
180
|
-
}
|
181
|
-
|
182
|
-
bundleInfo.fee = fee;
|
183
|
-
instance.getInstanceStore().updateBundle(bundleNftId, bundleInfo, KEEP_STATE());
|
130
|
+
emit LogBundleServiceBundleCreated(bundleNftId, poolNftId);
|
184
131
|
}
|
185
132
|
|
186
133
|
|
@@ -189,87 +136,65 @@ contract BundleService is
|
|
189
136
|
IInstance instance,
|
190
137
|
NftId policyNftId,
|
191
138
|
NftId bundleNftId,
|
192
|
-
Amount collateralAmount
|
193
|
-
Amount premiumAmount // premium part that reaches bundle for this policy
|
139
|
+
Amount collateralAmount // required local amount to collateralize policy
|
194
140
|
)
|
195
141
|
external
|
196
|
-
|
142
|
+
virtual
|
143
|
+
restricted()
|
197
144
|
{
|
145
|
+
_checkNftType(policyNftId, POLICY());
|
146
|
+
_checkNftType(bundleNftId, BUNDLE());
|
147
|
+
|
198
148
|
InstanceReader instanceReader = instance.getInstanceReader();
|
199
|
-
StateId bundleState = instanceReader.getMetadata(bundleNftId.toKey32(BUNDLE())).state;
|
200
|
-
IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
|
201
149
|
|
202
|
-
|
203
|
-
|
204
|
-
|
150
|
+
{
|
151
|
+
StateId bundleState = instance.getInstanceReader().getBundleState(bundleNftId);
|
152
|
+
IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
|
153
|
+
|
154
|
+
// ensure bundle is active and not yet expired
|
155
|
+
if(bundleState != ACTIVE() || bundleInfo.expiredAt < TimestampLib.blockTimestamp()) {
|
156
|
+
revert ErrorBundleServiceBundleNotOpen(bundleNftId, bundleState, bundleInfo.expiredAt);
|
157
|
+
}
|
205
158
|
}
|
206
159
|
|
207
|
-
|
208
|
-
|
209
|
-
|
210
|
-
|
160
|
+
InstanceStore instanceStore = instance.getInstanceStore();
|
161
|
+
|
162
|
+
{
|
163
|
+
// ensure bundle capacity is sufficent to collateralize policy
|
164
|
+
(
|
165
|
+
Amount balanceAmount,
|
166
|
+
Amount lockedAmount,
|
167
|
+
Amount feeAmount
|
168
|
+
) = instanceStore.getAmounts(bundleNftId);
|
169
|
+
|
170
|
+
Amount capacity = balanceAmount - (lockedAmount + feeAmount);
|
171
|
+
if(capacity < collateralAmount) {
|
172
|
+
revert ErrorBundleServiceCapacityInsufficient(bundleNftId, capacity, collateralAmount);
|
173
|
+
}
|
211
174
|
}
|
212
175
|
|
213
|
-
// TODO add more validation
|
214
|
-
|
215
176
|
// updated locked amount
|
216
|
-
|
217
|
-
|
218
|
-
// update capital and fees when premiums are involved
|
219
|
-
_updateBundleWithPremium(instance, bundleNftId, bundleInfo, premiumAmount);
|
177
|
+
instanceStore.increaseLocked(bundleNftId, collateralAmount);
|
220
178
|
|
221
179
|
// link policy to bundle in bundle manger
|
222
180
|
_linkPolicy(instance, policyNftId);
|
223
181
|
}
|
224
182
|
|
225
183
|
|
226
|
-
function _updateBundleWithPremium(
|
227
|
-
IInstance instance,
|
228
|
-
NftId bundleNftId,
|
229
|
-
IBundle.BundleInfo memory bundleInfo,
|
230
|
-
Amount premiumAmount
|
231
|
-
)
|
232
|
-
internal
|
233
|
-
{
|
234
|
-
// update bundle capital and fee amounts
|
235
|
-
if(premiumAmount.gtz()) {
|
236
|
-
// calculate fees and net premium amounts
|
237
|
-
(
|
238
|
-
,
|
239
|
-
Amount netPremiumAmount
|
240
|
-
) = FeeLib.calculateFee(bundleInfo.fee, premiumAmount);
|
241
|
-
|
242
|
-
// update bundle info with additional capital
|
243
|
-
bundleInfo.capitalAmount = bundleInfo.capitalAmount + netPremiumAmount;
|
244
|
-
}
|
245
|
-
|
246
|
-
// save updated bundle info
|
247
|
-
instance.getInstanceStore().updateBundle(bundleNftId, bundleInfo, KEEP_STATE());
|
248
|
-
}
|
249
|
-
|
250
|
-
function updateBundleFees(
|
251
|
-
IInstance instance,
|
252
|
-
NftId bundleNftId,
|
253
|
-
Amount feeAmount
|
254
|
-
)
|
255
|
-
external
|
256
|
-
{
|
257
|
-
IBundle.BundleInfo memory bundleInfo = instance.getInstanceReader().getBundleInfo(bundleNftId);
|
258
|
-
bundleInfo.feeAmount = bundleInfo.feeAmount.add(feeAmount);
|
259
|
-
instance.getInstanceStore().updateBundle(bundleNftId, bundleInfo, KEEP_STATE());
|
260
|
-
}
|
261
|
-
|
262
184
|
function lock(NftId bundleNftId)
|
263
185
|
external
|
264
186
|
virtual
|
187
|
+
restricted()
|
265
188
|
{
|
266
|
-
(
|
189
|
+
_checkNftType(bundleNftId, BUNDLE());
|
190
|
+
|
191
|
+
(,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
|
267
192
|
|
268
193
|
// udpate bundle state
|
269
194
|
instance.getInstanceStore().updateBundleState(bundleNftId, PAUSED());
|
270
195
|
|
271
196
|
// update set of active bundles
|
272
|
-
|
197
|
+
BundleSet bundleManager = instance.getBundleSet();
|
273
198
|
bundleManager.lock(bundleNftId);
|
274
199
|
|
275
200
|
emit LogBundleServiceBundleLocked(bundleNftId);
|
@@ -279,14 +204,17 @@ contract BundleService is
|
|
279
204
|
function unlock(NftId bundleNftId)
|
280
205
|
external
|
281
206
|
virtual
|
207
|
+
restricted()
|
282
208
|
{
|
283
|
-
(
|
209
|
+
_checkNftType(bundleNftId, BUNDLE());
|
210
|
+
|
211
|
+
(,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
|
284
212
|
|
285
213
|
// udpate bundle state
|
286
214
|
instance.getInstanceStore().updateBundleState(bundleNftId, ACTIVE());
|
287
215
|
|
288
216
|
// update set of active bundles
|
289
|
-
|
217
|
+
BundleSet bundleManager = instance.getBundleSet();
|
290
218
|
bundleManager.unlock(bundleNftId);
|
291
219
|
|
292
220
|
emit LogBundleServiceBundleActivated(bundleNftId);
|
@@ -299,70 +227,152 @@ contract BundleService is
|
|
299
227
|
)
|
300
228
|
external
|
301
229
|
virtual
|
302
|
-
restricted
|
230
|
+
restricted()
|
231
|
+
returns (Amount unstakedAmount, Amount feeAmount)
|
303
232
|
{
|
304
|
-
|
305
|
-
|
233
|
+
_checkNftType(bundleNftId, BUNDLE());
|
234
|
+
|
235
|
+
InstanceReader instanceReader = instance.getInstanceReader();
|
306
236
|
|
307
237
|
// ensure no open policies attached to bundle
|
308
|
-
|
238
|
+
BundleSet bundleManager = instance.getBundleSet();
|
309
239
|
uint256 openPolicies = bundleManager.activePolicies(bundleNftId);
|
310
240
|
if(openPolicies > 0) {
|
311
241
|
revert ErrorBundleServiceBundleWithOpenPolicies(bundleNftId, openPolicies);
|
312
242
|
}
|
313
243
|
|
314
|
-
|
315
|
-
|
244
|
+
{
|
245
|
+
// update bundle state
|
246
|
+
InstanceStore instanceStore = instance.getInstanceStore();
|
247
|
+
instanceStore.updateBundleState(bundleNftId, CLOSED());
|
248
|
+
bundleManager.lock(bundleNftId);
|
249
|
+
|
250
|
+
// decrease bundle counters
|
251
|
+
Amount balanceAmountWithFees = instanceReader.getBalanceAmount(bundleNftId);
|
252
|
+
feeAmount = instanceReader.getFeeAmount(bundleNftId);
|
253
|
+
unstakedAmount = balanceAmountWithFees - feeAmount;
|
254
|
+
_componentService.decreaseBundleBalance(instanceStore, bundleNftId, unstakedAmount, feeAmount);
|
255
|
+
}
|
316
256
|
}
|
317
257
|
|
318
|
-
|
319
|
-
function
|
258
|
+
/// @inheritdoc IBundleService
|
259
|
+
function stake(
|
320
260
|
IInstance instance,
|
321
261
|
NftId bundleNftId,
|
322
|
-
Amount
|
262
|
+
Amount amount
|
323
263
|
)
|
324
|
-
external
|
325
|
-
|
264
|
+
external
|
265
|
+
virtual
|
266
|
+
restricted()
|
326
267
|
{
|
327
|
-
|
328
|
-
IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
|
268
|
+
_checkNftType(bundleNftId, BUNDLE());
|
329
269
|
|
330
|
-
|
331
|
-
|
270
|
+
IBundle.BundleInfo memory bundleInfo = instance.getInstanceReader().getBundleInfo(bundleNftId);
|
271
|
+
StateId bundleState = instance.getInstanceReader().getBundleState(bundleNftId);
|
272
|
+
|
273
|
+
if( (bundleState != ACTIVE() && bundleState != PAUSED()) // locked bundles can be staked
|
274
|
+
|| bundleInfo.expiredAt < TimestampLib.blockTimestamp()
|
275
|
+
|| bundleInfo.closedAt.gtz()) {
|
276
|
+
revert ErrorBundleServiceBundleNotOpen(bundleNftId, bundleState, bundleInfo.expiredAt);
|
277
|
+
}
|
332
278
|
|
333
|
-
|
279
|
+
_componentService.increaseBundleBalance(
|
280
|
+
instance.getInstanceStore(),
|
281
|
+
bundleNftId,
|
282
|
+
amount,
|
283
|
+
AmountLib.zero());
|
334
284
|
}
|
335
285
|
|
336
|
-
|
337
|
-
|
286
|
+
/// @inheritdoc IBundleService
|
287
|
+
function unstake(
|
288
|
+
IInstance instance,
|
338
289
|
NftId bundleNftId,
|
339
|
-
Amount
|
290
|
+
Amount amount
|
340
291
|
)
|
341
|
-
external
|
342
|
-
|
292
|
+
external
|
293
|
+
virtual
|
294
|
+
restricted()
|
295
|
+
returns (Amount unstakedAmount)
|
343
296
|
{
|
344
|
-
|
345
|
-
IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
|
297
|
+
_checkNftType(bundleNftId, BUNDLE());
|
346
298
|
|
347
|
-
|
348
|
-
|
349
|
-
|
299
|
+
InstanceStore instanceStore = instance.getInstanceStore();
|
300
|
+
(
|
301
|
+
Amount balanceAmount,
|
302
|
+
Amount lockedAmount,
|
303
|
+
Amount feeAmount
|
304
|
+
) = instanceStore.getAmounts(bundleNftId);
|
305
|
+
|
306
|
+
unstakedAmount = amount;
|
307
|
+
Amount availableAmount = balanceAmount - (lockedAmount + feeAmount);
|
308
|
+
|
309
|
+
// if amount is max, then unstake all available
|
310
|
+
if (amount.gte(AmountLib.max())) {
|
311
|
+
unstakedAmount = availableAmount;
|
312
|
+
}
|
313
|
+
|
314
|
+
// ensure unstaked amount does not exceed available amount
|
315
|
+
if (unstakedAmount > availableAmount) {
|
316
|
+
revert ErrorBundleServiceUnstakeAmountExceedsLimit(amount, availableAmount);
|
317
|
+
}
|
318
|
+
|
319
|
+
_componentService.decreaseBundleBalance(
|
320
|
+
instanceStore,
|
321
|
+
bundleNftId,
|
322
|
+
unstakedAmount,
|
323
|
+
AmountLib.zero());
|
350
324
|
}
|
351
325
|
|
352
|
-
/// @
|
353
|
-
function
|
354
|
-
|
326
|
+
/// @inheritdoc IBundleService
|
327
|
+
function extend(NftId bundleNftId, Seconds lifetimeExtension)
|
328
|
+
external
|
329
|
+
virtual
|
330
|
+
restricted()
|
331
|
+
returns (Timestamp extendedExpiredAt)
|
355
332
|
{
|
356
|
-
|
357
|
-
IPolicy.PolicyInfo memory policyInfo = instanceReader.getPolicyInfo(policyNftId);
|
333
|
+
_checkNftType(bundleNftId, BUNDLE());
|
358
334
|
|
359
|
-
|
360
|
-
|
361
|
-
|
335
|
+
(NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
|
336
|
+
IBundle.BundleInfo memory bundleInfo = instance.getInstanceReader().getBundleInfo(bundleNftId);
|
337
|
+
StateId bundleState = instance.getInstanceReader().getBundleState(bundleNftId);
|
338
|
+
|
339
|
+
// ensure bundle belongs to the pool
|
340
|
+
if (bundleInfo.poolNftId != poolNftId) {
|
341
|
+
revert ErrorBundleServiceBundlePoolMismatch(bundleNftId, bundleInfo.poolNftId, poolNftId);
|
362
342
|
}
|
363
|
-
|
364
|
-
|
365
|
-
|
343
|
+
|
344
|
+
// ensure bundle is active and not yet expired
|
345
|
+
if(bundleState != ACTIVE() || bundleInfo.expiredAt < TimestampLib.blockTimestamp()) {
|
346
|
+
revert ErrorBundleServiceBundleNotOpen(bundleNftId, bundleState, bundleInfo.expiredAt);
|
347
|
+
}
|
348
|
+
|
349
|
+
if (lifetimeExtension.eqz()) {
|
350
|
+
revert ErrorBundleServiceExtensionLifetimeIsZero();
|
351
|
+
}
|
352
|
+
|
353
|
+
bundleInfo.expiredAt = bundleInfo.expiredAt.addSeconds(lifetimeExtension);
|
354
|
+
instance.getInstanceStore().updateBundle(bundleNftId, bundleInfo, KEEP_STATE());
|
355
|
+
|
356
|
+
emit LogBundleServiceBundleExtended(bundleNftId, lifetimeExtension, bundleInfo.expiredAt);
|
357
|
+
|
358
|
+
return bundleInfo.expiredAt;
|
359
|
+
}
|
360
|
+
|
361
|
+
|
362
|
+
function releaseCollateral(
|
363
|
+
IInstance instance,
|
364
|
+
NftId policyNftId,
|
365
|
+
NftId bundleNftId,
|
366
|
+
Amount collateralAmount
|
367
|
+
)
|
368
|
+
external
|
369
|
+
virtual
|
370
|
+
restricted()
|
371
|
+
{
|
372
|
+
_checkNftType(policyNftId, POLICY());
|
373
|
+
_checkNftType(bundleNftId, BUNDLE());
|
374
|
+
|
375
|
+
instance.getInstanceStore().decreaseLocked(bundleNftId, collateralAmount);
|
366
376
|
}
|
367
377
|
|
368
378
|
/// @dev unlinks policy from bundle
|
@@ -374,11 +384,102 @@ contract BundleService is
|
|
374
384
|
virtual
|
375
385
|
restricted
|
376
386
|
{
|
387
|
+
_checkNftType(policyNftId, POLICY());
|
388
|
+
|
377
389
|
// ensure policy is closeable
|
378
|
-
if (!
|
390
|
+
if (!policyIsCloseable(instance, policyNftId)) {
|
379
391
|
revert ErrorBundleServicePolicyNotCloseable(policyNftId);
|
380
392
|
}
|
381
393
|
|
382
|
-
instance.
|
394
|
+
instance.getBundleSet().unlinkPolicy(policyNftId);
|
395
|
+
}
|
396
|
+
|
397
|
+
/// @inheritdoc IBundleService
|
398
|
+
function withdrawBundleFees(NftId bundleNftId, Amount amount)
|
399
|
+
public
|
400
|
+
virtual
|
401
|
+
restricted()
|
402
|
+
returns (Amount withdrawnAmount)
|
403
|
+
{
|
404
|
+
_checkNftType(bundleNftId, BUNDLE());
|
405
|
+
|
406
|
+
(NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
|
407
|
+
InstanceReader reader = instance.getInstanceReader();
|
408
|
+
|
409
|
+
IComponents.ComponentInfo memory poolInfo = reader.getComponentInfo(poolNftId);
|
410
|
+
address poolWallet = poolInfo.tokenHandler.getWallet();
|
411
|
+
|
412
|
+
// IBundle.BundleInfo memory bundleInfo = reader.getBundleInfo(bundleNftId);
|
413
|
+
|
414
|
+
// determine withdrawn amount
|
415
|
+
withdrawnAmount = amount;
|
416
|
+
if (withdrawnAmount.gte(AmountLib.max())) {
|
417
|
+
withdrawnAmount = reader.getFeeAmount(bundleNftId);
|
418
|
+
} else {
|
419
|
+
if (withdrawnAmount.gt(reader.getFeeAmount(bundleNftId))) {
|
420
|
+
revert ErrorBundleServiceFeesWithdrawAmountExceedsLimit(withdrawnAmount, reader.getFeeAmount(bundleNftId));
|
421
|
+
}
|
422
|
+
}
|
423
|
+
|
424
|
+
// decrease fee counters by withdrawnAmount
|
425
|
+
{
|
426
|
+
InstanceStore store = instance.getInstanceStore();
|
427
|
+
// decrease fee amount of the bundle
|
428
|
+
_componentService.decreaseBundleBalance(store, bundleNftId, AmountLib.zero(), withdrawnAmount);
|
429
|
+
// decrease pool balance
|
430
|
+
_componentService.decreasePoolBalance(store, poolNftId, withdrawnAmount, AmountLib.zero());
|
431
|
+
}
|
432
|
+
|
433
|
+
// transfer amount to bundle owner
|
434
|
+
{
|
435
|
+
address owner = getRegistry().ownerOf(bundleNftId);
|
436
|
+
emit LogBundleServiceFeesWithdrawn(bundleNftId, owner, address(poolInfo.token), withdrawnAmount);
|
437
|
+
poolInfo.tokenHandler.distributeTokens(poolWallet, owner, withdrawnAmount);
|
438
|
+
}
|
439
|
+
}
|
440
|
+
|
441
|
+
/// @inheritdoc IBundleService
|
442
|
+
function policyIsCloseable(IInstance instance, NftId policyNftId)
|
443
|
+
public
|
444
|
+
view
|
445
|
+
returns (bool isCloseable)
|
446
|
+
{
|
447
|
+
_checkNftType(policyNftId, POLICY());
|
448
|
+
|
449
|
+
IPolicy.PolicyInfo memory info = instance.getInstanceReader().getPolicyInfo(policyNftId);
|
450
|
+
|
451
|
+
if (info.productNftId.eqz()) { return false; } // not closeable: policy does not exist (or does not belong to this instance)
|
452
|
+
if (info.activatedAt.eqz()) { return false; } // not closeable: not yet activated
|
453
|
+
if (info.closedAt.gtz()) { return false; } // not closeable: already closed
|
454
|
+
if (info.openClaimsCount > 0) { return false; } // not closeable: has open claims
|
455
|
+
|
456
|
+
// closeable: if sum of claims matches sum insured a policy may be closed prior to the expiry date
|
457
|
+
if (info.claimAmount == info.sumInsuredAmount) { return true; }
|
458
|
+
|
459
|
+
// not closeable: not yet expired
|
460
|
+
if (TimestampLib.blockTimestamp() < info.expiredAt) { return false; }
|
461
|
+
|
462
|
+
// all conditionsl to close the policy are met
|
463
|
+
return true;
|
464
|
+
}
|
465
|
+
|
466
|
+
/// @dev links policy to bundle
|
467
|
+
function _linkPolicy(IInstance instance, NftId policyNftId)
|
468
|
+
internal
|
469
|
+
{
|
470
|
+
InstanceReader instanceReader = instance.getInstanceReader();
|
471
|
+
IPolicy.PolicyInfo memory policyInfo = instanceReader.getPolicyInfo(policyNftId);
|
472
|
+
|
473
|
+
// ensure policy has not yet been activated in a previous tx already
|
474
|
+
if (policyInfo.activatedAt.gtz() && policyInfo.activatedAt < TimestampLib.blockTimestamp()) {
|
475
|
+
revert BundleSet.ErrorBundleSetPolicyAlreadyActivated(policyNftId);
|
476
|
+
}
|
477
|
+
|
478
|
+
BundleSet bundleManager = instance.getBundleSet();
|
479
|
+
bundleManager.linkPolicy(policyNftId);
|
480
|
+
}
|
481
|
+
|
482
|
+
function _getDomain() internal pure override returns(ObjectType) {
|
483
|
+
return BUNDLE();
|
383
484
|
}
|
384
485
|
}
|