@etherisc/gif-next 0.0.2-f13c010-035 → 0.0.2-f13d67f-541
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 +90 -317
- package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.dbg.json +4 -0
- package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.json +1075 -0
- package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +4 -0
- package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +810 -0
- package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.dbg.json +4 -0
- package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.json +843 -0
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +729 -287
- package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.dbg.json +4 -0
- package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.json +2008 -0
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +202 -5
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +438 -35
- 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 +560 -220
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +191 -21
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +256 -16
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +426 -27
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +132 -300
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +427 -53
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +64 -173
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +585 -231
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +190 -78
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +44 -135
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +401 -78
- 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 +160 -224
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +426 -52
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +308 -337
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +426 -52
- package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +1 -1
- package/artifacts/contracts/examples/flight/FlightLib.sol/FlightLib.dbg.json +4 -0
- package/artifacts/contracts/examples/flight/FlightLib.sol/FlightLib.json +408 -0
- package/artifacts/contracts/examples/flight/FlightOracle.sol/FlightOracle.dbg.json +4 -0
- package/artifacts/contracts/examples/flight/FlightOracle.sol/FlightOracle.json +1198 -0
- package/artifacts/contracts/examples/flight/FlightOracleAuthorization.sol/FlightOracleAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/flight/FlightOracleAuthorization.sol/FlightOracleAuthorization.json +849 -0
- package/artifacts/contracts/examples/flight/FlightPool.sol/FlightPool.dbg.json +4 -0
- package/artifacts/contracts/examples/flight/FlightPool.sol/FlightPool.json +1466 -0
- package/artifacts/contracts/examples/flight/FlightPoolAuthorization.sol/FlightPoolAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/flight/FlightPoolAuthorization.sol/FlightPoolAuthorization.json +844 -0
- package/artifacts/contracts/examples/flight/FlightProduct.sol/FlightProduct.dbg.json +4 -0
- package/artifacts/contracts/examples/flight/FlightProduct.sol/FlightProduct.json +2185 -0
- package/artifacts/contracts/examples/flight/FlightProductAuthorization.sol/FlightProductAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/flight/FlightProductAuthorization.sol/FlightProductAuthorization.json +844 -0
- package/artifacts/contracts/examples/flight/FlightUSD.sol/FlightUSD.dbg.json +4 -0
- package/artifacts/contracts/examples/flight/FlightUSD.sol/FlightUSD.json +376 -0
- package/artifacts/contracts/examples/flight/originalV1.sol/FlightDelayChainlink.dbg.json +4 -0
- package/artifacts/contracts/examples/flight/originalV1.sol/FlightDelayChainlink.json +901 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +215 -257
- package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +844 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +95 -165
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +278 -233
- package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +844 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +946 -466
- package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +844 -0
- package/artifacts/contracts/instance/BaseStore.sol/BaseStore.dbg.json +4 -0
- package/artifacts/contracts/{shared/IKeyValueStore.sol/IKeyValueStore.json → instance/BaseStore.sol/BaseStore.json} +51 -229
- 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/IBaseStore.sol/IBaseStore.dbg.json +4 -0
- package/artifacts/contracts/instance/IBaseStore.sol/IBaseStore.json +304 -0
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +551 -50
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +417 -17
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +615 -105
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +1121 -374
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +379 -68
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1127 -557
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +434 -81
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +119 -49
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +1286 -1925
- package/artifacts/contracts/instance/ProductStore.sol/ProductStore.dbg.json +4 -0
- package/artifacts/contracts/instance/ProductStore.sol/ProductStore.json +3427 -0
- package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +4 -0
- package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +866 -0
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +8 -8
- package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
- package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +2 -2
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +16 -5
- package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.dbg.json +4 -0
- package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.json +168 -0
- package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
- package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +83 -175
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +425 -54
- 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 +48 -74
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +56 -3
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +67 -111
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +157 -81
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +154 -46
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +106 -173
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +426 -52
- package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +317 -344
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +144 -92
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +219 -146
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +63 -128
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +380 -214
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +76 -159
- package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +4 -0
- package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +522 -0
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +621 -413
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +186 -66
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +327 -62
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +143 -43
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +199 -223
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +426 -52
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +294 -189
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +151 -83
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +268 -10
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +181 -19
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +167 -56
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +77 -3
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +175 -181
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +1 -1
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.json +258 -22
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +296 -194
- package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.dbg.json +4 -0
- package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.json +783 -0
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +169 -77
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +139 -114
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +131 -59
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/product/Product.sol/Product.json +193 -217
- package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +1 -1
- package/artifacts/contracts/product/RiskService.sol/RiskService.json +338 -87
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +141 -41
- 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 +78 -19
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +56 -3
- 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 +116 -57
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +848 -479
- package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.dbg.json +4 -0
- package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.json +1137 -0
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +89 -37
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +119 -39
- package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +4 -0
- package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +2271 -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 +398 -64
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +459 -26
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +120 -60
- package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
- package/artifacts/contracts/shared/Component.sol/Component.json +66 -96
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +308 -542
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +155 -83
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +1 -1
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +544 -4
- 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 +48 -60
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +171 -356
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +48 -74
- package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +19 -0
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +139 -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 +56 -3
- package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +1 -1
- package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +2 -2
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +66 -110
- 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 +21 -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 +137 -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 +51 -11
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +289 -112
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +4 -0
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +484 -0
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +70 -30
- package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
- package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1446 -164
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +214 -110
- package/artifacts/contracts/staking/ITargetLimitHandler.sol/ITargetLimitHandler.dbg.json +4 -0
- package/artifacts/contracts/staking/ITargetLimitHandler.sol/ITargetLimitHandler.json +50 -0
- package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
- package/artifacts/contracts/staking/Staking.sol/Staking.json +1583 -296
- package/artifacts/contracts/staking/StakingLib.sol/StakingLib.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingLib.sol/StakingLib.json +470 -0
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +160 -69
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +294 -177
- package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingService.sol/StakingService.json +257 -162
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +122 -46
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +1632 -818
- package/artifacts/contracts/staking/TargetHandler.sol/TargetHandler.dbg.json +4 -0
- package/artifacts/contracts/staking/TargetHandler.sol/TargetHandler.json +309 -0
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +160 -88
- 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 +11 -11
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +64 -19
- package/artifacts/contracts/type/ChainId.sol/ChainIdLib.dbg.json +4 -0
- package/artifacts/contracts/type/ChainId.sol/ChainIdLib.json +193 -0
- 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 +94 -38
- 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 +49 -50
- 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 +23 -4
- 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/RequestIdSet.sol/LibRequestIdSet.dbg.json +4 -0
- package/artifacts/contracts/type/RequestIdSet.sol/LibRequestIdSet.json +33 -0
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +69 -7
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +42 -157
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +64 -2
- package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
- package/artifacts/contracts/type/Selector.sol/SelectorLib.json +21 -2
- package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
- package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +2 -2
- package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
- package/artifacts/contracts/type/String.sol/StrLib.json +69 -2
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +37 -5
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +61 -37
- 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 +101 -2
- package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.json +10 -0
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +95 -25
- package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +15 -2
- package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.json +10 -0
- package/contracts/accounting/AccountingService.sol +274 -0
- package/contracts/accounting/AccountingServiceManager.sol +38 -0
- package/contracts/accounting/IAccountingService.sol +47 -0
- package/contracts/authorization/AccessAdmin.sol +389 -306
- package/contracts/authorization/AccessAdminLib.sol +678 -0
- package/contracts/authorization/AccessManagerCloneable.sol +128 -4
- package/contracts/authorization/Authorization.sol +161 -260
- package/contracts/authorization/IAccess.sol +29 -12
- package/contracts/authorization/IAccessAdmin.sol +89 -84
- package/contracts/authorization/IAuthorization.sol +9 -43
- package/contracts/authorization/IServiceAuthorization.sol +55 -17
- package/contracts/authorization/ServiceAuthorization.sol +228 -34
- package/contracts/distribution/BasicDistribution.sol +19 -18
- package/contracts/distribution/BasicDistributionAuthorization.sol +30 -10
- package/contracts/distribution/Distribution.sol +45 -85
- package/contracts/distribution/DistributionService.sol +192 -99
- package/contracts/distribution/DistributionServiceManager.sol +1 -1
- package/contracts/distribution/IDistributionComponent.sol +3 -10
- package/contracts/distribution/IDistributionService.sol +38 -24
- package/contracts/examples/fire/FirePool.sol +21 -8
- package/contracts/examples/fire/FirePoolAuthorization.sol +2 -1
- package/contracts/examples/fire/FireProduct.sol +38 -20
- package/contracts/examples/fire/FireProductAuthorization.sol +2 -1
- package/contracts/examples/flight/FlightLib.sol +279 -0
- package/contracts/examples/flight/FlightOracle.sol +168 -0
- package/contracts/examples/flight/FlightOracleAuthorization.sol +34 -0
- package/contracts/examples/flight/FlightPool.sol +89 -0
- package/contracts/examples/flight/FlightPoolAuthorization.sol +37 -0
- package/contracts/examples/flight/FlightProduct.sol +470 -0
- package/contracts/examples/flight/FlightProductAuthorization.sol +44 -0
- package/contracts/examples/flight/FlightUSD.sol +26 -0
- package/contracts/examples/flight/originalV1.sol +396 -0
- package/contracts/examples/unpermissioned/SimpleDistribution.sol +39 -8
- package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +28 -0
- package/contracts/examples/unpermissioned/SimpleOracle.sol +4 -8
- package/contracts/examples/unpermissioned/SimplePool.sol +32 -6
- package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
- package/contracts/examples/unpermissioned/SimpleProduct.sol +132 -46
- package/contracts/examples/unpermissioned/SimpleProductAuthorization.sol +28 -0
- package/contracts/instance/BaseStore.sol +93 -0
- package/contracts/instance/BundleSet.sol +42 -38
- package/contracts/instance/IBaseStore.sol +37 -0
- package/contracts/instance/IInstance.sol +109 -19
- package/contracts/instance/IInstanceService.sol +61 -14
- package/contracts/instance/Instance.sol +184 -65
- package/contracts/instance/InstanceAdmin.sol +221 -193
- package/contracts/instance/InstanceAuthorizationV3.sol +153 -72
- package/contracts/instance/InstanceReader.sol +447 -314
- package/contracts/instance/InstanceService.sol +315 -214
- package/contracts/instance/InstanceServiceManager.sol +1 -1
- package/contracts/instance/InstanceStore.sol +152 -116
- package/contracts/instance/ProductStore.sol +290 -0
- package/contracts/instance/RiskSet.sol +126 -0
- package/contracts/instance/TargetNames.sol +10 -0
- package/contracts/instance/base/BalanceStore.sol +4 -6
- package/contracts/instance/base/ObjectCounter.sol +1 -2
- package/contracts/instance/base/ObjectLifecycle.sol +6 -8
- package/contracts/instance/base/ObjectSet.sol +31 -33
- package/contracts/instance/base/ObjectSetHelperLib.sol +30 -0
- package/contracts/instance/module/IBundle.sol +6 -5
- package/contracts/instance/module/IComponents.sol +19 -10
- package/contracts/instance/module/IDistribution.sol +21 -8
- package/contracts/instance/module/IPolicy.sol +28 -7
- package/contracts/instance/module/IRisk.sol +5 -0
- package/contracts/oracle/BasicOracle.sol +3 -6
- package/contracts/oracle/BasicOracleAuthorization.sol +15 -8
- package/contracts/oracle/IOracle.sol +9 -4
- package/contracts/oracle/IOracleService.sol +12 -12
- package/contracts/oracle/Oracle.sol +5 -9
- package/contracts/oracle/OracleService.sol +98 -79
- package/contracts/oracle/OracleServiceManager.sol +1 -1
- package/contracts/pool/BasicPool.sol +26 -19
- package/contracts/pool/BasicPoolAuthorization.sol +34 -10
- package/contracts/pool/BundleService.sol +75 -182
- package/contracts/pool/BundleServiceManager.sol +1 -1
- package/contracts/pool/IBundleService.sol +28 -55
- package/contracts/pool/IPoolComponent.sol +1 -7
- package/contracts/pool/IPoolService.sol +65 -62
- package/contracts/pool/Pool.sol +111 -115
- package/contracts/pool/PoolLib.sol +341 -0
- package/contracts/pool/PoolService.sol +299 -229
- package/contracts/pool/PoolServiceManager.sol +1 -1
- package/contracts/product/ApplicationService.sol +93 -25
- package/contracts/product/ApplicationServiceManager.sol +1 -1
- package/contracts/product/BasicProduct.sol +10 -15
- package/contracts/product/BasicProductAuthorization.sol +33 -11
- package/contracts/product/ClaimService.sol +221 -207
- package/contracts/product/ClaimServiceManager.sol +1 -1
- package/contracts/product/IApplicationService.sol +28 -3
- package/contracts/product/IClaimService.sol +18 -5
- package/contracts/product/IPolicyService.sol +34 -12
- package/contracts/product/IPricingService.sol +1 -0
- package/contracts/product/IProductComponent.sol +4 -1
- package/contracts/product/IRiskService.sol +25 -10
- package/contracts/product/PolicyService.sol +260 -306
- package/contracts/product/PolicyServiceLib.sol +139 -0
- package/contracts/product/PolicyServiceManager.sol +1 -1
- package/contracts/product/PricingService.sol +52 -46
- package/contracts/product/PricingServiceManager.sol +3 -3
- package/contracts/product/Product.sol +106 -70
- package/contracts/product/RiskService.sol +130 -37
- package/contracts/product/RiskServiceManager.sol +1 -1
- package/contracts/registry/ChainNft.sol +4 -2
- package/contracts/registry/IRegistry.sol +25 -24
- package/contracts/registry/IRelease.sol +29 -0
- package/contracts/registry/Registry.sol +31 -12
- package/contracts/registry/RegistryAdmin.sol +94 -369
- package/contracts/registry/RegistryAuthorization.sol +337 -0
- package/contracts/registry/RegistryService.sol +4 -4
- package/contracts/registry/RegistryServiceManager.sol +1 -1
- package/contracts/registry/ReleaseAdmin.sol +199 -0
- package/contracts/registry/ReleaseLifecycle.sol +2 -0
- package/contracts/registry/ReleaseRegistry.sol +158 -134
- package/contracts/registry/ServiceAuthorizationV3.sol +200 -52
- package/contracts/registry/TokenRegistry.sol +61 -59
- package/contracts/shared/Component.sol +58 -119
- package/contracts/shared/ComponentService.sol +400 -395
- package/contracts/shared/ComponentServiceManager.sol +1 -1
- package/contracts/shared/ContractLib.sol +277 -3
- package/contracts/shared/IComponent.sol +2 -18
- package/contracts/shared/IComponentService.sol +28 -38
- package/contracts/shared/IInstanceLinkedComponent.sol +0 -11
- package/contracts/shared/INftOwnable.sol +2 -0
- package/contracts/shared/IRegisterable.sol +15 -5
- package/contracts/shared/IService.sol +3 -5
- package/contracts/shared/InitializableERC165.sol +9 -1
- package/contracts/shared/InstanceLinkedComponent.sol +63 -44
- package/contracts/shared/NftOwnable.sol +8 -6
- package/contracts/shared/PolicyHolder.sol +4 -3
- package/contracts/shared/Registerable.sol +41 -20
- package/contracts/shared/RegistryLinked.sol +7 -13
- package/contracts/shared/Service.sol +13 -30
- package/contracts/shared/TokenHandler.sol +264 -105
- package/contracts/shared/TokenHandlerDeployerLib.sol +10 -2
- package/contracts/staking/IStaking.sol +270 -72
- package/contracts/staking/IStakingService.sol +45 -75
- package/contracts/staking/ITargetLimitHandler.sol +17 -0
- package/contracts/staking/Staking.sol +522 -222
- package/contracts/staking/{StakeManagerLib.sol → StakingLib.sol} +55 -84
- package/contracts/staking/StakingManager.sol +4 -3
- package/contracts/staking/StakingReader.sol +58 -77
- package/contracts/staking/StakingService.sol +62 -148
- package/contracts/staking/StakingServiceManager.sol +6 -4
- package/contracts/staking/StakingStore.sol +1093 -330
- package/contracts/staking/TargetHandler.sol +132 -0
- package/contracts/staking/TargetManagerLib.sol +69 -46
- package/contracts/type/Amount.sol +4 -0
- package/contracts/type/Blocknumber.sol +17 -22
- package/contracts/type/ChainId.sol +101 -0
- package/contracts/type/Fee.sol +8 -8
- 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 +70 -68
- package/contracts/type/Referral.sol +6 -0
- package/contracts/type/RequestIdSet.sol +62 -0
- package/contracts/type/RiskId.sol +26 -8
- package/contracts/type/RoleId.sol +63 -45
- package/contracts/type/Seconds.sol +23 -0
- package/contracts/type/Selector.sol +5 -0
- package/contracts/type/String.sol +42 -0
- package/contracts/type/Timestamp.sol +14 -8
- package/contracts/type/UFixed.sol +35 -127
- package/contracts/type/Version.sol +54 -5
- package/contracts/upgradeability/IVersionable.sol +3 -0
- package/contracts/upgradeability/ProxyManager.sol +27 -13
- package/contracts/upgradeability/UpgradableProxyWithAdmin.sol +12 -2
- package/contracts/upgradeability/Versionable.sol +6 -3
- package/package.json +4 -4
- package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.dbg.json +0 -4
- package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.json +0 -1196
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +0 -4
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +0 -129
- package/artifacts/contracts/shared/ComponentServiceHelperLib.sol/ComponentServiceHelperLib.dbg.json +0 -4
- package/artifacts/contracts/shared/ComponentServiceHelperLib.sol/ComponentServiceHelperLib.json +0 -206
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +0 -4
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +0 -474
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +0 -538
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +0 -4
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +0 -440
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +0 -4
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +0 -205
- package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +0 -4
- package/artifacts/contracts/type/UFixed.sol/MathLib.json +0 -16
- package/contracts/authorization/ReleaseAccessManager.sol +0 -38
- package/contracts/instance/module/IAccess.sol +0 -46
- package/contracts/shared/ComponentServiceHelperLib.sol +0 -118
- package/contracts/shared/ComponentVerifyingService.sol +0 -126
- package/contracts/shared/IKeyValueStore.sol +0 -54
- package/contracts/shared/KeyValueStore.sol +0 -131
- package/contracts/staking/StakingLifecycle.sol +0 -23
| @@ -1,31 +1,30 @@ | |
| 1 1 | 
             
            // SPDX-License-Identifier: Apache-2.0
         | 
