@etherisc/gif-next 0.0.2-f12cf4d-104 → 0.0.2-f13fd28-503
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +23 -1
- package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.dbg.json +4 -0
- package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.json +1007 -0
- package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +4 -0
- package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +744 -0
- package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.dbg.json +4 -0
- package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.json +791 -0
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +148 -62
- package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.dbg.json +4 -0
- package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.json +24 -0
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +233 -5
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +149 -21
- package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +1 -1
- package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +1 -1
- package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +82 -12
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +68 -13
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +2 -2
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +100 -102
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +152 -33
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +51 -53
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +140 -110
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +46 -48
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +38 -40
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +50 -3
- package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +102 -56
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +127 -40
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +260 -199
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +152 -33
- package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +140 -91
- package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +589 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +95 -77
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +111 -62
- package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +589 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +306 -161
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +193 -45
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +118 -39
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +75 -18
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +150 -59
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +362 -99
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +140 -40
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +549 -218
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +87 -73
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +20 -22
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +403 -353
- package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +4 -0
- package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +853 -0
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
- package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
- package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +2 -2
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +16 -5
- package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.dbg.json +4 -0
- package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.json +168 -0
- package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
- package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +68 -70
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +126 -35
- package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
- package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +38 -40
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +27 -3
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +52 -54
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +98 -83
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +40 -22
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +51 -53
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +127 -40
- package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +102 -310
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +33 -83
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +38 -122
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +38 -40
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +120 -175
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +51 -53
- package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +4 -0
- package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +456 -0
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +241 -302
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +67 -45
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +91 -65
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +16 -22
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +157 -144
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +152 -33
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +244 -187
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +55 -65
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +61 -10
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +142 -20
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +105 -55
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +27 -3
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +144 -131
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +1 -1
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.json +27 -3
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +198 -181
- package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.dbg.json +4 -0
- package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.json +293 -0
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +51 -45
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +85 -78
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +31 -33
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/product/Product.sol/Product.json +157 -144
- package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +1 -1
- package/artifacts/contracts/product/RiskService.sol/RiskService.json +76 -77
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +25 -19
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +2 -2
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +26 -2
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +31 -7
- package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +4 -0
- package/artifacts/contracts/registry/IRelease.sol/IRelease.json +24 -0
- package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
- package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
- package/artifacts/contracts/registry/Registry.sol/Registry.json +64 -40
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +250 -221
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +51 -44
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +11 -13
- package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +4 -0
- package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +1849 -0
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +2 -2
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +316 -50
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +6 -6
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +4 -4
- package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
- package/artifacts/contracts/shared/Component.sol/Component.json +51 -39
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +200 -472
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +50 -64
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +27 -16
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +1 -1
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +435 -5
- package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +4 -0
- package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.json +24 -0
- package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +4 -0
- package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.json +30 -0
- package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.dbg.json +4 -0
- package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.json +40 -0
- package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponent.sol/IComponent.json +38 -26
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +106 -305
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +38 -40
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +120 -1
- package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
- package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
- package/artifacts/contracts/shared/IService.sol/IService.json +27 -3
- package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +1 -1
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +51 -53
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +1 -1
- package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +2 -2
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +2 -2
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +2 -2
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +118 -62
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -2
- package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
- package/artifacts/contracts/shared/Service.sol/Service.json +27 -16
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +63 -162
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +118 -29
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +32 -32
- package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
- package/artifacts/contracts/staking/IStaking.sol/IStaking.json +41 -29
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +98 -3
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +49 -33
- package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
- package/artifacts/contracts/staking/Staking.sol/Staking.json +101 -60
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +2 -2
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +31 -19
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +4 -4
- package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingService.sol/StakingService.json +137 -51
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +22 -20
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +129 -129
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +23 -23
- package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
- package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
- package/artifacts/contracts/type/Amount.sol/AmountLib.json +3 -3
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +2 -2
- package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
- package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
- package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
- package/artifacts/contracts/type/Fee.sol/FeeLib.json +3 -3
- package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
- package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
- package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +4 -0
- package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +33 -0
- package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/NftId.sol/NftIdLib.json +23 -4
- package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
- package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
- package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
- package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +2 -2
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +2 -2
- package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
- package/artifacts/contracts/type/Referral.sol/ReferralLib.json +2 -2
- package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +2 -2
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +62 -5
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +79 -15
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
- package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
- package/artifacts/contracts/type/Selector.sol/SelectorLib.json +21 -2
- package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
- package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +2 -2
- package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +2 -2
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +3 -3
- package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
- package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -21
- package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
- package/artifacts/contracts/type/Version.sol/VersionPartLib.json +47 -2
- package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +2 -2
- package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
- package/contracts/accounting/AccountingService.sol +262 -0
- package/contracts/accounting/AccountingServiceManager.sol +38 -0
- package/contracts/accounting/IAccountingService.sol +45 -0
- package/contracts/authorization/AccessAdmin.sol +177 -84
- package/contracts/authorization/AccessManagerCloneable.sol +136 -3
- package/contracts/authorization/Authorization.sol +277 -229
- package/contracts/authorization/IAccessAdmin.sol +13 -7
- package/contracts/authorization/IAuthorization.sol +15 -1
- package/contracts/distribution/BasicDistribution.sol +6 -6
- package/contracts/distribution/BasicDistributionAuthorization.sol +22 -9
- package/contracts/distribution/Distribution.sol +32 -30
- package/contracts/distribution/DistributionService.sol +32 -30
- package/contracts/distribution/DistributionServiceManager.sol +1 -1
- package/contracts/distribution/IDistributionService.sol +5 -6
- package/contracts/examples/fire/FirePool.sol +6 -2
- package/contracts/examples/fire/FirePoolAuthorization.sol +2 -1
- package/contracts/examples/fire/FireProduct.sol +8 -1
- package/contracts/examples/fire/FireProductAuthorization.sol +2 -1
- package/contracts/examples/unpermissioned/SimpleDistribution.sol +6 -7
- package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +28 -0
- package/contracts/examples/unpermissioned/SimplePool.sol +7 -9
- package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
- package/contracts/examples/unpermissioned/SimpleProduct.sol +32 -0
- package/contracts/instance/BundleSet.sol +42 -38
- package/contracts/instance/IInstance.sol +13 -9
- package/contracts/instance/IInstanceService.sol +7 -6
- package/contracts/instance/Instance.sol +33 -18
- package/contracts/instance/InstanceAdmin.sol +247 -82
- package/contracts/instance/InstanceAuthorizationV3.sol +50 -31
- package/contracts/instance/InstanceReader.sol +162 -32
- package/contracts/instance/InstanceService.sol +62 -72
- package/contracts/instance/InstanceServiceManager.sol +1 -1
- package/contracts/instance/InstanceStore.sol +13 -2
- package/contracts/instance/RiskSet.sol +118 -0
- package/contracts/instance/base/ObjectCounter.sol +1 -2
- package/contracts/instance/base/ObjectLifecycle.sol +4 -2
- package/contracts/instance/base/ObjectSet.sol +31 -33
- package/contracts/instance/base/ObjectSetHelperLib.sol +30 -0
- package/contracts/instance/module/IComponents.sol +3 -2
- package/contracts/instance/module/IRisk.sol +3 -0
- package/contracts/oracle/BasicOracleAuthorization.sol +3 -12
- package/contracts/oracle/Oracle.sol +1 -1
- package/contracts/oracle/OracleService.sol +92 -74
- package/contracts/oracle/OracleServiceManager.sol +1 -1
- package/contracts/pool/BasicPoolAuthorization.sol +21 -13
- package/contracts/pool/BundleService.sol +35 -125
- package/contracts/pool/BundleServiceManager.sol +1 -1
- package/contracts/pool/IBundleService.sol +13 -38
- package/contracts/pool/IPoolService.sol +49 -56
- package/contracts/pool/Pool.sol +9 -9
- package/contracts/pool/PoolLib.sol +216 -0
- package/contracts/pool/PoolService.sol +323 -186
- package/contracts/pool/PoolServiceManager.sol +1 -1
- package/contracts/product/ApplicationService.sol +15 -15
- package/contracts/product/ApplicationServiceManager.sol +1 -1
- package/contracts/product/BasicProduct.sol +2 -0
- package/contracts/product/BasicProductAuthorization.sol +24 -10
- package/contracts/product/ClaimService.sol +157 -139
- package/contracts/product/ClaimServiceManager.sol +1 -1
- package/contracts/product/IApplicationService.sol +5 -2
- package/contracts/product/IClaimService.sol +14 -2
- package/contracts/product/IPolicyService.sol +23 -10
- package/contracts/product/IProductComponent.sol +4 -1
- package/contracts/product/PolicyService.sol +269 -257
- package/contracts/product/PolicyServiceLib.sol +65 -0
- package/contracts/product/PolicyServiceManager.sol +1 -1
- package/contracts/product/PricingService.sol +23 -19
- package/contracts/product/PricingServiceManager.sol +3 -3
- package/contracts/product/Product.sol +53 -7
- package/contracts/product/RiskService.sol +74 -25
- package/contracts/product/RiskServiceManager.sol +1 -1
- package/contracts/registry/ChainNft.sol +4 -2
- package/contracts/registry/IRegistry.sol +8 -15
- package/contracts/registry/IRelease.sol +26 -0
- package/contracts/registry/Registry.sol +7 -2
- package/contracts/registry/RegistryAdmin.sol +129 -237
- package/contracts/registry/RegistryService.sol +3 -3
- package/contracts/registry/RegistryServiceManager.sol +1 -1
- package/contracts/registry/ReleaseAdmin.sol +245 -0
- package/contracts/registry/ReleaseLifecycle.sol +2 -0
- package/contracts/registry/ReleaseRegistry.sol +127 -101
- package/contracts/registry/ServiceAuthorizationV3.sol +84 -40
- package/contracts/registry/TokenRegistry.sol +6 -8
- package/contracts/shared/Component.sol +40 -42
- package/contracts/shared/ComponentService.sol +199 -286
- package/contracts/shared/ComponentServiceManager.sol +1 -1
- package/contracts/shared/ComponentVerifyingService.sol +1 -1
- package/contracts/shared/ContractLib.sol +208 -9
- package/contracts/shared/IComponent.sol +3 -9
- package/contracts/shared/IComponentService.sol +9 -27
- package/contracts/shared/IInstanceLinkedComponent.sol +0 -11
- package/contracts/shared/IRegisterable.sol +15 -4
- package/contracts/shared/IService.sol +3 -5
- package/contracts/shared/InstanceLinkedComponent.sol +3 -11
- package/contracts/shared/NftOwnable.sol +4 -4
- package/contracts/shared/PolicyHolder.sol +1 -1
- package/contracts/shared/Registerable.sol +45 -19
- package/contracts/shared/RegistryLinked.sol +1 -1
- package/contracts/shared/Service.sol +8 -27
- package/contracts/shared/TokenHandler.sol +40 -96
- package/contracts/staking/IStaking.sol +1 -9
- package/contracts/staking/IStakingService.sol +11 -1
- package/contracts/staking/StakeManagerLib.sol +63 -7
- package/contracts/staking/Staking.sol +45 -20
- package/contracts/staking/StakingReader.sol +1 -1
- package/contracts/staking/StakingService.sol +53 -57
- package/contracts/staking/StakingServiceManager.sol +5 -4
- package/contracts/type/Key32.sol +2 -2
- package/contracts/type/Key32Set.sol +62 -0
- package/contracts/type/NftId.sol +6 -0
- package/contracts/type/ObjectType.sol +48 -21
- package/contracts/type/RiskId.sol +23 -6
- package/contracts/type/RoleId.sol +24 -4
- package/contracts/type/Selector.sol +5 -0
- package/contracts/type/Timestamp.sol +0 -5
- package/contracts/type/UFixed.sol +9 -119
- package/contracts/type/Version.sol +15 -5
- package/contracts/upgradeability/ProxyManager.sol +1 -1
- package/package.json +1 -1
- package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.dbg.json +0 -4
- package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.json +0 -1196
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +0 -4
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +0 -129
- package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +0 -4
- package/artifacts/contracts/type/UFixed.sol/MathLib.json +0 -16
- package/contracts/authorization/ReleaseAccessManager.sol +0 -38
- package/contracts/instance/module/IAccess.sol +0 -46
| @@ -1,14 +1,16 @@ | |
| 1 1 | 
             
            // SPDX-License-Identifier: Apache-2.0
         | 