| 2 2 | 
             
            pragma solidity ^0.8.20;
         | 
| 3 3 |  | 
| 4 | 
            +
            import {IAccountingService} from "../accounting/IAccountingService.sol";
         | 
| 4 5 | 
             
            import {IBundle} from "../instance/module/IBundle.sol";
         | 
| 5 6 | 
             
            import {IBundleService} from "./IBundleService.sol";
         | 
| 6 | 
            -
            import {IComponents} from "../instance/module/IComponents.sol";
         | 
| 7 7 | 
             
            import {IComponentService} from "../shared/IComponentService.sol";
         | 
| 8 8 | 
             
            import {IRegistry} from "../registry/IRegistry.sol";
         | 
| 9 9 | 
             
            import {IRegistryService} from "../registry/IRegistryService.sol";
         | 
| 10 10 | 
             
            import {IInstance} from "../instance/IInstance.sol";
         | 
| 11 11 | 
             
            import {InstanceStore} from "../instance/InstanceStore.sol";
         | 
| 12 | 
            -
            import {IPolicy} from "../instance/module/IPolicy.sol";
         | 
| 13 12 |  | 
| 14 13 | 
             
            import {Amount, AmountLib} from "../type/Amount.sol";
         | 
| 15 14 | 
             
            import {BundleSet} from "../instance/BundleSet.sol";
         | 
| 16 | 
            -
            import {ComponentVerifyingService} from "../shared/ComponentVerifyingService.sol";
         | 
| 17 15 | 
             
            import {Fee} from "../type/Fee.sol";
         | 
| 18 16 | 
             
            import {InstanceReader} from "../instance/InstanceReader.sol";
         | 
| 19 17 | 
             
            import {NftId, NftIdLib} from "../type/NftId.sol";
         | 
| 20 | 
            -
            import {ObjectType, COMPONENT, POOL, BUNDLE, POLICY, REGISTRY} from "../type/ObjectType.sol";
         | 
| 21 | 
            -
            import { | 
| 18 | 
            +
            import {ObjectType, ACCOUNTING, COMPONENT, POOL, BUNDLE, POLICY, REGISTRY} from "../type/ObjectType.sol";
         | 
| 19 | 
            +
            import {PoolLib} from "./PoolLib.sol";
         | 
| 22 20 | 
             
            import {Seconds} from "../type/Seconds.sol";
         | 
| 21 | 
            +
            import {Service} from "../shared/Service.sol";
         | 
| 22 | 
            +
            import {StateId, ACTIVE, PAUSED, CLOSED, KEEP_STATE} from "../type/StateId.sol";
         | 
| 23 23 | 
             
            import {Timestamp, TimestampLib, zeroTimestamp} from "../type/Timestamp.sol";
         | 
| 24 24 |  | 
| 25 | 
            -
            string constant BUNDLE_SERVICE_NAME = "BundleService";
         | 
| 26 25 |  | 
| 27 26 | 
             
            contract BundleService is 
         | 
| 28 | 
            -
                 | 
| 27 | 
            +
                Service, 
         | 
| 29 28 | 
             
                IBundleService 
         | 
| 30 29 | 
             
            {
         | 
| 31 30 |  | 
| @@ -33,6 +32,7 @@ contract BundleService is | |
| 33 32 |  | 
| 34 33 | 
             
                address private _registryAddress;
         | 
| 35 34 | 
             
                IRegistryService private _registryService;
         | 
| 35 | 
            +
                IAccountingService private _accountingService;
         | 
| 36 36 | 
             
                IComponentService private _componentService;
         | 
| 37 37 |  | 
| 38 38 | 
             
                function _initialize(
         | 
| @@ -44,13 +44,14 @@ contract BundleService is | |
| 44 44 | 
             
                    initializer()
         | 
| 45 45 | 
             
                {
         | 
| 46 46 | 
             
                    (
         | 
| 47 | 
            -
                        address  | 
| 48 | 
            -
                        address  | 
| 47 | 
            +
                        address authority,
         | 
| 48 | 
            +
                        address registry
         | 
| 49 49 | 
             
                    ) = abi.decode(data, (address, address));
         | 
| 50 50 |  | 
| 51 | 
            -
                     | 
| 51 | 
            +
                    __Service_init(authority, registry, owner);
         | 
| 52 52 |  | 
| 53 53 | 
             
                    _registryService = IRegistryService(_getServiceAddress(REGISTRY()));
         | 
| 54 | 
            +
                    _accountingService = IAccountingService(_getServiceAddress(ACCOUNTING()));
         | 
| 54 55 | 
             
                    _componentService = IComponentService(_getServiceAddress(COMPONENT()));
         | 
| 55 56 |  | 
| 56 57 | 
             
                    _registerInterface(type(IBundleService).interfaceId);
         | 
| @@ -63,10 +64,11 @@ contract BundleService is | |
| 63 64 | 
             
                )
         | 
| 64 65 | 
             
                    external
         | 
| 65 66 | 
             
                    virtual
         | 
| 67 | 
            +
                    restricted()
         | 
| 66 68 | 
             
                {
         | 
| 67 69 | 
             
                    _checkNftType(bundleNftId, BUNDLE());
         | 
| 68 70 |  | 
| 69 | 
            -
                    (NftId poolNftId | 
| 71 | 
            +
                    (NftId poolNftId, IInstance instance) = PoolLib.getAndVerifyActivePool(getRegistry(), msg.sender);
         | 
| 70 72 | 
             
                    InstanceReader instanceReader = instance.getInstanceReader();
         | 
| 71 73 | 
             
                    IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
         | 
| 72 74 | 
             
                    if(bundleInfo.poolNftId.eqz()) {
         | 
| @@ -79,24 +81,23 @@ contract BundleService is | |
| 79 81 |  | 
| 80 82 | 
             
                    bundleInfo.fee = fee;
         | 
| 81 83 | 
             
                    instance.getInstanceStore().updateBundle(bundleNftId, bundleInfo, KEEP_STATE());
         | 
| 84 | 
            +
             | 
| 85 | 
            +
                    emit LogBundleServiceBundleFeeUpdated(bundleNftId, fee.fixedFee, fee.fractionalFee);
         | 
| 82 86 | 
             
                }
         | 
| 83 87 |  | 
| 84 88 |  | 
| 85 89 | 
             
                function create(
         | 
| 86 | 
            -
                    IInstance instance,
         | 
| 87 | 
            -
                    NftId poolNftId,
         | 
| 88 90 | 
             
                    address owner, 
         | 
| 89 91 | 
             
                    Fee memory bundleFee, 
         | 
| 90 | 
            -
                    Amount stakingAmount, 
         | 
| 91 92 | 
             
                    Seconds lifetime, 
         | 
| 92 93 | 
             
                    bytes calldata filter
         | 
| 93 94 | 
             
                )
         | 
| 94 95 | 
             
                    external
         | 
| 95 | 
            -
                     | 
| 96 | 
            -
                    restricted
         | 
| 96 | 
            +
                    virtual
         | 
| 97 | 
            +
                    restricted()
         | 
| 97 98 | 
             
                    returns(NftId bundleNftId)
         | 
| 98 99 | 
             
                {
         | 
| 99 | 
            -
                     | 
| 100 | 
            +
                    (NftId poolNftId, IInstance instance) = PoolLib.getAndVerifyActivePool(getRegistry(), msg.sender);
         | 
| 100 101 |  | 
| 101 102 | 
             
                    // register bundle with registry
         | 
| 102 103 | 
             
                    bundleNftId = _registryService.registerBundle(
         | 
| @@ -119,25 +120,17 @@ contract BundleService is | |
| 119 120 | 
             
                            poolNftId: poolNftId,
         | 
| 120 121 | 
             
                            fee: bundleFee,
         | 
| 121 122 | 
             
                            filter: filter,
         | 
| 122 | 
            -
                            activatedAt: TimestampLib. | 
| 123 | 
            -
                            expiredAt: TimestampLib. | 
| 123 | 
            +
                            activatedAt: TimestampLib.current(),
         | 
| 124 | 
            +
                            expiredAt: TimestampLib.current().addSeconds(lifetime),
         | 
| 124 125 | 
             
                            closedAt: zeroTimestamp()
         | 
| 125 126 | 
             
                        })
         | 
| 126 127 | 
             
                    );
         | 
| 127 128 |  | 
| 128 | 
            -
                    if (stakingAmount.gtz()) {
         | 
| 129 | 
            -
                        // bundle book keeping
         | 
| 130 | 
            -
                        _componentService.increaseBundleBalance(
         | 
| 131 | 
            -
                            instanceStore, 
         | 
| 132 | 
            -
                            bundleNftId, 
         | 
| 133 | 
            -
                            stakingAmount, 
         | 
| 134 | 
            -
                            AmountLib.zero()); // fee amount
         | 
| 135 | 
            -
                    }
         | 
| 136 | 
            -
             | 
| 137 129 | 
             
                    // put bundle under bundle managemet
         | 
| 138 130 | 
             
                    BundleSet bundleManager = instance.getBundleSet();
         | 
| 139 131 | 
             
                    bundleManager.add(bundleNftId);
         | 
| 140 | 
            -
             | 
| 132 | 
            +
             | 
| 133 | 
            +
                    emit LogBundleServiceBundleCreated(bundleNftId, poolNftId, lifetime);
         | 
| 141 134 | 
             
                }
         | 
| 142 135 |  | 
| 143 136 |  | 
| @@ -152,6 +145,7 @@ contract BundleService is | |
| 152 145 | 
             
                    virtual
         | 
| 153 146 | 
             
                    restricted()
         | 
| 154 147 | 
             
                {
         | 
| 148 | 
            +
                    // checks
         | 
| 155 149 | 
             
                    _checkNftType(policyNftId, POLICY());
         | 
| 156 150 | 
             
                    _checkNftType(bundleNftId, BUNDLE());
         | 
| 157 151 |  | 
| @@ -162,7 +156,7 @@ contract BundleService is | |
| 162 156 | 
             
                        IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
         | 
| 163 157 |  | 
| 164 158 | 
             
                        // ensure bundle is active and not yet expired
         | 
| 165 | 
            -
                        if(bundleState != ACTIVE() || bundleInfo.expiredAt < TimestampLib. | 
| 159 | 
            +
                        if(bundleState != ACTIVE() || bundleInfo.expiredAt < TimestampLib.current()) {
         | 
| 166 160 | 
             
                            revert ErrorBundleServiceBundleNotOpen(bundleNftId, bundleState, bundleInfo.expiredAt);
         | 
| 167 161 | 
             
                        }
         | 
| 168 162 | 
             
                    }
         | 
| @@ -183,51 +177,37 @@ contract BundleService is | |
| 183 177 | 
             
                        }
         | 
| 184 178 | 
             
                    }
         | 
| 185 179 |  | 
| 180 | 
            +
                    // effects
         | 
| 186 181 | 
             
                    // updated locked amount
         | 
| 187 182 | 
             
                    instanceStore.increaseLocked(bundleNftId, collateralAmount);
         | 
| 188 | 
            -
                    
         | 
| 189 | 
            -
                    // link policy to bundle in bundle manger
         | 
| 190 | 
            -
                    _linkPolicy(instance, policyNftId);
         | 
| 191 | 
            -
                }
         | 
| 192 | 
            -
             | 
| 193 | 
            -
             | 
| 194 | 
            -
                function lock(NftId bundleNftId) 
         | 
| 195 | 
            -
                    external
         | 
| 196 | 
            -
                    virtual
         | 
| 197 | 
            -
                {
         | 
| 198 | 
            -
                    _checkNftType(bundleNftId, BUNDLE());
         | 
| 199 | 
            -
             | 
| 200 | 
            -
                    (,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
         | 
| 201 | 
            -
             | 
| 202 | 
            -
                    // udpate bundle state
         | 
| 203 | 
            -
                    instance.getInstanceStore().updateBundleState(bundleNftId, PAUSED());
         | 
| 204 | 
            -
             | 
| 205 | 
            -
                    // update set of active bundles
         | 
| 206 | 
            -
                    BundleSet bundleManager = instance.getBundleSet();
         | 
| 207 | 
            -
                    bundleManager.lock(bundleNftId);
         | 
| 208 183 |  | 
| 209 | 
            -
                    emit  | 
| 184 | 
            +
                    emit LogBundleServiceCollateralLocked(bundleNftId, policyNftId, collateralAmount);
         | 
| 210 185 | 
             
                }
         | 
| 211 186 |  | 
| 212 187 |  | 
| 213 | 
            -
                function  | 
| 188 | 
            +
                function setLocked(NftId bundleNftId, bool locked) 
         | 
| 214 189 | 
             
                    external
         | 
| 215 190 | 
             
                    virtual
         | 
| 191 | 
            +
                    restricted()
         | 
| 216 192 | 
             
                {
         | 
| 193 | 
            +
                    // checks
         | 
| 217 194 | 
             
                    _checkNftType(bundleNftId, BUNDLE());
         | 
| 218 195 |  | 
| 219 | 
            -
                    ( | 
| 220 | 
            -
             | 
| 221 | 
            -
                    // udpate bundle state
         | 
| 222 | 
            -
                    instance.getInstanceStore().updateBundleState(bundleNftId, ACTIVE());
         | 
| 196 | 
            +
                    (, IInstance instance) = PoolLib.getAndVerifyActivePool(getRegistry(), msg.sender);
         | 
| 223 197 |  | 
| 198 | 
            +
                    // effects
         | 
| 224 199 | 
             
                    // update set of active bundles
         | 
| 225 200 | 
             
                    BundleSet bundleManager = instance.getBundleSet();
         | 
| 226 | 
            -
                    bundleManager.unlock(bundleNftId);
         | 
| 227 201 |  | 
| 228 | 
            -
                     | 
| 202 | 
            +
                    if (locked) {
         | 
| 203 | 
            +
                        bundleManager.lock(bundleNftId);
         | 
| 204 | 
            +
                        emit LogBundleServiceBundleLocked(bundleNftId);
         | 
| 205 | 
            +
                    } else {
         | 
| 206 | 
            +
                        bundleManager.unlock(bundleNftId);
         | 
| 207 | 
            +
                        emit LogBundleServiceBundleUnlocked(bundleNftId);
         | 
| 208 | 
            +
                    }
         | 
| 229 209 | 
             
                }
         | 
| 230 | 
            -
             | 
| 210 | 
            +
                
         | 
| 231 211 |  | 
| 232 212 | 
             
                function close(
         | 
| 233 213 | 
             
                    IInstance instance,
         | 
| @@ -235,9 +215,10 @@ contract BundleService is | |
| 235 215 | 
             
                ) 
         | 
| 236 216 | 
             
                    external
         | 
| 237 217 | 
             
                    virtual
         | 
| 238 | 
            -
                    restricted
         | 
| 218 | 
            +
                    restricted()
         | 
| 239 219 | 
             
                    returns (Amount unstakedAmount, Amount feeAmount)
         | 
| 240 220 | 
             
                {
         | 
| 221 | 
            +
                    // checks
         | 
| 241 222 | 
             
                    _checkNftType(bundleNftId, BUNDLE());
         | 
| 242 223 |  | 
| 243 224 | 
             
                    InstanceReader instanceReader = instance.getInstanceReader();
         | 
| @@ -249,6 +230,7 @@ contract BundleService is | |
| 249 230 | 
             
                        revert ErrorBundleServiceBundleWithOpenPolicies(bundleNftId, openPolicies);
         | 
| 250 231 | 
             
                    }
         | 
| 251 232 |  | 
| 233 | 
            +
                    // effects
         | 
| 252 234 | 
             
                    {
         | 
| 253 235 | 
             
                        // update bundle state
         | 
| 254 236 | 
             
                        InstanceStore instanceStore = instance.getInstanceStore();
         | 
| @@ -259,52 +241,59 @@ contract BundleService is | |
| 259 241 | 
             
                        Amount balanceAmountWithFees = instanceReader.getBalanceAmount(bundleNftId);
         | 
| 260 242 | 
             
                        feeAmount = instanceReader.getFeeAmount(bundleNftId);
         | 
| 261 243 | 
             
                        unstakedAmount = balanceAmountWithFees - feeAmount;
         | 
| 262 | 
            -
                         | 
| 244 | 
            +
                        _accountingService.decreaseBundleBalance(instanceStore, bundleNftId, unstakedAmount, feeAmount);
         | 
| 263 245 | 
             
                    }
         | 
| 246 | 
            +
             | 
| 247 | 
            +
                    emit LogBundleServiceBundleClosed(bundleNftId);
         | 
| 264 248 | 
             
                }
         | 
| 265 249 |  | 
| 266 250 | 
             
                /// @inheritdoc IBundleService
         | 
| 267 251 | 
             
                function stake(
         | 
| 268 | 
            -
                     | 
| 252 | 
            +
                    InstanceReader instanceReader,
         | 
| 253 | 
            +
                    InstanceStore instanceStore,
         | 
| 269 254 | 
             
                    NftId bundleNftId, 
         | 
| 270 255 | 
             
                    Amount amount
         | 
| 271 256 | 
             
                ) 
         | 
| 272 257 | 
             
                    external 
         | 
| 273 258 | 
             
                    virtual
         | 
| 274 | 
            -
                     | 
| 259 | 
            +
                    restricted()
         | 
| 275 260 | 
             
                {
         | 
| 261 | 
            +
                    // checks
         | 
| 276 262 | 
             
                    _checkNftType(bundleNftId, BUNDLE());
         | 
| 277 263 |  | 
| 278 | 
            -
                    IBundle.BundleInfo memory bundleInfo =  | 
| 279 | 
            -
                    StateId bundleState =  | 
| 264 | 
            +
                    IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
         | 
| 265 | 
            +
                    StateId bundleState = instanceReader.getBundleState(bundleNftId);
         | 
| 280 266 |  | 
| 281 267 | 
             
                    if( (bundleState != ACTIVE() && bundleState != PAUSED()) // locked bundles can be staked
         | 
| 282 | 
            -
                        || bundleInfo.expiredAt < TimestampLib. | 
| 268 | 
            +
                        || bundleInfo.expiredAt < TimestampLib.current() 
         | 
| 283 269 | 
             
                        || bundleInfo.closedAt.gtz()) {
         | 
| 284 270 | 
             
                        revert ErrorBundleServiceBundleNotOpen(bundleNftId, bundleState, bundleInfo.expiredAt);
         | 
| 285 271 | 
             
                    }
         | 
| 286 272 |  | 
| 287 | 
            -
                     | 
| 288 | 
            -
             | 
| 273 | 
            +
                    // effects
         | 
| 274 | 
            +
                    _accountingService.increaseBundleBalance(
         | 
| 275 | 
            +
                        instanceStore, 
         | 
| 289 276 | 
             
                        bundleNftId, 
         | 
| 290 277 | 
             
                        amount, 
         | 
| 291 278 | 
             
                        AmountLib.zero());
         | 
| 279 | 
            +
             | 
| 280 | 
            +
                    emit LogBundleServiceBundleStaked(bundleNftId, amount);
         | 
| 292 281 | 
             
                }
         | 
| 293 282 |  | 
| 294 283 | 
             
                /// @inheritdoc IBundleService
         | 
| 295 284 | 
             
                function unstake(
         | 
| 296 | 
            -
                     | 
| 285 | 
            +
                    InstanceStore instanceStore,
         | 
| 297 286 | 
             
                    NftId bundleNftId, 
         | 
| 298 287 | 
             
                    Amount amount
         | 
| 299 288 | 
             
                ) 
         | 
| 300 289 | 
             
                    external 
         | 
| 301 290 | 
             
                    virtual
         | 
| 302 | 
            -
                     | 
| 291 | 
            +
                    restricted()
         | 
| 303 292 | 
             
                    returns (Amount unstakedAmount)
         | 
| 304 293 | 
             
                {
         | 
| 294 | 
            +
                    // checks
         | 
| 305 295 | 
             
                    _checkNftType(bundleNftId, BUNDLE());
         | 
| 306 296 |  | 
| 307 | 
            -
                    InstanceStore instanceStore = instance.getInstanceStore();
         | 
| 308 297 | 
             
                    (
         | 
| 309 298 | 
             
                        Amount balanceAmount,
         | 
| 310 299 | 
             
                        Amount lockedAmount,
         | 
| @@ -324,23 +313,27 @@ contract BundleService is | |
| 324 313 | 
             
                        revert ErrorBundleServiceUnstakeAmountExceedsLimit(amount, availableAmount);
         | 
| 325 314 | 
             
                    }
         | 
| 326 315 |  | 
| 327 | 
            -
                     | 
| 316 | 
            +
                    // effects
         | 
| 317 | 
            +
                    _accountingService.decreaseBundleBalance(
         | 
| 328 318 | 
             
                        instanceStore, 
         | 
| 329 319 | 
             
                        bundleNftId, 
         | 
| 330 320 | 
             
                        unstakedAmount, 
         | 
| 331 321 | 
             
                        AmountLib.zero());
         | 
| 322 | 
            +
                    
         | 
| 323 | 
            +
                    emit LogBundleServiceBundleUnstaked(bundleNftId, unstakedAmount);
         | 
| 332 324 | 
             
                }
         | 
| 333 325 |  | 
| 334 326 | 
             
                /// @inheritdoc IBundleService
         | 
| 335 327 | 
             
                function extend(NftId bundleNftId, Seconds lifetimeExtension) 
         | 
| 336 328 | 
             
                    external 
         | 
| 337 329 | 
             
                    virtual
         | 
| 338 | 
            -
                     | 
| 330 | 
            +
                    restricted()
         | 
| 339 331 | 
             
                    returns (Timestamp extendedExpiredAt) 
         | 
| 340 332 | 
             
                {
         | 
| 333 | 
            +
                    // checks
         | 
| 341 334 | 
             
                    _checkNftType(bundleNftId, BUNDLE());
         | 
| 342 335 |  | 
| 343 | 
            -
                    (NftId poolNftId | 
| 336 | 
            +
                    (NftId poolNftId, IInstance instance) = PoolLib.getAndVerifyActivePool(getRegistry(), msg.sender);
         | 
| 344 337 | 
             
                    IBundle.BundleInfo memory bundleInfo = instance.getInstanceReader().getBundleInfo(bundleNftId);
         | 
| 345 338 | 
             
                    StateId bundleState = instance.getInstanceReader().getBundleState(bundleNftId);
         | 
| 346 339 |  | 
| @@ -350,7 +343,7 @@ contract BundleService is | |
| 350 343 | 
             
                    }
         | 
| 351 344 |  | 
| 352 345 | 
             
                    // ensure bundle is active and not yet expired
         | 
| 353 | 
            -
                    if(bundleState != ACTIVE() || bundleInfo.expiredAt < TimestampLib. | 
| 346 | 
            +
                    if(bundleState != ACTIVE() || bundleInfo.expiredAt < TimestampLib.current()) {
         | 
| 354 347 | 
             
                        revert ErrorBundleServiceBundleNotOpen(bundleNftId, bundleState, bundleInfo.expiredAt);
         | 
| 355 348 | 
             
                    }
         | 
| 356 349 |  | 
| @@ -358,17 +351,18 @@ contract BundleService is | |
| 358 351 | 
             
                        revert ErrorBundleServiceExtensionLifetimeIsZero();
         | 
| 359 352 | 
             
                    }
         | 
| 360 353 |  | 
| 354 | 
            +
                    // effects
         | 
| 361 355 | 
             
                    bundleInfo.expiredAt = bundleInfo.expiredAt.addSeconds(lifetimeExtension);
         | 
| 362 | 
            -
                     | 
| 356 | 
            +
                    extendedExpiredAt = bundleInfo.expiredAt;
         | 
| 363 357 |  | 
| 364 | 
            -
                     | 
| 358 | 
            +
                    instance.getInstanceStore().updateBundle(bundleNftId, bundleInfo, KEEP_STATE());
         | 
| 365 359 |  | 
| 366 | 
            -
                     | 
| 360 | 
            +
                    emit LogBundleServiceBundleExtended(bundleNftId, lifetimeExtension, extendedExpiredAt);
         | 
| 367 361 | 
             
                }
         | 
| 368 362 |  | 
| 369 363 |  | 
| 370 364 | 
             
                function releaseCollateral(
         | 
| 371 | 
            -
                     | 
| 365 | 
            +
                    InstanceStore instanceStore,
         | 
| 372 366 | 
             
                    NftId policyNftId, 
         | 
| 373 367 | 
             
                    NftId bundleNftId, 
         | 
| 374 368 | 
             
                    Amount collateralAmount
         | 
| @@ -380,112 +374,11 @@ contract BundleService is | |
| 380 374 | 
             
                    _checkNftType(policyNftId, POLICY());
         | 
| 381 375 | 
             
                    _checkNftType(bundleNftId, BUNDLE());
         | 
| 382 376 |  | 
| 383 | 
            -
                     | 
| 384 | 
            -
                }
         | 
| 385 | 
            -
             | 
| 386 | 
            -
                /// @dev unlinks policy from bundle
         | 
| 387 | 
            -
                function unlinkPolicy(
         | 
| 388 | 
            -
                    IInstance instance, 
         | 
| 389 | 
            -
                    NftId policyNftId
         | 
| 390 | 
            -
                ) 
         | 
| 391 | 
            -
                    external
         | 
| 392 | 
            -
                    virtual
         | 
| 393 | 
            -
                    restricted
         | 
| 394 | 
            -
                {
         | 
| 395 | 
            -
                    _checkNftType(policyNftId, POLICY());
         | 
| 396 | 
            -
             | 
| 397 | 
            -
                    // ensure policy is closeable
         | 
| 398 | 
            -
                    if (!policyIsCloseable(instance, policyNftId)) {
         | 
| 399 | 
            -
                        revert ErrorBundleServicePolicyNotCloseable(policyNftId);
         | 
| 400 | 
            -
                    }
         | 
| 401 | 
            -
             | 
| 402 | 
            -
                    instance.getBundleSet().unlinkPolicy(policyNftId);
         | 
| 403 | 
            -
                }
         | 
| 404 | 
            -
             | 
| 405 | 
            -
                /// @inheritdoc IBundleService
         | 
| 406 | 
            -
                function withdrawBundleFees(NftId bundleNftId, Amount amount) 
         | 
| 407 | 
            -
                    public 
         | 
| 408 | 
            -
                    virtual
         | 
| 409 | 
            -
                    // TODO: restricted() (once #462 is done)
         | 
| 410 | 
            -
                    returns (Amount withdrawnAmount) 
         | 
| 411 | 
            -
                {
         | 
| 412 | 
            -
                    _checkNftType(bundleNftId, BUNDLE());
         | 
| 413 | 
            -
             | 
| 414 | 
            -
                    (NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
         | 
| 415 | 
            -
                    InstanceReader reader = instance.getInstanceReader();
         | 
| 416 | 
            -
                    
         | 
| 417 | 
            -
                    IComponents.ComponentInfo memory poolInfo = reader.getComponentInfo(poolNftId);
         | 
| 418 | 
            -
                    address poolWallet = poolInfo.wallet;
         | 
| 419 | 
            -
                    
         | 
| 420 | 
            -
                    // IBundle.BundleInfo memory bundleInfo = reader.getBundleInfo(bundleNftId);
         | 
| 421 | 
            -
                    
         | 
| 422 | 
            -
                    // determine withdrawn amount
         | 
| 423 | 
            -
                    withdrawnAmount = amount;
         | 
| 424 | 
            -
                    if (withdrawnAmount.gte(AmountLib.max())) {
         | 
| 425 | 
            -
                        withdrawnAmount = reader.getFeeAmount(bundleNftId);
         | 
| 426 | 
            -
                    } else {
         | 
| 427 | 
            -
                        if (withdrawnAmount.gt(reader.getFeeAmount(bundleNftId))) {
         | 
| 428 | 
            -
                            revert ErrorBundleServiceFeesWithdrawAmountExceedsLimit(withdrawnAmount, reader.getFeeAmount(bundleNftId));
         | 
| 429 | 
            -
                        }
         | 
| 430 | 
            -
                    }
         | 
| 377 | 
            +
                    instanceStore.decreaseLocked(bundleNftId, collateralAmount);
         | 
| 431 378 |  | 
| 432 | 
            -
                     | 
| 433 | 
            -
                    {
         | 
| 434 | 
            -
                        InstanceStore store = instance.getInstanceStore();
         | 
| 435 | 
            -
                        // decrease fee amount of the bundle
         | 
| 436 | 
            -
                        _componentService.decreaseBundleBalance(store, bundleNftId, AmountLib.zero(), withdrawnAmount);
         | 
| 437 | 
            -
                        // decrease pool balance 
         | 
| 438 | 
            -
                        _componentService.decreasePoolBalance(store, poolNftId, withdrawnAmount, AmountLib.zero());
         | 
| 439 | 
            -
                    }
         | 
| 440 | 
            -
             | 
| 441 | 
            -
                    // transfer amount to bundle owner
         | 
| 442 | 
            -
                    {
         | 
| 443 | 
            -
                        address owner = getRegistry().ownerOf(bundleNftId);
         | 
| 444 | 
            -
                        emit LogBundleServiceFeesWithdrawn(bundleNftId, owner, address(poolInfo.token), withdrawnAmount);
         | 
| 445 | 
            -
                        poolInfo.tokenHandler.distributeTokens(poolWallet, owner, withdrawnAmount);
         | 
| 446 | 
            -
                    }
         | 
| 379 | 
            +
                    emit LogBundleServiceCollateralReleased(bundleNftId, policyNftId, collateralAmount);
         | 
| 447 380 | 
             
                }
         | 
| 448 381 |  | 
| 449 | 
            -
                /// @inheritdoc IBundleService
         | 
| 450 | 
            -
                function policyIsCloseable(IInstance instance, NftId policyNftId)
         | 
| 451 | 
            -
                    public
         | 
| 452 | 
            -
                    view
         | 
| 453 | 
            -
                    returns (bool isCloseable)
         | 
| 454 | 
            -
                {
         | 
| 455 | 
            -
                    _checkNftType(policyNftId, POLICY());
         | 
| 456 | 
            -
             | 
| 457 | 
            -
                    IPolicy.PolicyInfo memory info = instance.getInstanceReader().getPolicyInfo(policyNftId);
         | 
| 458 | 
            -
                    
         | 
| 459 | 
            -
                    if (info.productNftId.eqz()) { return false; } // not closeable: policy does not exist (or does not belong to this instance)
         | 
| 460 | 
            -
                    if (info.activatedAt.eqz()) { return false; } // not closeable: not yet activated
         | 
| 461 | 
            -
                    if (info.closedAt.gtz()) { return false; } // not closeable: already closed
         | 
| 462 | 
            -
                    if (info.openClaimsCount > 0) { return false; } // not closeable: has open claims
         | 
| 463 | 
            -
             | 
| 464 | 
            -
                    // closeable: if sum of claims matches sum insured a policy may be closed prior to the expiry date
         | 
| 465 | 
            -
                    if (info.claimAmount == info.sumInsuredAmount) { return true; }
         | 
| 466 | 
            -
             | 
| 467 | 
            -
                    // not closeable: not yet expired
         | 
| 468 | 
            -
                    if (TimestampLib.blockTimestamp() < info.expiredAt) { return false; }
         | 
| 469 | 
            -
             | 
| 470 | 
            -
                    // all conditionsl to close the policy are met
         | 
| 471 | 
            -
                    return true; 
         | 
| 472 | 
            -
                }
         | 
| 473 | 
            -
             | 
| 474 | 
            -
                /// @dev links policy to bundle
         | 
| 475 | 
            -
                function _linkPolicy(IInstance instance, NftId policyNftId) 
         | 
| 476 | 
            -
                    internal
         | 
| 477 | 
            -
                {
         | 
| 478 | 
            -
                    InstanceReader instanceReader = instance.getInstanceReader();
         | 
| 479 | 
            -
                    IPolicy.PolicyInfo memory policyInfo = instanceReader.getPolicyInfo(policyNftId);
         | 
| 480 | 
            -
             | 
| 481 | 
            -
                    // ensure policy has not yet been activated in a previous tx already
         | 
| 482 | 
            -
                    if (policyInfo.activatedAt.gtz() && policyInfo.activatedAt < TimestampLib.blockTimestamp()) {
         | 
| 483 | 
            -
                        revert BundleSet.ErrorBundleSetPolicyAlreadyActivated(policyNftId);
         | 
| 484 | 
            -
                    }
         | 
| 485 | 
            -
                    
         | 
| 486 | 
            -
                    BundleSet bundleManager = instance.getBundleSet();
         | 
| 487 | 
            -
                    bundleManager.linkPolicy(policyNftId);
         | 
| 488 | 
            -
                }
         | 
| 489 382 |  | 
| 490 383 | 
             
                function _getDomain() internal pure override returns(ObjectType) {
         | 
| 491 384 | 
             
                    return BUNDLE();
         | 
| @@ -17,7 +17,7 @@ contract BundleServiceManager is ProxyManager { | |
| 17 17 | 
             
                ) 
         | 
| 18 18 | 
             
                {
         | 
| 19 19 | 
             
                    BundleService svc = new BundleService{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), 
         | 
| @@ -1,21 +1,21 @@ | |
| 1 1 | 
             
            // SPDX-License-Identifier: Apache-2.0
         | 
| 2 2 | 
             
            pragma solidity ^0.8.20;
         | 
| 3 3 |  | 
| 4 | 
            +
            import {IService} from "../shared/IService.sol";
         | 
| 5 | 
            +
            import {IInstance} from "../instance/IInstance.sol";
         | 
| 6 | 
            +
             | 
| 4 7 | 
             
            import {Amount} from "../type/Amount.sol";
         | 
| 5 8 | 
             
            import {NftId} from "../type/NftId.sol";
         | 
| 6 9 | 
             
            import {Fee} from "../type/Fee.sol";
         | 
| 7 | 
            -
            import { | 
| 8 | 
            -
            import { | 
| 9 | 
            -
            import {IInstance} from "../instance/IInstance.sol";
         | 
| 10 | 
            +
            import {InstanceReader} from "../instance/InstanceReader.sol";
         | 
| 11 | 
            +
            import {InstanceStore} from "../instance/InstanceStore.sol";
         | 
| 10 12 | 
             
            import {Seconds} from "../type/Seconds.sol";
         | 
| 11 13 | 
             
            import {StateId} from "../type/StateId.sol";
         | 
| 12 14 | 
             
            import {Timestamp} from "../type/Timestamp.sol";
         | 
| 15 | 
            +
            import {UFixed} from "../type/UFixed.sol";
         | 
| 13 16 |  | 
| 14 17 | 
             
            interface IBundleService is IService {
         | 
| 15 18 |  | 
| 16 | 
            -
                event LogBundleServiceBundleActivated(NftId bundleNftId);
         | 
| 17 | 
            -
                event LogBundleServiceBundleLocked(NftId bundleNftId);
         | 
| 18 | 
            -
             | 
| 19 19 | 
             
                error ErrorBundleServiceInsufficientAllowance(address bundleOwner, address tokenHandlerAddress, Amount amount);
         | 
| 20 20 | 
             
                error ErrorBundleServiceBundleNotOpen(NftId bundleNftId, StateId state, Timestamp expiredAt);
         | 
| 21 21 | 
             
                error ErrorBundleServiceCapacityInsufficient(NftId bundleNftId, Amount capacityAmount, Amount collateralAmount);
         | 
| @@ -25,24 +25,26 @@ interface IBundleService is IService { | |
| 25 25 | 
             
                error ErrorBundleServiceBundlePoolMismatch(NftId bundleNftId, NftId expectedPool, NftId actualPool);
         | 
| 26 26 |  | 
| 27 27 | 
             
                error ErrorBundleServicePolicyNotCloseable(NftId policyNftId);
         | 
| 28 | 
            -
             | 
| 29 | 
            -
                error ErrorBundleServiceFeesWithdrawAmountExceedsLimit(Amount amount, Amount limit);
         | 
| 30 28 |  | 
| 31 29 | 
             
                error ErrorBundleServiceUnstakeAmountExceedsLimit(Amount amount, Amount limit);
         | 
| 32 30 |  | 
| 33 31 | 
             
                error ErrorBundleServiceExtensionLifetimeIsZero();
         | 
| 34 32 |  | 
| 35 | 
            -
                event  | 
| 33 | 
            +
                event LogBundleServiceBundleCreated(NftId bundleNftId, NftId poolNftId, Seconds lifetime);
         | 
| 34 | 
            +
                event LogBundleServiceBundleClosed(NftId bundleNftId);
         | 
| 35 | 
            +
                event LogBundleServiceBundleLocked(NftId bundleNftId);
         | 
| 36 | 
            +
                event LogBundleServiceBundleUnlocked(NftId bundleNftId);
         | 
| 36 37 | 
             
                event LogBundleServiceBundleExtended(NftId bundleNftId, Seconds lifetimeExtension, Timestamp extendedExpiredAt);
         | 
| 38 | 
            +
                event LogBundleServiceBundleFeeUpdated(NftId bundleNftId, Amount fixedFee, UFixed fractionalFee);
         | 
| 39 | 
            +
                event LogBundleServiceCollateralLocked(NftId bundleNftId, NftId policyNftId, Amount collateralAmount);
         | 
| 40 | 
            +
                event LogBundleServiceCollateralReleased(NftId bundleNftId, NftId policyNftId, Amount collateralAmount);
         | 
| 41 | 
            +
                event LogBundleServiceBundleStaked(NftId bundleNftId, Amount amount);
         | 
| 42 | 
            +
                event LogBundleServiceBundleUnstaked(NftId bundleNftId, Amount amount);
         | 
| 37 43 |  | 
| 38 | 
            -
                /// @dev  | 
| 39 | 
            -
                /// may only be called by pool service
         | 
| 44 | 
            +
                /// @dev Create a new bundle for the specified attributes.
         | 
| 40 45 | 
             
                function create(
         | 
| 41 | 
            -
                    IInstance instance, // instance relevant for bundle
         | 
| 42 | 
            -
                    NftId poolNftId, // the pool the bundle will be linked to
         | 
| 43 46 | 
             
                    address owner, // initial bundle owner
         | 
| 44 47 | 
             
                    Fee memory fee, // fees deducted from premium that go to bundle owner
         | 
| 45 | 
            -
                    Amount stakingAmount, // staking amount - staking fees result in initial bundle capital
         | 
| 46 48 | 
             
                    Seconds lifetime, // initial duration for which new policies are covered
         | 
| 47 49 | 
             
                    bytes calldata filter // optional use case specific criteria that define if a policy may be covered by this bundle
         | 
| 48 50 | 
             
                )
         | 
| @@ -52,28 +54,24 @@ interface IBundleService is IService { | |
| 52 54 |  | 
| 53 55 | 
             
                /// @dev increase bundle stakes by the specified amount. bundle must not be expired or closed
         | 
| 54 56 | 
             
                /// may only be called by the pool service
         | 
| 55 | 
            -
                function stake( | 
| 57 | 
            +
                function stake(
         | 
| 58 | 
            +
                    InstanceReader instanceReader,
         | 
| 59 | 
            +
                    InstanceStore instanceStore,
         | 
| 60 | 
            +
                    NftId bundleNftId, 
         | 
| 61 | 
            +
                    Amount amount
         | 
| 62 | 
            +
                ) external;
         | 
| 56 63 |  | 
| 57 64 | 
             
                /// @dev decrease bundle stakes by the specified amount
         | 
| 58 65 | 
             
                /// may only be called by the pool service
         | 
| 59 | 
            -
                 | 
| 60 | 
            -
                /// @param bundleNftId the bundle nft id
         | 
| 61 | 
            -
                /// @param amount the amount to unstake (set to AmountLib.max() to unstake all available stakes)
         | 
| 62 | 
            -
                /// @return unstakedAmount the effective unstaked amount
         | 
| 63 | 
            -
                function unstake(IInstance instance, NftId bundleNftId, Amount amount) external returns (Amount unstakedAmount);
         | 
| 66 | 
            +
                function unstake(InstanceStore instanceStore, NftId bundleNftId, Amount amount) external returns (Amount unstakedAmount);
         | 
| 64 67 |  | 
| 65 68 | 
             
                /// @dev extend the lifetime of the bundle by the specified time in seconds
         | 
| 66 69 | 
             
                function extend(NftId bundleNftId, Seconds lifetimeExtension) external returns (Timestamp extendedExpiredAt);
         | 
| 67 70 |  | 
| 68 | 
            -
                /// @dev locks the specified bundle | 
| 69 | 
            -
                ///  | 
| 70 | 
            -
                /// may only be called by registered and unlocked pool components
         | 
| 71 | 
            -
                function  | 
| 72 | 
            -
             | 
| 73 | 
            -
                /// @dev activates the specified bundle
         | 
| 74 | 
            -
                /// only locked bundles may be unlocked
         | 
| 75 | 
            -
                /// may only be called by registered and unlocked pool components
         | 
| 76 | 
            -
                function unlock(NftId bundleNftId) external;
         | 
| 71 | 
            +
                /// @dev locks/unlocks the specified bundle. 
         | 
| 72 | 
            +
                /// locked bundles are not available to collateralize new policies.
         | 
| 73 | 
            +
                /// may only be called by registered and unlocked pool components.
         | 
| 74 | 
            +
                function setLocked(NftId bundleNftId, bool locked) external;
         | 
| 77 75 |  | 
| 78 76 | 
             
                /// @dev closes the specified bundle
         | 
| 79 77 | 
             
                /// only open bundles (active or locked) may be closed
         | 
| @@ -110,34 +108,9 @@ interface IBundleService is IService { | |
| 110 108 | 
             
                /// @dev releases the specified collateral in the bundle
         | 
| 111 109 | 
             
                /// may only be called by pool service
         | 
| 112 110 | 
             
                function releaseCollateral(
         | 
| 113 | 
            -
                     | 
| 111 | 
            +
                    InstanceStore instanceStore, 
         | 
| 114 112 | 
             
                    NftId policyNftId, 
         | 
| 115 113 | 
             
                    NftId bundleNftId, 
         | 
| 116 114 | 
             
                    Amount collateralAmount
         | 
| 117 115 | 
             
                ) external;
         | 
| 118 | 
            -
             | 
| 119 | 
            -
                /// @dev unlink policy from bundle
         | 
| 120 | 
            -
                /// policy may only be unlinked if policy is closeable
         | 
| 121 | 
            -
                /// may only be called by pool service
         | 
| 122 | 
            -
                function unlinkPolicy(
         | 
| 123 | 
            -
                    IInstance instance, 
         | 
| 124 | 
            -
                    NftId policyNftId
         | 
| 125 | 
            -
                ) external;
         | 
| 126 | 
            -
             | 
| 127 | 
            -
                // FIXME: move to pool service
         | 
| 128 | 
            -
                /// @dev Withdraw bundle feeds for the given bundle
         | 
| 129 | 
            -
                /// @param bundleNftId the bundle Nft Id
         | 
| 130 | 
            -
                /// @param amount the amount to withdraw. If set to AMOUNT_MAX, the full commission available is withdrawn
         | 
| 131 | 
            -
                /// @return withdrawnAmount the effective withdrawn amount
         | 
| 132 | 
            -
                function withdrawBundleFees(NftId bundleNftId, Amount amount) external returns (Amount withdrawnAmount);
         | 
| 133 | 
            -
             | 
| 134 | 
            -
                /// @dev returns true iff policy may be closed
         | 
| 135 | 
            -
                /// a policy can be closed all conditions below are met
         | 
| 136 | 
            -
                /// - policy exists
         | 
| 137 | 
            -
                /// - has been activated
         | 
| 138 | 
            -
                /// - is not yet closed
         | 
| 139 | 
            -
                /// - has no open claims
         | 
| 140 | 
            -
                /// - claim amount matches sum insured amount or is expired
         | 
| 141 | 
            -
                function policyIsCloseable(IInstance instance, NftId policyNftId) external view returns (bool isCloseable);
         | 
| 142 | 
            -
             | 
| 143 116 | 
             
            }
         | 
| @@ -27,9 +27,7 @@ interface IPoolComponent is IInstanceLinkedComponent { | |
| 27 27 | 
             
                /// The default implementation is empty.
         | 
| 28 28 | 
             
                function verifyApplication(
         | 
| 29 29 | 
             
                    NftId applicationNftId, 
         | 
| 30 | 
            -
                    bytes memory applicationData,
         | 
| 31 30 | 
             
                    NftId bundleNftId, 
         | 
| 32 | 
            -
                    bytes memory bundleFilter,
         | 
| 33 31 | 
             
                    Amount collateralizationAmount
         | 
| 34 32 | 
             
                ) external;
         | 
| 35 33 |  | 
| @@ -47,6 +45,7 @@ interface IPoolComponent is IInstanceLinkedComponent { | |
| 47 45 | 
             
                    view
         | 
| 48 46 | 
             
                    returns (bool isMatching);
         | 
| 49 47 |  | 
| 48 | 
            +
             | 
| 50 49 | 
             
                /// @dev This is a callback function that is called by the claim service when a claim is confirmed.
         | 
| 51 50 | 
             
                /// The pool has the option to implement custom behavirous such as triggering a reinsurance claim or blocking the claim confirmaation.
         | 
| 52 51 | 
             
                /// The default implementation is empty.
         | 
| @@ -56,11 +55,6 @@ interface IPoolComponent is IInstanceLinkedComponent { | |
| 56 55 | 
             
                    Amount amount
         | 
| 57 56 | 
             
                ) external;
         | 
| 58 57 |  | 
| 59 | 
            -
                /// @dev Withdraw bundle feeds for the given bundle
         | 
| 60 | 
            -
                /// @param bundleNftId the bundle Nft Id
         | 
| 61 | 
            -
                /// @param amount the amount to withdraw. If set to AMOUNT_MAX, the full commission available is withdrawn
         | 
| 62 | 
            -
                /// @return withdrawnAmount the effective withdrawn amount
         | 
| 63 | 
            -
                function withdrawBundleFees(NftId bundleNftId, Amount amount) external returns (Amount withdrawnAmount);
         | 
| 64 58 |  | 
| 65 59 | 
             
                /// @dev Returns initial pool specific infos for this pool
         | 
| 66 60 | 
             
                function getInitialPoolInfo() external view returns (IComponents.PoolInfo memory info);
         |