| 2 2 | 
             
            pragma solidity ^0.8.20;
         | 
| 3 3 |  | 
| 4 | 
            -
            import {Authorization} from "../authorization/Authorization.sol";
         | 
| 5 | 
            -
            import {BasicPool} from "./BasicPool.sol"; 
         | 
| 6 4 | 
             
            import {IAccess} from "../authorization/IAccess.sol";
         | 
| 7 5 | 
             
            import {IInstanceLinkedComponent} from "../shared/IInstanceLinkedComponent.sol";
         | 
| 8 6 | 
             
            import {IPoolComponent} from "./IPoolComponent.sol";
         | 
| 9 | 
            -
             | 
| 7 | 
            +
             | 
| 8 | 
            +
            import {Authorization} from "../authorization/Authorization.sol";
         | 
| 9 | 
            +
            import {BasicPool} from "./BasicPool.sol"; 
         | 
| 10 | 
            +
            import {COMPONENT, POOL} from "../type/ObjectType.sol";
         | 
| 10 11 | 
             
            import {PUBLIC_ROLE} from "../../contracts/type/RoleId.sol";
         | 
| 11 12 | 
             
            import {RoleId} from "../type/RoleId.sol";
         | 
| 13 | 
            +
            import {TokenHandler} from "../shared/TokenHandler.sol";
         | 
| 12 14 |  | 
| 13 15 |  | 
| 14 16 | 
             
            contract BasicPoolAuthorization
         | 
| @@ -16,23 +18,30 @@ contract BasicPoolAuthorization | |
| 16 18 | 
             
            {
         | 
| 17 19 |  | 
| 18 20 | 
             
                 constructor(string memory poolName)
         | 
| 19 | 
            -
                      Authorization(poolName)
         | 
| 21 | 
            +
                      Authorization(poolName, POOL())
         | 
| 20 22 | 
             
                 {}
         | 
| 21 23 |  | 
| 22 24 | 
             
                 function _setupServiceTargets()
         | 
| 23 25 | 
             
                      internal
         | 
| 24 26 | 
             
                      virtual override
         | 
| 25 27 | 
             
                 {
         | 
| 28 | 
            +
                      _addServiceTargetWithRole(COMPONENT());
         | 
| 26 29 | 
             
                      _addServiceTargetWithRole(POOL());
         | 
| 27 30 | 
             
                 }
         | 
| 28 31 |  | 
| 29 | 
            -
                 function  | 
| 30 | 
            -
                       | 
| 31 | 
            -
                       | 
| 32 | 
            -
             | 
| 33 | 
            -
                       | 
| 34 | 
            -
             | 
| 32 | 
            +
                 function _setupTokenHandlerAuthorizations() internal virtual override {
         | 
| 33 | 
            +
                      // authorize token handler functions for component service role
         | 
| 34 | 
            +
                      IAccess.FunctionInfo[] storage functions;
         | 
| 35 | 
            +
                      functions = _authorizeForTarget(getTokenHandlerName(), getServiceRole(COMPONENT()));
         | 
| 36 | 
            +
                      _authorize(functions, TokenHandler.approve.selector, "approve");
         | 
| 37 | 
            +
                      _authorize(functions, TokenHandler.setWallet.selector, "setWallet");
         | 
| 38 | 
            +
                      _authorize(functions, TokenHandler.pushFeeToken.selector, "pushFeeToken");
         | 
| 35 39 |  | 
| 40 | 
            +
                      // authorize token handler functions for pool service role
         | 
| 41 | 
            +
                      functions = _authorizeForTarget(getTokenHandlerName(), getServiceRole(POOL()));
         | 
| 42 | 
            +
                      _authorize(functions, TokenHandler.pullToken.selector, "pullToken");
         | 
| 43 | 
            +
                      _authorize(functions, TokenHandler.pushToken.selector, "pushToken");
         | 
| 44 | 
            +
                 }
         | 
| 36 45 |  | 
| 37 46 | 
             
                 function _setupTargetAuthorizations()
         | 
| 38 47 | 
             
                      internal
         | 
| @@ -41,7 +50,7 @@ contract BasicPoolAuthorization | |
| 41 50 | 
             
                      IAccess.FunctionInfo[] storage functions;
         | 
| 42 51 |  | 
| 43 52 | 
             
                      // authorize public role (open access to any account, only allows to lock target)
         | 
| 44 | 
            -
                      functions = _authorizeForTarget( | 
| 53 | 
            +
                      functions = _authorizeForTarget(getMainTargetName(), PUBLIC_ROLE());
         | 
| 45 54 | 
             
                      _authorize(functions, BasicPool.stake.selector, "stake");
         | 
| 46 55 | 
             
                      _authorize(functions, BasicPool.unstake.selector, "unstake");
         | 
| 47 56 | 
             
                      _authorize(functions, BasicPool.extend.selector, "extend");
         | 
| @@ -57,11 +66,10 @@ contract BasicPoolAuthorization | |
| 57 66 | 
             
                      _authorize(functions, BasicPool.extend.selector, "extend");
         | 
| 58 67 |  | 
| 59 68 | 
             
                      _authorize(functions, IInstanceLinkedComponent.withdrawFees.selector, "withdrawFees");
         | 
| 60 | 
            -
             | 
| 61 69 | 
             
                      _authorize(functions, BasicPool.withdrawBundleFees.selector, "withdrawBundleFees");
         | 
| 62 70 |  | 
| 63 71 | 
             
                      // authorize pool service
         | 
| 64 | 
            -
                      functions = _authorizeForTarget( | 
| 72 | 
            +
                      functions = _authorizeForTarget(getMainTargetName(), getServiceRole(POOL()));
         | 
| 65 73 | 
             
                      _authorize(functions, IPoolComponent.verifyApplication.selector, "verifyApplication");
         | 
| 66 74 | 
             
                 }
         | 
| 67 75 | 
             
            }
         | 
| @@ -1,6 +1,7 @@ | |
| 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 7 | 
             
            import {IComponents} from "../instance/module/IComponents.sol";
         | 
| @@ -9,7 +10,6 @@ import {IRegistry} from "../registry/IRegistry.sol"; | |
| 9 10 | 
             
            import {IRegistryService} from "../registry/IRegistryService.sol";
         | 
| 10 11 | 
             
            import {IInstance} from "../instance/IInstance.sol";
         | 
| 11 12 | 
             
            import {InstanceStore} from "../instance/InstanceStore.sol";
         | 
| 12 | 
            -
            import {IPolicy} from "../instance/module/IPolicy.sol";
         | 
| 13 13 |  | 
| 14 14 | 
             
            import {Amount, AmountLib} from "../type/Amount.sol";
         | 
| 15 15 | 
             
            import {BundleSet} from "../instance/BundleSet.sol";
         | 
| @@ -17,7 +17,7 @@ import {ComponentVerifyingService} from "../shared/ComponentVerifyingService.sol | |
| 17 17 | 
             
            import {Fee} from "../type/Fee.sol";
         | 
| 18 18 | 
             
            import {InstanceReader} from "../instance/InstanceReader.sol";
         | 
| 19 19 | 
             
            import {NftId, NftIdLib} from "../type/NftId.sol";
         | 
| 20 | 
            -
            import {ObjectType, COMPONENT, POOL, BUNDLE, POLICY, REGISTRY} from "../type/ObjectType.sol";
         | 
| 20 | 
            +
            import {ObjectType, ACCOUNTING, COMPONENT, POOL, BUNDLE, POLICY, REGISTRY} from "../type/ObjectType.sol";
         | 
| 21 21 | 
             
            import {StateId, ACTIVE, PAUSED, CLOSED, KEEP_STATE} from "../type/StateId.sol";
         | 
| 22 22 | 
             
            import {Seconds} from "../type/Seconds.sol";
         | 
| 23 23 | 
             
            import {Timestamp, TimestampLib, zeroTimestamp} from "../type/Timestamp.sol";
         | 
| @@ -33,6 +33,7 @@ contract BundleService is | |
| 33 33 |  | 
| 34 34 | 
             
                address private _registryAddress;
         | 
| 35 35 | 
             
                IRegistryService private _registryService;
         | 
| 36 | 
            +
                IAccountingService private _accountingService;
         | 
| 36 37 | 
             
                IComponentService private _componentService;
         | 
| 37 38 |  | 
| 38 39 | 
             
                function _initialize(
         | 
| @@ -44,13 +45,14 @@ contract BundleService is | |
| 44 45 | 
             
                    initializer()
         | 
| 45 46 | 
             
                {
         | 
| 46 47 | 
             
                    (
         | 
| 47 | 
            -
                        address  | 
| 48 | 
            -
                        address  | 
| 48 | 
            +
                        address authority,
         | 
| 49 | 
            +
                        address registry
         | 
| 49 50 | 
             
                    ) = abi.decode(data, (address, address));
         | 
| 50 51 |  | 
| 51 | 
            -
                     | 
| 52 | 
            +
                    __Service_init(authority, registry, owner);
         | 
| 52 53 |  | 
| 53 54 | 
             
                    _registryService = IRegistryService(_getServiceAddress(REGISTRY()));
         | 
| 55 | 
            +
                    _accountingService = IAccountingService(_getServiceAddress(ACCOUNTING()));
         | 
| 54 56 | 
             
                    _componentService = IComponentService(_getServiceAddress(COMPONENT()));
         | 
| 55 57 |  | 
| 56 58 | 
             
                    _registerInterface(type(IBundleService).interfaceId);
         | 
| @@ -142,6 +144,7 @@ contract BundleService is | |
| 142 144 | 
             
                    virtual
         | 
| 143 145 | 
             
                    restricted()
         | 
| 144 146 | 
             
                {
         | 
| 147 | 
            +
                    // checks
         | 
| 145 148 | 
             
                    _checkNftType(policyNftId, POLICY());
         | 
| 146 149 | 
             
                    _checkNftType(bundleNftId, BUNDLE());
         | 
| 147 150 |  | 
| @@ -173,11 +176,9 @@ contract BundleService is | |
| 173 176 | 
             
                        }
         | 
| 174 177 | 
             
                    }
         | 
| 175 178 |  | 
| 179 | 
            +
                    // effects
         | 
| 176 180 | 
             
                    // updated locked amount
         | 
| 177 181 | 
             
                    instanceStore.increaseLocked(bundleNftId, collateralAmount);
         | 
| 178 | 
            -
                    
         | 
| 179 | 
            -
                    // link policy to bundle in bundle manger
         | 
| 180 | 
            -
                    _linkPolicy(instance, policyNftId);
         | 
| 181 182 | 
             
                }
         | 
| 182 183 |  | 
| 183 184 |  | 
| @@ -186,6 +187,7 @@ contract BundleService is | |
| 186 187 | 
             
                    virtual
         | 
| 187 188 | 
             
                    restricted()
         | 
| 188 189 | 
             
                {
         | 
| 190 | 
            +
                    // checks
         | 
| 189 191 | 
             
                    _checkNftType(bundleNftId, BUNDLE());
         | 
| 190 192 |  | 
| 191 193 | 
             
                    (,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
         | 
| @@ -193,6 +195,7 @@ contract BundleService is | |
| 193 195 | 
             
                    // udpate bundle state
         | 
| 194 196 | 
             
                    instance.getInstanceStore().updateBundleState(bundleNftId, PAUSED());
         | 
| 195 197 |  | 
| 198 | 
            +
                    // effects
         | 
| 196 199 | 
             
                    // update set of active bundles
         | 
| 197 200 | 
             
                    BundleSet bundleManager = instance.getBundleSet();
         | 
| 198 201 | 
             
                    bundleManager.lock(bundleNftId);
         | 
| @@ -206,10 +209,12 @@ contract BundleService is | |
| 206 209 | 
             
                    virtual
         | 
| 207 210 | 
             
                    restricted()
         | 
| 208 211 | 
             
                {
         | 
| 212 | 
            +
                    // checks
         | 
| 209 213 | 
             
                    _checkNftType(bundleNftId, BUNDLE());
         | 
| 210 214 |  | 
| 211 215 | 
             
                    (,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
         | 
| 212 216 |  | 
| 217 | 
            +
                    // effects
         | 
| 213 218 | 
             
                    // udpate bundle state
         | 
| 214 219 | 
             
                    instance.getInstanceStore().updateBundleState(bundleNftId, ACTIVE());
         | 
| 215 220 |  | 
| @@ -230,6 +235,7 @@ contract BundleService is | |
| 230 235 | 
             
                    restricted()
         | 
| 231 236 | 
             
                    returns (Amount unstakedAmount, Amount feeAmount)
         | 
| 232 237 | 
             
                {
         | 
| 238 | 
            +
                    // checks
         | 
| 233 239 | 
             
                    _checkNftType(bundleNftId, BUNDLE());
         | 
| 234 240 |  | 
| 235 241 | 
             
                    InstanceReader instanceReader = instance.getInstanceReader();
         | 
| @@ -241,6 +247,7 @@ contract BundleService is | |
| 241 247 | 
             
                        revert ErrorBundleServiceBundleWithOpenPolicies(bundleNftId, openPolicies);
         | 
| 242 248 | 
             
                    }
         | 
| 243 249 |  | 
| 250 | 
            +
                    // effects
         | 
| 244 251 | 
             
                    {
         | 
| 245 252 | 
             
                        // update bundle state
         | 
| 246 253 | 
             
                        InstanceStore instanceStore = instance.getInstanceStore();
         | 
| @@ -251,13 +258,14 @@ contract BundleService is | |
| 251 258 | 
             
                        Amount balanceAmountWithFees = instanceReader.getBalanceAmount(bundleNftId);
         | 
| 252 259 | 
             
                        feeAmount = instanceReader.getFeeAmount(bundleNftId);
         | 
| 253 260 | 
             
                        unstakedAmount = balanceAmountWithFees - feeAmount;
         | 
| 254 | 
            -
                         | 
| 261 | 
            +
                        _accountingService.decreaseBundleBalance(instanceStore, bundleNftId, unstakedAmount, feeAmount);
         | 
| 255 262 | 
             
                    }
         | 
| 256 263 | 
             
                }
         | 
| 257 264 |  | 
| 258 265 | 
             
                /// @inheritdoc IBundleService
         | 
| 259 266 | 
             
                function stake(
         | 
| 260 | 
            -
                     | 
| 267 | 
            +
                    InstanceReader instanceReader,
         | 
| 268 | 
            +
                    InstanceStore instanceStore,
         | 
| 261 269 | 
             
                    NftId bundleNftId, 
         | 
| 262 270 | 
             
                    Amount amount
         | 
| 263 271 | 
             
                ) 
         | 
| @@ -265,10 +273,11 @@ contract BundleService is | |
| 265 273 | 
             
                    virtual
         | 
| 266 274 | 
             
                    restricted()
         | 
| 267 275 | 
             
                {
         | 
| 276 | 
            +
                    // checks
         | 
| 268 277 | 
             
                    _checkNftType(bundleNftId, BUNDLE());
         | 
| 269 278 |  | 
| 270 | 
            -
                    IBundle.BundleInfo memory bundleInfo =  | 
| 271 | 
            -
                    StateId bundleState =  | 
| 279 | 
            +
                    IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
         | 
| 280 | 
            +
                    StateId bundleState = instanceReader.getBundleState(bundleNftId);
         | 
| 272 281 |  | 
| 273 282 | 
             
                    if( (bundleState != ACTIVE() && bundleState != PAUSED()) // locked bundles can be staked
         | 
| 274 283 | 
             
                        || bundleInfo.expiredAt < TimestampLib.blockTimestamp() 
         | 
| @@ -276,8 +285,9 @@ contract BundleService is | |
| 276 285 | 
             
                        revert ErrorBundleServiceBundleNotOpen(bundleNftId, bundleState, bundleInfo.expiredAt);
         | 
| 277 286 | 
             
                    }
         | 
| 278 287 |  | 
| 279 | 
            -
                     | 
| 280 | 
            -
             | 
| 288 | 
            +
                    // effects
         | 
| 289 | 
            +
                    _accountingService.increaseBundleBalance(
         | 
| 290 | 
            +
                        instanceStore, 
         | 
| 281 291 | 
             
                        bundleNftId, 
         | 
| 282 292 | 
             
                        amount, 
         | 
| 283 293 | 
             
                        AmountLib.zero());
         | 
| @@ -285,7 +295,7 @@ contract BundleService is | |
| 285 295 |  | 
| 286 296 | 
             
                /// @inheritdoc IBundleService
         | 
| 287 297 | 
             
                function unstake(
         | 
| 288 | 
            -
                     | 
| 298 | 
            +
                    InstanceStore instanceStore,
         | 
| 289 299 | 
             
                    NftId bundleNftId, 
         | 
| 290 300 | 
             
                    Amount amount
         | 
| 291 301 | 
             
                ) 
         | 
| @@ -294,9 +304,9 @@ contract BundleService is | |
| 294 304 | 
             
                    restricted()
         | 
| 295 305 | 
             
                    returns (Amount unstakedAmount)
         | 
| 296 306 | 
             
                {
         | 
| 307 | 
            +
                    // checks
         | 
| 297 308 | 
             
                    _checkNftType(bundleNftId, BUNDLE());
         | 
| 298 309 |  | 
| 299 | 
            -
                    InstanceStore instanceStore = instance.getInstanceStore();
         | 
| 300 310 | 
             
                    (
         | 
| 301 311 | 
             
                        Amount balanceAmount,
         | 
| 302 312 | 
             
                        Amount lockedAmount,
         | 
| @@ -316,7 +326,8 @@ contract BundleService is | |
| 316 326 | 
             
                        revert ErrorBundleServiceUnstakeAmountExceedsLimit(amount, availableAmount);
         | 
| 317 327 | 
             
                    }
         | 
| 318 328 |  | 
| 319 | 
            -
                     | 
| 329 | 
            +
                    // effects
         | 
| 330 | 
            +
                    _accountingService.decreaseBundleBalance(
         | 
| 320 331 | 
             
                        instanceStore, 
         | 
| 321 332 | 
             
                        bundleNftId, 
         | 
| 322 333 | 
             
                        unstakedAmount, 
         | 
| @@ -330,6 +341,7 @@ contract BundleService is | |
| 330 341 | 
             
                    restricted()
         | 
| 331 342 | 
             
                    returns (Timestamp extendedExpiredAt) 
         | 
| 332 343 | 
             
                {
         | 
| 344 | 
            +
                    // checks
         | 
| 333 345 | 
             
                    _checkNftType(bundleNftId, BUNDLE());
         | 
| 334 346 |  | 
| 335 347 | 
             
                    (NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
         | 
| @@ -350,17 +362,18 @@ contract BundleService is | |
| 350 362 | 
             
                        revert ErrorBundleServiceExtensionLifetimeIsZero();
         | 
| 351 363 | 
             
                    }
         | 
| 352 364 |  | 
| 365 | 
            +
                    // effects
         | 
| 353 366 | 
             
                    bundleInfo.expiredAt = bundleInfo.expiredAt.addSeconds(lifetimeExtension);
         | 
| 354 | 
            -
                     | 
| 367 | 
            +
                    extendedExpiredAt = bundleInfo.expiredAt;
         | 
| 355 368 |  | 
| 356 | 
            -
                     | 
| 369 | 
            +
                    instance.getInstanceStore().updateBundle(bundleNftId, bundleInfo, KEEP_STATE());
         | 
| 357 370 |  | 
| 358 | 
            -
                     | 
| 371 | 
            +
                    emit LogBundleServiceBundleExtended(bundleNftId, lifetimeExtension, extendedExpiredAt);
         | 
| 359 372 | 
             
                }
         | 
| 360 373 |  | 
| 361 374 |  | 
| 362 375 | 
             
                function releaseCollateral(
         | 
| 363 | 
            -
                     | 
| 376 | 
            +
                    InstanceStore instanceStore,
         | 
| 364 377 | 
             
                    NftId policyNftId, 
         | 
| 365 378 | 
             
                    NftId bundleNftId, 
         | 
| 366 379 | 
             
                    Amount collateralAmount
         | 
| @@ -372,112 +385,9 @@ contract BundleService is | |
| 372 385 | 
             
                    _checkNftType(policyNftId, POLICY());
         | 
| 373 386 | 
             
                    _checkNftType(bundleNftId, BUNDLE());
         | 
| 374 387 |  | 
| 375 | 
            -
                     | 
| 376 | 
            -
                }
         | 
| 377 | 
            -
             | 
| 378 | 
            -
                /// @dev unlinks policy from bundle
         | 
| 379 | 
            -
                function unlinkPolicy(
         | 
| 380 | 
            -
                    IInstance instance, 
         | 
| 381 | 
            -
                    NftId policyNftId
         | 
| 382 | 
            -
                ) 
         | 
| 383 | 
            -
                    external
         | 
| 384 | 
            -
                    virtual
         | 
| 385 | 
            -
                    restricted
         | 
| 386 | 
            -
                {
         | 
| 387 | 
            -
                    _checkNftType(policyNftId, POLICY());
         | 
| 388 | 
            -
             | 
| 389 | 
            -
                    // ensure policy is closeable
         | 
| 390 | 
            -
                    if (!policyIsCloseable(instance, policyNftId)) {
         | 
| 391 | 
            -
                        revert ErrorBundleServicePolicyNotCloseable(policyNftId);
         | 
| 392 | 
            -
                    }
         | 
| 393 | 
            -
             | 
| 394 | 
            -
                    instance.getBundleSet().unlinkPolicy(policyNftId);
         | 
| 395 | 
            -
                }
         | 
| 396 | 
            -
             | 
| 397 | 
            -
                /// @inheritdoc IBundleService
         | 
| 398 | 
            -
                function withdrawBundleFees(NftId bundleNftId, Amount amount) 
         | 
| 399 | 
            -
                    public 
         | 
| 400 | 
            -
                    virtual
         | 
| 401 | 
            -
                    restricted()
         | 
| 402 | 
            -
                    returns (Amount withdrawnAmount) 
         | 
| 403 | 
            -
                {
         | 
| 404 | 
            -
                    _checkNftType(bundleNftId, BUNDLE());
         | 
| 405 | 
            -
             | 
| 406 | 
            -
                    (NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
         | 
| 407 | 
            -
                    InstanceReader reader = instance.getInstanceReader();
         | 
| 408 | 
            -
                    
         | 
| 409 | 
            -
                    IComponents.ComponentInfo memory poolInfo = reader.getComponentInfo(poolNftId);
         | 
| 410 | 
            -
                    address poolWallet = poolInfo.tokenHandler.getWallet();
         | 
| 411 | 
            -
                    
         | 
| 412 | 
            -
                    // IBundle.BundleInfo memory bundleInfo = reader.getBundleInfo(bundleNftId);
         | 
| 413 | 
            -
                    
         | 
| 414 | 
            -
                    // determine withdrawn amount
         | 
| 415 | 
            -
                    withdrawnAmount = amount;
         | 
| 416 | 
            -
                    if (withdrawnAmount.gte(AmountLib.max())) {
         | 
| 417 | 
            -
                        withdrawnAmount = reader.getFeeAmount(bundleNftId);
         | 
| 418 | 
            -
                    } else {
         | 
| 419 | 
            -
                        if (withdrawnAmount.gt(reader.getFeeAmount(bundleNftId))) {
         | 
| 420 | 
            -
                            revert ErrorBundleServiceFeesWithdrawAmountExceedsLimit(withdrawnAmount, reader.getFeeAmount(bundleNftId));
         | 
| 421 | 
            -
                        }
         | 
| 422 | 
            -
                    }
         | 
| 423 | 
            -
             | 
| 424 | 
            -
                    // decrease fee counters by withdrawnAmount
         | 
| 425 | 
            -
                    {
         | 
| 426 | 
            -
                        InstanceStore store = instance.getInstanceStore();
         | 
| 427 | 
            -
                        // decrease fee amount of the bundle
         | 
| 428 | 
            -
                        _componentService.decreaseBundleBalance(store, bundleNftId, AmountLib.zero(), withdrawnAmount);
         | 
| 429 | 
            -
                        // decrease pool balance 
         | 
| 430 | 
            -
                        _componentService.decreasePoolBalance(store, poolNftId, withdrawnAmount, AmountLib.zero());
         | 
| 431 | 
            -
                    }
         | 
| 432 | 
            -
             | 
| 433 | 
            -
                    // transfer amount to bundle owner
         | 
| 434 | 
            -
                    {
         | 
| 435 | 
            -
                        address owner = getRegistry().ownerOf(bundleNftId);
         | 
| 436 | 
            -
                        emit LogBundleServiceFeesWithdrawn(bundleNftId, owner, address(poolInfo.token), withdrawnAmount);
         | 
| 437 | 
            -
                        poolInfo.tokenHandler.distributeTokens(poolWallet, owner, withdrawnAmount);
         | 
| 438 | 
            -
                    }
         | 
| 388 | 
            +
                    instanceStore.decreaseLocked(bundleNftId, collateralAmount);
         | 
| 439 389 | 
             
                }
         | 
| 440 390 |  | 
| 441 | 
            -
                /// @inheritdoc IBundleService
         | 
| 442 | 
            -
                function policyIsCloseable(IInstance instance, NftId policyNftId)
         | 
| 443 | 
            -
                    public
         | 
| 444 | 
            -
                    view
         | 
| 445 | 
            -
                    returns (bool isCloseable)
         | 
| 446 | 
            -
                {
         | 
| 447 | 
            -
                    _checkNftType(policyNftId, POLICY());
         | 
| 448 | 
            -
             | 
| 449 | 
            -
                    IPolicy.PolicyInfo memory info = instance.getInstanceReader().getPolicyInfo(policyNftId);
         | 
| 450 | 
            -
                    
         | 
| 451 | 
            -
                    if (info.productNftId.eqz()) { return false; } // not closeable: policy does not exist (or does not belong to this instance)
         | 
| 452 | 
            -
                    if (info.activatedAt.eqz()) { return false; } // not closeable: not yet activated
         | 
| 453 | 
            -
                    if (info.closedAt.gtz()) { return false; } // not closeable: already closed
         | 
| 454 | 
            -
                    if (info.openClaimsCount > 0) { return false; } // not closeable: has open claims
         | 
| 455 | 
            -
             | 
| 456 | 
            -
                    // closeable: if sum of claims matches sum insured a policy may be closed prior to the expiry date
         | 
| 457 | 
            -
                    if (info.claimAmount == info.sumInsuredAmount) { return true; }
         | 
| 458 | 
            -
             | 
| 459 | 
            -
                    // not closeable: not yet expired
         | 
| 460 | 
            -
                    if (TimestampLib.blockTimestamp() < info.expiredAt) { return false; }
         | 
| 461 | 
            -
             | 
| 462 | 
            -
                    // all conditionsl to close the policy are met
         | 
| 463 | 
            -
                    return true; 
         | 
| 464 | 
            -
                }
         | 
| 465 | 
            -
             | 
| 466 | 
            -
                /// @dev links policy to bundle
         | 
| 467 | 
            -
                function _linkPolicy(IInstance instance, NftId policyNftId) 
         | 
| 468 | 
            -
                    internal
         | 
| 469 | 
            -
                {
         | 
| 470 | 
            -
                    InstanceReader instanceReader = instance.getInstanceReader();
         | 
| 471 | 
            -
                    IPolicy.PolicyInfo memory policyInfo = instanceReader.getPolicyInfo(policyNftId);
         | 
| 472 | 
            -
             | 
| 473 | 
            -
                    // ensure policy has not yet been activated in a previous tx already
         | 
| 474 | 
            -
                    if (policyInfo.activatedAt.gtz() && policyInfo.activatedAt < TimestampLib.blockTimestamp()) {
         | 
| 475 | 
            -
                        revert BundleSet.ErrorBundleSetPolicyAlreadyActivated(policyNftId);
         | 
| 476 | 
            -
                    }
         | 
| 477 | 
            -
                    
         | 
| 478 | 
            -
                    BundleSet bundleManager = instance.getBundleSet();
         | 
| 479 | 
            -
                    bundleManager.linkPolicy(policyNftId);
         | 
| 480 | 
            -
                }
         | 
| 481 391 |  | 
| 482 392 | 
             
                function _getDomain() internal pure override returns(ObjectType) {
         | 
| 483 393 | 
             
                    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,12 +1,14 @@ | |
| 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";
         | 
| @@ -26,14 +28,11 @@ interface IBundleService is IService { | |
| 26 28 | 
             
                error ErrorBundleServiceBundlePoolMismatch(NftId bundleNftId, NftId expectedPool, NftId actualPool);
         | 
| 27 29 |  | 
| 28 30 | 
             
                error ErrorBundleServicePolicyNotCloseable(NftId policyNftId);
         | 
| 29 | 
            -
             | 
| 30 | 
            -
                error ErrorBundleServiceFeesWithdrawAmountExceedsLimit(Amount amount, Amount limit);
         | 
| 31 31 |  | 
| 32 32 | 
             
                error ErrorBundleServiceUnstakeAmountExceedsLimit(Amount amount, Amount limit);
         | 
| 33 33 |  | 
| 34 34 | 
             
                error ErrorBundleServiceExtensionLifetimeIsZero();
         | 
| 35 35 |  | 
| 36 | 
            -
                event LogBundleServiceFeesWithdrawn(NftId bundleNftId, address recipient, address tokenAddress, Amount amount);
         | 
| 37 36 | 
             
                event LogBundleServiceBundleExtended(NftId bundleNftId, Seconds lifetimeExtension, Timestamp extendedExpiredAt);
         | 
| 38 37 |  | 
| 39 38 | 
             
                /// @dev Create a new bundle for the specified attributes.
         | 
| @@ -49,15 +48,16 @@ interface IBundleService is IService { | |
| 49 48 |  | 
| 50 49 | 
             
                /// @dev increase bundle stakes by the specified amount. bundle must not be expired or closed
         | 
| 51 50 | 
             
                /// may only be called by the pool service
         | 
| 52 | 
            -
                function stake( | 
| 51 | 
            +
                function stake(
         | 
| 52 | 
            +
                    InstanceReader instanceReader,
         | 
| 53 | 
            +
                    InstanceStore instanceStore,
         | 
| 54 | 
            +
                    NftId bundleNftId, 
         | 
| 55 | 
            +
                    Amount amount
         | 
| 56 | 
            +
                ) external;
         | 
| 53 57 |  | 
| 54 58 | 
             
                /// @dev decrease bundle stakes by the specified amount
         | 
| 55 59 | 
             
                /// may only be called by the pool service
         | 
| 56 | 
            -
                 | 
| 57 | 
            -
                /// @param bundleNftId the bundle nft id
         | 
| 58 | 
            -
                /// @param amount the amount to unstake (set to AmountLib.max() to unstake all available stakes)
         | 
| 59 | 
            -
                /// @return unstakedAmount the effective unstaked amount
         | 
| 60 | 
            -
                function unstake(IInstance instance, NftId bundleNftId, Amount amount) external returns (Amount unstakedAmount);
         | 
| 60 | 
            +
                function unstake(InstanceStore instanceStore, NftId bundleNftId, Amount amount) external returns (Amount unstakedAmount);
         | 
| 61 61 |  | 
| 62 62 | 
             
                /// @dev extend the lifetime of the bundle by the specified time in seconds
         | 
| 63 63 | 
             
                function extend(NftId bundleNftId, Seconds lifetimeExtension) external returns (Timestamp extendedExpiredAt);
         | 
| @@ -107,34 +107,9 @@ interface IBundleService is IService { | |
| 107 107 | 
             
                /// @dev releases the specified collateral in the bundle
         | 
| 108 108 | 
             
                /// may only be called by pool service
         | 
| 109 109 | 
             
                function releaseCollateral(
         | 
| 110 | 
            -
                     | 
| 110 | 
            +
                    InstanceStore instanceStore, 
         | 
| 111 111 | 
             
                    NftId policyNftId, 
         | 
| 112 112 | 
             
                    NftId bundleNftId, 
         | 
| 113 113 | 
             
                    Amount collateralAmount
         | 
| 114 114 | 
             
                ) external;
         | 
| 115 | 
            -
             | 
| 116 | 
            -
                /// @dev unlink policy from bundle
         | 
| 117 | 
            -
                /// policy may only be unlinked if policy is closeable
         | 
| 118 | 
            -
                /// may only be called by pool service
         | 
| 119 | 
            -
                function unlinkPolicy(
         | 
| 120 | 
            -
                    IInstance instance, 
         | 
| 121 | 
            -
                    NftId policyNftId
         | 
| 122 | 
            -
                ) external;
         | 
| 123 | 
            -
             | 
| 124 | 
            -
                // FIXME: move to pool service
         | 
| 125 | 
            -
                /// @dev Withdraw bundle feeds for the given bundle
         | 
| 126 | 
            -
                /// @param bundleNftId the bundle Nft Id
         | 
| 127 | 
            -
                /// @param amount the amount to withdraw. If set to AMOUNT_MAX, the full commission available is withdrawn
         | 
| 128 | 
            -
                /// @return withdrawnAmount the effective withdrawn amount
         | 
| 129 | 
            -
                function withdrawBundleFees(NftId bundleNftId, Amount amount) external returns (Amount withdrawnAmount);
         | 
| 130 | 
            -
             | 
| 131 | 
            -
                /// @dev returns true iff policy may be closed
         | 
| 132 | 
            -
                /// a policy can be closed all conditions below are met
         | 
| 133 | 
            -
                /// - policy exists
         | 
| 134 | 
            -
                /// - has been activated
         | 
| 135 | 
            -
                /// - is not yet closed
         | 
| 136 | 
            -
                /// - has no open claims
         | 
| 137 | 
            -
                /// - claim amount matches sum insured amount or is expired
         | 
| 138 | 
            -
                function policyIsCloseable(IInstance instance, NftId policyNftId) external view returns (bool isCloseable);
         | 
| 139 | 
            -
             | 
| 140 115 | 
             
            }
         | 
| @@ -1,19 +1,16 @@ | |
| 1 1 | 
             
            // SPDX-License-Identifier: Apache-2.0
         | 
| 2 2 | 
             
            pragma solidity ^0.8.20;
         | 
| 3 3 |  | 
| 4 | 
            -
            import {Amount} from "../type/Amount.sol";
         | 
| 5 | 
            -
            import {ClaimId} from "../type/ClaimId.sol";
         | 
| 6 | 
            -
            import {Fee} from "../type/Fee.sol";
         | 
| 7 | 
            -
            import {IBundle} from "../instance/module/IBundle.sol";
         | 
| 8 4 | 
             
            import {IInstance} from "../instance/IInstance.sol";
         | 
| 9 | 
            -
            import {InstanceReader} from "../instance/InstanceReader.sol";
         | 
| 10 5 | 
             
            import {IPolicy} from "../instance/module/IPolicy.sol";
         | 
| 11 6 | 
             
            import {IService} from "../shared/IService.sol";
         | 
| 7 | 
            +
             | 
| 8 | 
            +
            import {Amount} from "../type/Amount.sol";
         | 
| 9 | 
            +
            import {ClaimId} from "../type/ClaimId.sol";
         | 
| 10 | 
            +
            import {InstanceReader} from "../instance/InstanceReader.sol";
         | 
| 11 | 
            +
            import {InstanceStore} from "../instance/InstanceStore.sol";
         | 
| 12 12 | 
             
            import {NftId} from "../type/NftId.sol";
         | 
| 13 13 | 
             
            import {PayoutId} from "../type/PayoutId.sol";
         | 
| 14 | 
            -
            import {RoleId} from "../type/RoleId.sol";
         | 
| 15 | 
            -
            import {Seconds} from "../type/Seconds.sol";
         | 
| 16 | 
            -
            import {StateId} from "../type/StateId.sol";
         | 
| 17 14 | 
             
            import {UFixed} from "../type/UFixed.sol";
         | 
| 18 15 |  | 
| 19 16 | 
             
            interface IPoolService is IService {
         | 
| @@ -28,6 +25,8 @@ interface IPoolService is IService { | |
| 28 25 | 
             
                event LogPoolServiceBundleStaked(NftId instanceNftId, NftId poolNftId, NftId bundleNftId, Amount amount, Amount netAmount);
         | 
| 29 26 | 
             
                event LogPoolServiceBundleUnstaked(NftId instanceNftId, NftId poolNftId, NftId bundleNftId, Amount amount, Amount netAmount);
         | 
| 30 27 |  | 
| 28 | 
            +
                event LogPoolServiceFeesWithdrawn(NftId bundleNftId, address recipient, address tokenAddress, Amount amount);
         | 
| 29 | 
            +
             | 
| 31 30 | 
             
                event LogPoolServiceProcessFundedClaim(NftId policyNftId, ClaimId claimId, Amount availableAmount);
         | 
| 32 31 |  | 
| 33 32 | 
             
                error ErrorPoolServicePoolNotExternallyManaged(NftId poolNftId);
         | 
| @@ -36,6 +35,7 @@ interface IPoolService is IService { | |
| 36 35 | 
             
                error ErrorPoolServiceInvalidTransferAmount(Amount expectedAmount, Amount actualAmount);
         | 
| 37 36 | 
             
                error ErrorPoolServiceBundlePoolMismatch(NftId bundleNftId, NftId poolNftId);
         | 
| 38 37 | 
             
                error ErrorPoolServiceMaxBalanceAmountExceeded(NftId poolNftId, Amount maxBalanceAmount, Amount currentBalanceAmount, Amount transferAmount);
         | 
| 38 | 
            +
                error ErrorPoolServiceFeesWithdrawAmountExceedsLimit(Amount amount, Amount limit);
         | 
| 39 39 |  | 
| 40 40 | 
             
                /// @dev sets the max balance amount for the calling pool
         | 
| 41 41 | 
             
                function setMaxBalanceAmount(Amount maxBalanceAmount) external;
         | 
| @@ -64,7 +64,6 @@ interface IPoolService is IService { | |
| 64 64 | 
             
                /// may only be called by the policy service for unlocked pool components
         | 
| 65 65 | 
             
                function releaseCollateral(
         | 
| 66 66 | 
             
                    IInstance instance, 
         | 
| 67 | 
            -
                    address token,
         | 
| 68 67 | 
             
                    NftId policyNftId, 
         | 
| 69 68 | 
             
                    IPolicy.PolicyInfo memory policyInfo
         | 
| 70 69 | 
             
                ) external;
         | 
| @@ -74,27 +73,17 @@ interface IPoolService is IService { | |
| 74 73 | 
             
                /// every payout of a policy reduces the collateral by the payout amount
         | 
| 75 74 | 
             
                /// may only be called by the claim service for unlocked pool components
         | 
| 76 75 | 
             
                function processPayout(
         | 
| 77 | 
            -
                     | 
| 78 | 
            -
                     | 
| 76 | 
            +
                    InstanceReader instanceReader,
         | 
| 77 | 
            +
                    InstanceStore instanceStore, 
         | 
| 78 | 
            +
                    NftId productNftId,
         | 
| 79 79 | 
             
                    NftId policyNftId, 
         | 
| 80 | 
            -
                     | 
| 81 | 
            -
                     | 
| 80 | 
            +
                    NftId bundleNftId,
         | 
| 81 | 
            +
                    PayoutId payoutId,
         | 
| 82 | 
            +
                    Amount payoutAmount,
         | 
| 83 | 
            +
                    address payoutBeneficiary
         | 
| 82 84 | 
             
                ) external;
         | 
| 83 85 |  | 
| 84 86 |  | 
| 85 | 
            -
                // TODO cleanup
         | 
| 86 | 
            -
                // /// @dev create a new empty bundle with the provided parameters
         | 
| 87 | 
            -
                // /// may only be called by registered and unlocked pool components.
         | 
| 88 | 
            -
                // function createBundle(
         | 
| 89 | 
            -
                //     address owner, // initial bundle owner
         | 
| 90 | 
            -
                //     Fee memory fee, // fees deducted from premium that go to bundle owner
         | 
| 91 | 
            -
                //     Seconds lifetime, // initial duration for which new policies are covered
         | 
| 92 | 
            -
                //     bytes calldata filter // optional use case specific criteria that define if a policy may be covered by this bundle
         | 
| 93 | 
            -
                // )
         | 
| 94 | 
            -
                //     external 
         | 
| 95 | 
            -
                //     returns(NftId bundleNftId); // the nft id of the newly created bundle
         | 
| 96 | 
            -
             | 
| 97 | 
            -
             | 
| 98 87 | 
             
                /// @dev increase stakes for bundle
         | 
| 99 88 | 
             
                /// staking fees will be deducted by the pool service from the staking amount
         | 
| 100 89 | 
             
                /// may only be called by registered and unlocked pool components
         | 
| @@ -115,6 +104,10 @@ interface IPoolService is IService { | |
| 115 104 | 
             
                function closeBundle(NftId bundleNftId) external;
         | 
| 116 105 |  | 
| 117 106 |  | 
| 107 | 
            +
                /// @dev Withdraw bundle feeds for the specified bundle.
         | 
| 108 | 
            +
                function withdrawBundleFees(NftId bundleNftId, Amount amount) external returns (Amount withdrawnAmount);
         | 
| 109 | 
            +
             | 
| 110 | 
            +
             | 
| 118 111 | 
             
                /// @dev Informs product about available funds to process a confirmed claim.
         | 
| 119 112 | 
             
                /// The function triggers a callback to the product component when the product's property isProcessingFundedClaims is set.
         | 
| 120 113 | 
             
                function processFundedClaim(NftId policyNftId, ClaimId claimId, Amount availableAmount) external;
         | 
| @@ -138,35 +131,35 @@ interface IPoolService is IService { | |
| 138 131 | 
             
                function processSale(NftId bundleNftId, IPolicy.PremiumInfo memory premium) external;
         | 
| 139 132 |  | 
| 140 133 |  | 
| 141 | 
            -
                /// @dev Calulate required collateral for the provided parameters.
         | 
| 142 | 
            -
                function calculateRequiredCollateral(
         | 
| 143 | 
            -
             | 
| 144 | 
            -
             | 
| 145 | 
            -
             | 
| 146 | 
            -
                )
         | 
| 147 | 
            -
             | 
| 148 | 
            -
             | 
| 149 | 
            -
             | 
| 150 | 
            -
             | 
| 151 | 
            -
             | 
| 152 | 
            -
             | 
| 153 | 
            -
             | 
| 154 | 
            -
             | 
| 155 | 
            -
             | 
| 156 | 
            -
             | 
| 157 | 
            -
                /// @dev calulate required collateral for the provided parameters.
         | 
| 158 | 
            -
                /// Collateralization is applied to sum insured.
         | 
| 159 | 
            -
                /// Retention level defines the fraction of the collateral that is required locally.
         | 
| 160 | 
            -
                function calculateRequiredCollateral(
         | 
| 161 | 
            -
             | 
| 162 | 
            -
             | 
| 163 | 
            -
             | 
| 164 | 
            -
                )
         | 
| 165 | 
            -
             | 
| 166 | 
            -
             | 
| 167 | 
            -
             | 
| 168 | 
            -
             | 
| 169 | 
            -
             | 
| 170 | 
            -
             | 
| 134 | 
            +
                // /// @dev Calulate required collateral for the provided parameters.
         | 
| 135 | 
            +
                // function calculateRequiredCollateral(
         | 
| 136 | 
            +
                //     InstanceReader instanceReader,
         | 
| 137 | 
            +
                //     NftId productNftId, 
         | 
| 138 | 
            +
                //     Amount sumInsuredAmount
         | 
| 139 | 
            +
                // )
         | 
| 140 | 
            +
                //     external
         | 
| 141 | 
            +
                //     view 
         | 
| 142 | 
            +
                //     returns(
         | 
| 143 | 
            +
                //         NftId poolNftId,
         | 
| 144 | 
            +
                //         Amount totalCollateralAmount,
         | 
| 145 | 
            +
                //         Amount localCollateralAmount,
         | 
| 146 | 
            +
                //         bool poolIsVerifyingApplications
         | 
| 147 | 
            +
                //     );
         | 
| 148 | 
            +
             | 
| 149 | 
            +
             | 
| 150 | 
            +
                // /// @dev calulate required collateral for the provided parameters.
         | 
| 151 | 
            +
                // /// Collateralization is applied to sum insured.
         | 
| 152 | 
            +
                // /// Retention level defines the fraction of the collateral that is required locally.
         | 
| 153 | 
            +
                // function calculateRequiredCollateral(
         | 
| 154 | 
            +
                //     UFixed collateralizationLevel, 
         | 
| 155 | 
            +
                //     UFixed retentionLevel, 
         | 
| 156 | 
            +
                //     Amount sumInsuredAmount
         | 
| 157 | 
            +
                // )
         | 
| 158 | 
            +
                //     external
         | 
| 159 | 
            +
                //     pure 
         | 
| 160 | 
            +
                //     returns(
         | 
| 161 | 
            +
                //         Amount totalCollateralAmount,
         | 
| 162 | 
            +
                //         Amount localCollateralAmount
         | 
| 163 | 
            +
                //     );
         | 
| 171 164 |  | 
| 172 165 | 
             
            }
         |