@etherisc/gif-next 0.0.2-f1e0c66-773 → 0.0.2-f1f3b2c-994
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 +7 -2
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +81 -63
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +2 -2
- package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +1 -1
- package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +1 -1
- package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +48 -30
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +21 -2
- package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +2 -2
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +72 -9
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +63 -248
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +16 -16
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +21 -222
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +134 -286
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +84 -120
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +21 -37
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +49 -62
- package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.json +22 -0
- package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +1512 -0
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +410 -0
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +1999 -0
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +414 -0
- package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.json +376 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +1432 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1192 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1566 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2001 -0
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +2 -2
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +10 -99
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +145 -111
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +14 -14
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +437 -124
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +39 -146
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +61 -81
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +285 -218
- 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 +45 -4
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +2 -2
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
- package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
- package/artifacts/contracts/mock/Dip.sol/Dip.json +2 -2
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +47 -232
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +18 -18
- 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 +15 -31
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +15 -216
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +37 -144
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +60 -80
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +51 -274
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +16 -16
- package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +319 -188
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +130 -94
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +149 -23
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +44 -88
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +360 -171
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +41 -270
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +492 -333
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +98 -82
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +36 -162
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +57 -89
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +43 -242
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +16 -16
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +263 -181
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +104 -100
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +5 -0
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +147 -6
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +282 -119
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +43 -43
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +43 -57
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
- package/artifacts/contracts/product/{IProductService.sol/IProductService.json → IRiskService.sol/IRiskService.json} +2 -2
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +399 -327
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +104 -100
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +115 -267
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +80 -120
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/product/Product.sol/Product.json +43 -242
- package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
- package/artifacts/contracts/product/RiskService.sol/RiskService.json +588 -0
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +682 -0
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +59 -16
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +238 -34
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- 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 +436 -95
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +261 -143
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +23 -313
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +52 -72
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +46 -5
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +117 -215
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +70 -12
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +2 -2
- package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
- package/artifacts/contracts/shared/Component.sol/Component.json +15 -205
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +89 -212
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +96 -114
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +5 -112
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +92 -0
- package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponent.sol/IComponent.json +15 -20
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +15 -31
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +36 -0
- package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.json +36 -0
- 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/IPolicyHolder.sol/IPolicyHolder.json +15 -47
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -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/InitializableERC165.sol/InitializableERC165.dbg.json +1 -1
- package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +2 -22
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +15 -216
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +41 -0
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +41 -0
- 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 +6 -57
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +19 -141
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +8 -97
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -15
- package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
- package/artifacts/contracts/shared/Service.sol/Service.json +5 -112
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +330 -11
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +108 -0
- package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
- package/artifacts/contracts/staking/IStaking.sol/IStaking.json +42 -21
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +63 -93
- package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
- package/artifacts/contracts/staking/Staking.sol/Staking.json +100 -256
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +45 -4
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +77 -88
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +6 -11
- package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingService.sol/StakingService.json +31 -138
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +56 -76
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +168 -127
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +54 -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 +32 -8
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +2 -2
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +28 -4
- package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
- package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
- package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
- package/artifacts/contracts/type/Fee.sol/FeeLib.json +2 -2
- package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
- package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
- package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/NftId.sol/NftIdLib.json +2 -2
- 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 +19 -19
- 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 +60 -4
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +2 -2
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +50 -2
- package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
- package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
- package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/StateId.sol/StateIdLib.json +15 -2
- 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 +23 -4
- package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +1 -1
- package/artifacts/contracts/type/UFixed.sol/MathLib.json +2 -2
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +15 -2
- package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
- package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
- 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 +39 -70
- package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
- package/contracts/authorization/AccessAdmin.sol +31 -24
- package/contracts/authorization/Authorization.sol +5 -2
- package/contracts/authorization/IAccessAdmin.sol +3 -2
- package/contracts/authorization/IServiceAuthorization.sol +4 -2
- package/contracts/authorization/ServiceAuthorization.sol +27 -11
- package/contracts/distribution/Distribution.sol +1 -1
- package/contracts/distribution/DistributionService.sol +32 -33
- package/contracts/distribution/DistributionServiceManager.sol +6 -6
- package/contracts/distribution/IDistributionService.sol +9 -5
- package/contracts/examples/fire/DamageLevel.sol +59 -0
- package/contracts/examples/fire/FirePool.sol +75 -0
- package/contracts/examples/fire/FirePoolAuthorization.sol +34 -0
- package/contracts/examples/fire/FireProduct.sol +411 -0
- package/contracts/examples/fire/FireProductAuthorization.sol +45 -0
- package/contracts/examples/fire/FireUSD.sol +26 -0
- package/contracts/examples/unpermissioned/SimpleDistribution.sol +50 -0
- package/contracts/examples/unpermissioned/SimpleOracle.sol +137 -0
- package/contracts/examples/unpermissioned/SimplePool.sol +76 -0
- package/contracts/examples/unpermissioned/SimpleProduct.sol +351 -0
- package/contracts/instance/IInstance.sol +7 -30
- package/contracts/instance/Instance.sol +10 -35
- package/contracts/instance/InstanceAdmin.sol +29 -7
- package/contracts/instance/InstanceAuthorizationV3.sol +3 -3
- package/contracts/instance/InstanceReader.sol +115 -25
- package/contracts/instance/InstanceService.sol +63 -41
- package/contracts/instance/InstanceServiceManager.sol +6 -7
- package/contracts/instance/InstanceStore.sol +11 -1
- package/contracts/instance/base/ObjectLifecycle.sol +9 -4
- package/contracts/instance/module/IBundle.sol +1 -1
- package/contracts/instance/module/IComponents.sol +4 -7
- package/contracts/instance/module/IPolicy.sol +24 -24
- package/contracts/mock/Dip.sol +1 -1
- package/contracts/oracle/Oracle.sol +2 -1
- package/contracts/oracle/OracleService.sol +11 -8
- package/contracts/oracle/OracleServiceManager.sol +6 -6
- package/contracts/pool/BasicPool.sol +7 -5
- package/contracts/pool/BasicPoolAuthorization.sol +5 -2
- package/contracts/pool/BundleService.sol +166 -46
- package/contracts/pool/BundleServiceManager.sol +6 -6
- package/contracts/pool/IBundleService.sol +31 -8
- package/contracts/pool/IPoolComponent.sol +18 -8
- package/contracts/pool/IPoolService.sol +57 -36
- package/contracts/pool/Pool.sol +59 -34
- package/contracts/pool/PoolService.sol +231 -102
- package/contracts/pool/PoolServiceManager.sol +4 -4
- package/contracts/product/ApplicationService.sol +50 -29
- package/contracts/product/ApplicationServiceManager.sol +4 -4
- package/contracts/product/BasicProduct.sol +1 -0
- package/contracts/product/ClaimService.sol +251 -87
- package/contracts/product/ClaimServiceManager.sol +4 -4
- package/contracts/product/IApplicationService.sol +1 -0
- package/contracts/product/IClaimService.sol +31 -7
- package/contracts/product/IPolicyService.sol +34 -34
- package/contracts/product/IPricingService.sol +7 -7
- package/contracts/product/IProductComponent.sol +17 -4
- package/contracts/product/{IProductService.sol → IRiskService.sol} +1 -1
- package/contracts/product/PolicyService.sol +379 -192
- package/contracts/product/PolicyServiceManager.sol +4 -4
- package/contracts/product/PricingService.sol +46 -46
- package/contracts/product/PricingServiceManager.sol +3 -3
- package/contracts/product/Product.sol +81 -50
- package/contracts/product/{ProductService.sol → RiskService.sol} +7 -10
- package/contracts/product/RiskServiceManager.sol +39 -0
- package/contracts/registry/ChainNft.sol +65 -32
- package/contracts/registry/IRegistry.sol +51 -18
- package/contracts/registry/IRegistryService.sol +0 -9
- package/contracts/registry/Registry.sol +328 -197
- package/contracts/registry/RegistryAdmin.sol +134 -51
- package/contracts/registry/RegistryService.sol +55 -48
- package/contracts/registry/RegistryServiceManager.sol +2 -2
- package/contracts/registry/ReleaseLifecycle.sol +6 -3
- package/contracts/registry/ReleaseRegistry.sol +194 -183
- package/contracts/registry/ServiceAuthorizationV3.sol +8 -10
- package/contracts/shared/Component.sol +25 -29
- package/contracts/shared/ComponentService.sol +20 -30
- package/contracts/shared/ComponentServiceManager.sol +8 -5
- package/contracts/shared/ComponentVerifyingService.sol +2 -3
- package/contracts/shared/ContractLib.sol +38 -0
- package/contracts/shared/IComponent.sol +7 -4
- package/contracts/shared/IInstanceLinkedComponent.sol +8 -15
- package/contracts/shared/ILifecycle.sol +3 -1
- package/contracts/shared/IPolicyHolder.sol +12 -22
- package/contracts/shared/InitializableERC165.sol +2 -2
- package/contracts/shared/InstanceLinkedComponent.sol +5 -6
- package/contracts/shared/KeyValueStore.sol +1 -1
- package/contracts/shared/Lifecycle.sol +13 -2
- package/contracts/shared/NftOwnable.sol +5 -5
- package/contracts/shared/PolicyHolder.sol +15 -52
- package/contracts/shared/Registerable.sol +4 -4
- package/contracts/shared/RegistryLinked.sol +3 -2
- package/contracts/shared/Service.sol +16 -11
- package/contracts/shared/TokenHandler.sol +100 -19
- package/contracts/shared/TokenHandlerDeployerLib.sol +12 -0
- package/contracts/staking/IStaking.sol +2 -1
- package/contracts/staking/StakeManagerLib.sol +18 -25
- package/contracts/staking/Staking.sol +11 -29
- package/contracts/staking/StakingManager.sol +8 -6
- package/contracts/staking/StakingReader.sol +12 -5
- package/contracts/staking/StakingService.sol +10 -14
- package/contracts/staking/StakingServiceManager.sol +2 -2
- package/contracts/staking/TargetManagerLib.sol +7 -3
- package/contracts/type/Amount.sol +15 -0
- package/contracts/type/Blocknumber.sol +7 -1
- package/contracts/type/ClaimId.sol +6 -1
- package/contracts/type/NftId.sol +1 -0
- package/contracts/type/ObjectType.sol +16 -11
- package/contracts/type/PayoutId.sol +10 -10
- package/contracts/type/RiskId.sol +15 -1
- package/contracts/type/Seconds.sol +21 -1
- package/contracts/type/StateId.sol +15 -1
- package/contracts/type/Timestamp.sol +11 -1
- package/contracts/type/UFixed.sol +4 -0
- package/contracts/upgradeability/ProxyManager.sol +67 -34
- package/contracts/upgradeability/Versionable.sol +2 -2
- package/package.json +2 -1
- package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +0 -4
- package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +0 -4
- package/artifacts/contracts/product/ProductService.sol/ProductService.json +0 -708
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +0 -702
- package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +0 -4
- package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +0 -39
- package/contracts/product/ProductServiceManager.sol +0 -39
- package/contracts/shared/InitializableCustom.sol +0 -177
@@ -1,27 +1,29 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
2
|
pragma solidity ^0.8.20;
|
3
3
|
|
4
|
+
import {IBundle} from "../instance/module/IBundle.sol";
|
4
5
|
import {IBundleService} from "./IBundleService.sol";
|
5
6
|
import {IComponents} from "../instance/module/IComponents.sol";
|
6
7
|
import {IComponentService} from "../shared/IComponentService.sol";
|
7
8
|
import {IInstance} from "../instance/IInstance.sol";
|
8
9
|
import {IInstanceService} from "../instance/IInstanceService.sol";
|
9
10
|
import {IPolicy} from "../instance/module/IPolicy.sol";
|
11
|
+
import {IProductComponent} from "../product/IProductComponent.sol";
|
10
12
|
import {IPoolService} from "./IPoolService.sol";
|
11
13
|
import {IRegistry} from "../registry/IRegistry.sol";
|
12
14
|
import {IRegistryService} from "../registry/IRegistryService.sol";
|
13
15
|
import {IStaking} from "../staking/IStaking.sol";
|
14
16
|
|
15
17
|
import {Amount, AmountLib} from "../type/Amount.sol";
|
18
|
+
import {ClaimId} from "../type/ClaimId.sol";
|
16
19
|
import {Fee, FeeLib} from "../type/Fee.sol";
|
17
|
-
import {NftId
|
20
|
+
import {NftId} from "../type/NftId.sol";
|
18
21
|
import {ObjectType, POOL, BUNDLE, COMPONENT, INSTANCE, REGISTRY} from "../type/ObjectType.sol";
|
19
22
|
import {RoleId, PUBLIC_ROLE} from "../type/RoleId.sol";
|
20
23
|
import {Fee, FeeLib} from "../type/Fee.sol";
|
21
24
|
import {KEEP_STATE} from "../type/StateId.sol";
|
22
25
|
import {Seconds} from "../type/Seconds.sol";
|
23
|
-
import {
|
24
|
-
import {UFixed} from "../type/UFixed.sol";
|
26
|
+
import {UFixed, UFixedLib} from "../type/UFixed.sol";
|
25
27
|
import {ComponentVerifyingService} from "../shared/ComponentVerifyingService.sol";
|
26
28
|
import {InstanceReader} from "../instance/InstanceReader.sol";
|
27
29
|
import {InstanceStore} from "../instance/InstanceStore.sol";
|
@@ -44,16 +46,15 @@ contract PoolService is
|
|
44
46
|
bytes memory data
|
45
47
|
)
|
46
48
|
internal
|
47
|
-
initializer
|
48
49
|
virtual override
|
50
|
+
initializer()
|
49
51
|
{
|
50
52
|
(
|
51
|
-
address registryAddress
|
52
|
-
//address managerAddress
|
53
|
+
address registryAddress,
|
53
54
|
address authority
|
54
|
-
) = abi.decode(data, (address, address
|
55
|
+
) = abi.decode(data, (address, address));
|
55
56
|
|
56
|
-
|
57
|
+
_initializeService(registryAddress, authority, owner);
|
57
58
|
|
58
59
|
_registryService = IRegistryService(_getServiceAddress(REGISTRY()));
|
59
60
|
_bundleService = IBundleService(_getServiceAddress(BUNDLE()));
|
@@ -62,29 +63,27 @@ contract PoolService is
|
|
62
63
|
|
63
64
|
_staking = IStaking(getRegistry().getStakingAddress());
|
64
65
|
|
65
|
-
|
66
|
+
_registerInterface(type(IPoolService).interfaceId);
|
66
67
|
}
|
67
68
|
|
68
69
|
|
69
|
-
|
70
|
+
/// @inheritdoc IPoolService
|
71
|
+
function setMaxBalanceAmount(Amount maxBalanceAmount)
|
70
72
|
external
|
71
73
|
virtual
|
72
74
|
{
|
73
|
-
/*
|
74
75
|
(NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
|
75
76
|
InstanceReader instanceReader = instance.getInstanceReader();
|
77
|
+
IComponents.PoolInfo memory poolInfo = instanceReader.getPoolInfo(poolNftId);
|
76
78
|
|
77
|
-
|
78
|
-
|
79
|
-
Amount previousMaxCapitalAmount = poolInfo.maxCapitalAmount;
|
80
|
-
|
81
|
-
poolInfo.maxCapitalAmount = maxCapitalAmount;
|
79
|
+
Amount previousMaxBalanceAmount = poolInfo.maxBalanceAmount;
|
80
|
+
poolInfo.maxBalanceAmount = maxBalanceAmount;
|
82
81
|
instance.getInstanceStore().updatePool(poolNftId, poolInfo, KEEP_STATE());
|
83
82
|
|
84
|
-
emit
|
85
|
-
*/
|
83
|
+
emit LogPoolServiceMaxBalanceAmountUpdated(poolNftId, previousMaxBalanceAmount, maxBalanceAmount);
|
86
84
|
}
|
87
85
|
|
86
|
+
|
88
87
|
function setBundleOwnerRole(RoleId bundleOwnerRole)
|
89
88
|
external
|
90
89
|
virtual
|
@@ -107,30 +106,10 @@ contract PoolService is
|
|
107
106
|
}
|
108
107
|
|
109
108
|
|
110
|
-
|
111
|
-
Fee memory poolFee,
|
112
|
-
Fee memory stakingFee,
|
113
|
-
Fee memory performanceFee
|
114
|
-
)
|
115
|
-
external
|
116
|
-
virtual
|
117
|
-
{
|
118
|
-
(NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
|
119
|
-
|
120
|
-
IComponents.PoolInfo memory poolInfo = instance.getInstanceReader().getPoolInfo(poolNftId);
|
121
|
-
poolInfo.poolFee = poolFee;
|
122
|
-
poolInfo.stakingFee = stakingFee;
|
123
|
-
poolInfo.performanceFee = performanceFee;
|
124
|
-
|
125
|
-
instance.getInstanceStore().updatePool(poolNftId, poolInfo, KEEP_STATE());
|
126
|
-
|
127
|
-
// TODO add logging
|
128
|
-
}
|
129
|
-
|
109
|
+
/// @inheritdoc IPoolService
|
130
110
|
function createBundle(
|
131
111
|
address bundleOwner, // initial bundle owner
|
132
112
|
Fee memory fee, // fees deducted from premium that go to bundle owner
|
133
|
-
Amount stakingAmount, // staking amount - staking fees result in initial bundle capital
|
134
113
|
Seconds lifetime, // initial duration for which new policies are covered
|
135
114
|
bytes calldata filter // optional use case specific criteria that define if a policy may be covered by this bundle
|
136
115
|
)
|
@@ -139,71 +118,213 @@ contract PoolService is
|
|
139
118
|
returns(NftId bundleNftId)
|
140
119
|
{
|
141
120
|
(NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
|
142
|
-
InstanceReader instanceReader = instance.getInstanceReader();
|
143
|
-
|
144
|
-
(
|
145
|
-
Amount stakingFeeAmount,
|
146
|
-
Amount stakingNetAmount
|
147
|
-
) = FeeLib.calculateFee(
|
148
|
-
_getStakingFee(instanceReader, poolNftId),
|
149
|
-
stakingAmount);
|
150
121
|
|
122
|
+
// create the empty bundle
|
151
123
|
bundleNftId = _bundleService.create(
|
152
124
|
instance,
|
153
125
|
poolNftId,
|
154
126
|
bundleOwner,
|
155
127
|
fee,
|
156
|
-
|
128
|
+
AmountLib.zero(),
|
157
129
|
lifetime,
|
158
130
|
filter);
|
159
131
|
|
160
|
-
// pool book keeping
|
161
|
-
_componentService.increasePoolBalance(
|
162
|
-
instance.getInstanceStore(),
|
163
|
-
poolNftId,
|
164
|
-
stakingAmount,
|
165
|
-
stakingFeeAmount);
|
166
|
-
|
167
|
-
// pool bookkeeping and collect tokens from bundle owner
|
168
|
-
_collectStakingAmount(
|
169
|
-
instanceReader,
|
170
|
-
poolNftId,
|
171
|
-
bundleOwner,
|
172
|
-
stakingAmount);
|
173
|
-
|
174
132
|
emit LogPoolServiceBundleCreated(instance.getNftId(), poolNftId, bundleNftId);
|
175
133
|
}
|
176
134
|
|
135
|
+
|
177
136
|
function _getStakingFee(InstanceReader instanceReader, NftId poolNftId)
|
178
137
|
internal
|
179
138
|
virtual
|
180
139
|
view
|
181
140
|
returns (Fee memory stakingFee)
|
182
141
|
{
|
183
|
-
NftId productNftId = instanceReader.
|
184
|
-
return instanceReader.
|
142
|
+
NftId productNftId = instanceReader.getComponentInfo(poolNftId).productNftId;
|
143
|
+
return instanceReader.getProductInfo(productNftId).stakingFee;
|
185
144
|
}
|
186
145
|
|
146
|
+
|
187
147
|
function closeBundle(NftId bundleNftId)
|
188
148
|
external
|
189
149
|
virtual
|
190
150
|
{
|
191
151
|
(NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
|
192
152
|
|
193
|
-
// TODO
|
153
|
+
// TODO get performance fee for pool (#477)
|
194
154
|
|
195
155
|
// releasing collateral in bundle
|
196
|
-
_bundleService.close(instance, bundleNftId);
|
197
|
-
|
198
|
-
// TODO get performance fee for pool, transfer of remaining funds + bundle fees to bundle owner
|
156
|
+
(Amount unstakedAmount, Amount feeAmount) = _bundleService.close(instance, bundleNftId);
|
199
157
|
|
158
|
+
_componentService.decreasePoolBalance(
|
159
|
+
instance.getInstanceStore(),
|
160
|
+
poolNftId,
|
161
|
+
unstakedAmount + feeAmount,
|
162
|
+
AmountLib.zero());
|
163
|
+
|
200
164
|
emit LogPoolServiceBundleClosed(instance.getNftId(), poolNftId, bundleNftId);
|
165
|
+
|
166
|
+
if ((unstakedAmount + feeAmount).gtz()){
|
167
|
+
IComponents.ComponentInfo memory poolComponentInfo = instance.getInstanceReader().getComponentInfo(poolNftId);
|
168
|
+
poolComponentInfo.tokenHandler.distributeTokens(
|
169
|
+
poolComponentInfo.wallet,
|
170
|
+
getRegistry().ownerOf(bundleNftId),
|
171
|
+
unstakedAmount + feeAmount);
|
172
|
+
}
|
173
|
+
}
|
174
|
+
|
175
|
+
|
176
|
+
/// @inheritdoc IPoolService
|
177
|
+
function processFundedClaim(
|
178
|
+
NftId policyNftId,
|
179
|
+
ClaimId claimId,
|
180
|
+
Amount availableAmount
|
181
|
+
)
|
182
|
+
external
|
183
|
+
virtual
|
184
|
+
{
|
185
|
+
(NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
|
186
|
+
InstanceReader instanceReader = instance.getInstanceReader();
|
187
|
+
NftId productNftId = instanceReader.getComponentInfo(poolNftId).productNftId;
|
188
|
+
|
189
|
+
// check policy matches with calling pool
|
190
|
+
IPolicy.PolicyInfo memory policyInfo = instanceReader.getPolicyInfo(policyNftId);
|
191
|
+
if(policyInfo.productNftId != productNftId) {
|
192
|
+
revert ErrorPoolServicePolicyPoolMismatch(
|
193
|
+
policyNftId,
|
194
|
+
policyInfo.productNftId,
|
195
|
+
productNftId);
|
196
|
+
}
|
197
|
+
|
198
|
+
emit LogPoolServiceProcessFundedClaim(policyNftId, claimId, availableAmount);
|
199
|
+
|
200
|
+
// callback to product component if applicable
|
201
|
+
if (instanceReader.getProductInfo(productNftId).isProcessingFundedClaims) {
|
202
|
+
address productAddress = getRegistry().getObjectAddress(productNftId);
|
203
|
+
IProductComponent(productAddress).processFundedClaim(policyNftId, claimId, availableAmount);
|
204
|
+
}
|
201
205
|
}
|
202
206
|
|
203
207
|
|
208
|
+
/// @inheritdoc IPoolService
|
209
|
+
function stake(NftId bundleNftId, Amount amount)
|
210
|
+
external
|
211
|
+
virtual
|
212
|
+
// TODO: restricted() (once #462 is done)
|
213
|
+
returns(Amount netAmount)
|
214
|
+
{
|
215
|
+
(NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
|
216
|
+
InstanceReader instanceReader = instance.getInstanceReader();
|
217
|
+
IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
|
218
|
+
IComponents.PoolInfo memory poolInfo = instanceReader.getPoolInfo(poolNftId);
|
219
|
+
|
220
|
+
if (bundleInfo.poolNftId != poolNftId) {
|
221
|
+
revert ErrorPoolServiceBundlePoolMismatch(bundleNftId, poolNftId);
|
222
|
+
}
|
223
|
+
|
224
|
+
{
|
225
|
+
Amount currentPoolBalance = instanceReader.getBalanceAmount(poolNftId);
|
226
|
+
if (currentPoolBalance + amount > poolInfo.maxBalanceAmount) {
|
227
|
+
revert ErrorPoolServiceMaxBalanceAmountExceeded(poolNftId, poolInfo.maxBalanceAmount, currentPoolBalance, amount);
|
228
|
+
}
|
229
|
+
}
|
230
|
+
|
231
|
+
|
232
|
+
// calculate fees
|
233
|
+
Amount feeAmount;
|
234
|
+
(
|
235
|
+
feeAmount,
|
236
|
+
netAmount
|
237
|
+
) = FeeLib.calculateFee(
|
238
|
+
_getStakingFee(instanceReader, poolNftId),
|
239
|
+
amount);
|
240
|
+
|
241
|
+
// do all the bookkeeping
|
242
|
+
_componentService.increasePoolBalance(
|
243
|
+
instance.getInstanceStore(),
|
244
|
+
poolNftId,
|
245
|
+
netAmount,
|
246
|
+
feeAmount);
|
247
|
+
|
248
|
+
_bundleService.stake(instance, bundleNftId, netAmount);
|
249
|
+
|
250
|
+
// collect tokens from bundle owner
|
251
|
+
address bundleOwner = getRegistry().ownerOf(bundleNftId);
|
252
|
+
emit LogPoolServiceBundleStaked(instance.getNftId(), poolNftId, bundleNftId, amount, netAmount);
|
253
|
+
|
254
|
+
// TODO only collect staking token when pool is not externally managed
|
255
|
+
_collectStakingAmount(
|
256
|
+
instanceReader,
|
257
|
+
poolNftId,
|
258
|
+
bundleOwner,
|
259
|
+
amount);
|
260
|
+
}
|
261
|
+
|
262
|
+
/// @inheritdoc IPoolService
|
263
|
+
function unstake(NftId bundleNftId, Amount amount)
|
264
|
+
external
|
265
|
+
virtual
|
266
|
+
// TODO: restricted() (once #462 is done)
|
267
|
+
returns(Amount netAmount)
|
268
|
+
{
|
269
|
+
(NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
|
270
|
+
InstanceReader instanceReader = instance.getInstanceReader();
|
271
|
+
InstanceStore instanceStore = instance.getInstanceStore();
|
272
|
+
IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
|
273
|
+
|
274
|
+
if (bundleInfo.poolNftId != poolNftId) {
|
275
|
+
revert ErrorPoolServiceBundlePoolMismatch(bundleNftId, poolNftId);
|
276
|
+
}
|
277
|
+
|
278
|
+
// call bundle service for bookkeeping and additional checks
|
279
|
+
Amount unstakedAmount = _bundleService.unstake(instance, bundleNftId, amount);
|
280
|
+
|
281
|
+
// Important: from now on work only with unstakedAmount as it is the only reliable amount.
|
282
|
+
// if amount was max, this was set to the available amount
|
283
|
+
|
284
|
+
// TODO: handle performance fees (issue #477)
|
285
|
+
|
286
|
+
// update pool bookkeeping - performance fees stay in the pool, but as fees
|
287
|
+
_componentService.decreasePoolBalance(
|
288
|
+
instanceStore,
|
289
|
+
poolNftId,
|
290
|
+
unstakedAmount,
|
291
|
+
AmountLib.zero());
|
292
|
+
|
293
|
+
IComponents.ComponentInfo memory poolComponentInfo = instanceReader.getComponentInfo(poolNftId);
|
294
|
+
address poolWallet = poolComponentInfo.wallet;
|
295
|
+
// transfer amount to bundle owner
|
296
|
+
address owner = getRegistry().ownerOf(bundleNftId);
|
297
|
+
emit LogPoolServiceBundleUnstaked(instance.getNftId(), poolNftId, bundleNftId, unstakedAmount);
|
298
|
+
poolComponentInfo.tokenHandler.distributeTokens(
|
299
|
+
poolWallet,
|
300
|
+
owner,
|
301
|
+
unstakedAmount);
|
302
|
+
return unstakedAmount;
|
303
|
+
}
|
304
|
+
|
305
|
+
|
306
|
+
function fundPoolWallet(NftId poolNftId, Amount amount)
|
307
|
+
external
|
308
|
+
virtual
|
309
|
+
restricted()
|
310
|
+
{
|
311
|
+
// TODO check that poolNftId is externally managed
|
312
|
+
// TODO implement
|
313
|
+
}
|
314
|
+
|
315
|
+
|
316
|
+
function defundPoolWallet(NftId poolNftId, Amount amount)
|
317
|
+
external
|
318
|
+
virtual
|
319
|
+
restricted()
|
320
|
+
{
|
321
|
+
// TODO check that poolNftId is externally managed
|
322
|
+
// TODO implement
|
323
|
+
}
|
324
|
+
|
204
325
|
function processSale(
|
205
326
|
NftId bundleNftId,
|
206
|
-
IPolicy.
|
327
|
+
IPolicy.PremiumInfo memory premium
|
207
328
|
)
|
208
329
|
external
|
209
330
|
virtual
|
@@ -215,9 +336,9 @@ contract PoolService is
|
|
215
336
|
IRegistry.ObjectInfo memory instanceObjectInfo = registry.getObjectInfo(poolObjectInfo.parentNftId);
|
216
337
|
IInstance instance = IInstance(instanceObjectInfo.objectAddress);
|
217
338
|
|
218
|
-
Amount poolFeeAmount =
|
219
|
-
Amount bundleFeeAmount =
|
220
|
-
Amount bundleNetAmount =
|
339
|
+
Amount poolFeeAmount = premium.poolFeeFixAmount + premium.poolFeeVarAmount;
|
340
|
+
Amount bundleFeeAmount = premium.bundleFeeFixAmount + premium.bundleFeeVarAmount;
|
341
|
+
Amount bundleNetAmount = premium.netPremiumAmount;
|
221
342
|
|
222
343
|
InstanceStore instanceStore = instance.getInstanceStore();
|
223
344
|
_componentService.increasePoolBalance(
|
@@ -246,13 +367,13 @@ contract PoolService is
|
|
246
367
|
virtual
|
247
368
|
restricted()
|
248
369
|
returns (
|
249
|
-
Amount
|
250
|
-
Amount
|
370
|
+
Amount totalCollateralAmount,
|
371
|
+
Amount localCollateralAmount
|
251
372
|
)
|
252
373
|
{
|
253
374
|
(
|
254
|
-
|
255
|
-
|
375
|
+
totalCollateralAmount,
|
376
|
+
localCollateralAmount
|
256
377
|
) = calculateRequiredCollateral(
|
257
378
|
instance.getInstanceReader(),
|
258
379
|
productNftId,
|
@@ -278,8 +399,7 @@ contract PoolService is
|
|
278
399
|
}
|
279
400
|
}
|
280
401
|
|
281
|
-
|
282
|
-
function reduceCollateral(
|
402
|
+
function processPayout(
|
283
403
|
IInstance instance,
|
284
404
|
address token,
|
285
405
|
NftId policyNftId,
|
@@ -290,6 +410,22 @@ contract PoolService is
|
|
290
410
|
virtual
|
291
411
|
restricted()
|
292
412
|
{
|
413
|
+
NftId bundleNftId = policyInfo.bundleNftId;
|
414
|
+
NftId poolNftId = getRegistry().getObjectInfo(bundleNftId).parentNftId;
|
415
|
+
InstanceStore instanceStore = instance.getInstanceStore();
|
416
|
+
|
417
|
+
_componentService.decreasePoolBalance(
|
418
|
+
instanceStore,
|
419
|
+
poolNftId,
|
420
|
+
payoutAmount,
|
421
|
+
AmountLib.zero());
|
422
|
+
|
423
|
+
_componentService.decreaseBundleBalance(
|
424
|
+
instanceStore,
|
425
|
+
bundleNftId,
|
426
|
+
payoutAmount,
|
427
|
+
AmountLib.zero());
|
428
|
+
|
293
429
|
_bundleService.releaseCollateral(
|
294
430
|
instance,
|
295
431
|
policyNftId,
|
@@ -344,16 +480,16 @@ contract PoolService is
|
|
344
480
|
public
|
345
481
|
view
|
346
482
|
returns(
|
347
|
-
Amount
|
348
|
-
Amount
|
483
|
+
Amount totalCollateralAmount,
|
484
|
+
Amount localCollateralAmount
|
349
485
|
)
|
350
486
|
{
|
351
487
|
NftId poolNftId = instanceReader.getProductInfo(productNftId).poolNftId;
|
352
488
|
IComponents.PoolInfo memory poolInfo = instanceReader.getPoolInfo(poolNftId);
|
353
489
|
|
354
490
|
(
|
355
|
-
|
356
|
-
|
491
|
+
totalCollateralAmount,
|
492
|
+
localCollateralAmount
|
357
493
|
) = calculateRequiredCollateral(
|
358
494
|
poolInfo.collateralizationLevel,
|
359
495
|
poolInfo.retentionLevel,
|
@@ -369,18 +505,17 @@ contract PoolService is
|
|
369
505
|
public
|
370
506
|
pure
|
371
507
|
returns(
|
372
|
-
Amount
|
373
|
-
Amount
|
508
|
+
Amount totalCollateralAmount,
|
509
|
+
Amount localCollateralAmount
|
374
510
|
)
|
375
511
|
{
|
376
|
-
//
|
377
|
-
|
378
|
-
|
379
|
-
|
380
|
-
//
|
381
|
-
|
382
|
-
|
383
|
-
totalCollateralAmount = localCollateralAmount;
|
512
|
+
// collateralization is applied to sum insured
|
513
|
+
UFixed totalUFixed = collateralizationLevel * sumInsuredAmount.toUFixed();
|
514
|
+
totalCollateralAmount = AmountLib.toAmount(totalUFixed.toInt());
|
515
|
+
|
516
|
+
// retention level defines how much capital is required locally
|
517
|
+
localCollateralAmount = AmountLib.toAmount(
|
518
|
+
(retentionLevel * totalUFixed).toInt());
|
384
519
|
}
|
385
520
|
|
386
521
|
|
@@ -403,7 +538,6 @@ contract PoolService is
|
|
403
538
|
}
|
404
539
|
|
405
540
|
|
406
|
-
// TODO create (I)TreasuryService that deals with all gif related token transfers
|
407
541
|
/// @dev transfers the specified amount from the bundle owner to the pool's wallet
|
408
542
|
function _collectStakingAmount(
|
409
543
|
InstanceReader instanceReader,
|
@@ -416,16 +550,11 @@ contract PoolService is
|
|
416
550
|
|
417
551
|
// collecting investor token
|
418
552
|
IComponents.ComponentInfo memory componentInfo = instanceReader.getComponentInfo(poolNftId);
|
419
|
-
TokenHandler tokenHandler = componentInfo.tokenHandler;
|
420
553
|
address poolWallet = componentInfo.wallet;
|
421
|
-
|
422
|
-
|
423
|
-
|
424
|
-
|
425
|
-
bundleOwner,
|
426
|
-
poolWallet,
|
427
|
-
amount);
|
428
|
-
}
|
554
|
+
componentInfo.tokenHandler.collectTokens(
|
555
|
+
bundleOwner,
|
556
|
+
poolWallet,
|
557
|
+
amount);
|
429
558
|
}
|
430
559
|
|
431
560
|
function _getDomain() internal pure override returns(ObjectType) {
|
@@ -12,14 +12,14 @@ contract PoolServiceManager is ProxyManager {
|
|
12
12
|
/// @dev initializes proxy manager with pool service implementation
|
13
13
|
constructor(
|
14
14
|
address authority,
|
15
|
-
address
|
15
|
+
address registry,
|
16
16
|
bytes32 salt
|
17
17
|
)
|
18
|
-
ProxyManager(registryAddress)
|
19
18
|
{
|
20
19
|
PoolService poolSrv = new PoolService{salt: salt}();
|
21
|
-
bytes memory data = abi.encode(
|
22
|
-
IVersionable versionable =
|
20
|
+
bytes memory data = abi.encode(registry, authority);
|
21
|
+
IVersionable versionable = initialize(
|
22
|
+
registry,
|
23
23
|
address(poolSrv),
|
24
24
|
data,
|
25
25
|
salt);
|
@@ -41,18 +41,17 @@ contract ApplicationService is
|
|
41
41
|
initializer()
|
42
42
|
{
|
43
43
|
(
|
44
|
-
address registryAddress
|
45
|
-
//address managerAddress
|
44
|
+
address registryAddress,
|
46
45
|
address authority
|
47
|
-
) = abi.decode(data, (address, address
|
46
|
+
) = abi.decode(data, (address, address));
|
48
47
|
|
49
|
-
|
48
|
+
_initializeService(registryAddress, authority, owner);
|
50
49
|
|
51
50
|
_distributionService = IDistributionService(_getServiceAddress(DISTRIBUTION()));
|
52
51
|
_pricingService = IPricingService(_getServiceAddress(PRICE()));
|
53
52
|
_registryService = IRegistryService(_getServiceAddress(REGISTRY()));
|
54
53
|
|
55
|
-
|
54
|
+
_registerInterface(type(IApplicationService).interfaceId);
|
56
55
|
}
|
57
56
|
|
58
57
|
|
@@ -111,8 +110,7 @@ contract ApplicationService is
|
|
111
110
|
view
|
112
111
|
returns (Amount premiumAmount)
|
113
112
|
{
|
114
|
-
return
|
115
|
-
_pricingService.calculatePremium(
|
113
|
+
return _pricingService.calculatePremium(
|
116
114
|
info.productNftId,
|
117
115
|
info.riskId,
|
118
116
|
info.sumInsuredAmount,
|
@@ -120,7 +118,7 @@ contract ApplicationService is
|
|
120
118
|
info.applicationData,
|
121
119
|
info.bundleNftId,
|
122
120
|
info.referralId
|
123
|
-
).premiumAmount
|
121
|
+
).premiumAmount;
|
124
122
|
}
|
125
123
|
|
126
124
|
|
@@ -128,6 +126,7 @@ contract ApplicationService is
|
|
128
126
|
address applicationOwner,
|
129
127
|
RiskId riskId,
|
130
128
|
Amount sumInsuredAmount,
|
129
|
+
Amount premiumAmount,
|
131
130
|
Seconds lifetime,
|
132
131
|
NftId bundleNftId,
|
133
132
|
ReferralId referralId,
|
@@ -135,6 +134,7 @@ contract ApplicationService is
|
|
135
134
|
)
|
136
135
|
external
|
137
136
|
virtual
|
137
|
+
nonReentrant()
|
138
138
|
returns (NftId applicationNftId)
|
139
139
|
{
|
140
140
|
(NftId productNftId,, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
|
@@ -152,14 +152,45 @@ contract ApplicationService is
|
|
152
152
|
applicationNftId = _registerApplication(productNftId, applicationOwner);
|
153
153
|
|
154
154
|
// create policy info for application
|
155
|
-
IPolicy.PolicyInfo memory applicationInfo =
|
155
|
+
IPolicy.PolicyInfo memory applicationInfo = _createApplicationInfo(
|
156
|
+
productNftId,
|
157
|
+
riskId,
|
158
|
+
sumInsuredAmount,
|
159
|
+
premiumAmount,
|
160
|
+
lifetime,
|
161
|
+
bundleNftId,
|
162
|
+
referralId,
|
163
|
+
applicationData);
|
164
|
+
|
165
|
+
// register application with instance
|
166
|
+
instance.getInstanceStore().createApplication(
|
167
|
+
applicationNftId,
|
168
|
+
applicationInfo);
|
169
|
+
|
170
|
+
// TODO: add logging
|
171
|
+
}
|
172
|
+
|
173
|
+
function _createApplicationInfo(
|
174
|
+
NftId productNftId,
|
175
|
+
RiskId riskId,
|
176
|
+
Amount sumInsuredAmount,
|
177
|
+
Amount premiumAmount,
|
178
|
+
Seconds lifetime,
|
179
|
+
NftId bundleNftId,
|
180
|
+
ReferralId referralId,
|
181
|
+
bytes memory applicationData
|
182
|
+
)
|
183
|
+
internal
|
184
|
+
virtual
|
185
|
+
returns (IPolicy.PolicyInfo memory applicationInfo)
|
186
|
+
{
|
187
|
+
return IPolicy.PolicyInfo({
|
156
188
|
productNftId: productNftId,
|
157
189
|
bundleNftId: bundleNftId,
|
158
190
|
referralId: referralId,
|
159
191
|
riskId: riskId,
|
160
192
|
sumInsuredAmount: sumInsuredAmount,
|
161
|
-
premiumAmount:
|
162
|
-
premiumPaidAmount: AmountLib.zero(),
|
193
|
+
premiumAmount: premiumAmount,
|
163
194
|
lifetime: lifetime,
|
164
195
|
applicationData: applicationData,
|
165
196
|
processData: "",
|
@@ -171,30 +202,18 @@ contract ApplicationService is
|
|
171
202
|
expiredAt: zeroTimestamp(),
|
172
203
|
closedAt: zeroTimestamp()
|
173
204
|
});
|
174
|
-
|
175
|
-
// TODO consider to provide this amount externally
|
176
|
-
// actual calculation is done 2nd time anyway for premium collection
|
177
|
-
// calculate premium amount
|
178
|
-
applicationInfo.premiumAmount = _calculatePremiumAmount(applicationInfo);
|
179
|
-
|
180
|
-
// register application with instance
|
181
|
-
instance.getInstanceStore().createApplication(
|
182
|
-
applicationNftId,
|
183
|
-
applicationInfo);
|
184
|
-
|
185
|
-
// TODO: add logging
|
186
205
|
}
|
187
206
|
|
188
|
-
|
189
207
|
function renew(
|
190
208
|
NftId policyNftId, // policy to be renewd (renewal inherits policy attributes)
|
191
209
|
NftId bundleNftId // will likely need a newer bundle for underwriting
|
192
210
|
)
|
193
211
|
external
|
194
|
-
virtual
|
212
|
+
virtual
|
213
|
+
nonReentrant()
|
195
214
|
returns (NftId applicationNftId)
|
196
215
|
{
|
197
|
-
|
216
|
+
// TODO implement
|
198
217
|
}
|
199
218
|
|
200
219
|
|
@@ -208,14 +227,16 @@ contract ApplicationService is
|
|
208
227
|
bytes memory applicationData
|
209
228
|
)
|
210
229
|
external
|
211
|
-
virtual
|
230
|
+
virtual
|
231
|
+
nonReentrant()
|
212
232
|
{
|
213
|
-
|
233
|
+
// TODO implement
|
214
234
|
}
|
215
235
|
|
216
236
|
function revoke(NftId applicationNftId)
|
217
237
|
external
|
218
|
-
virtual
|
238
|
+
virtual
|
239
|
+
nonReentrant()
|
219
240
|
{
|
220
241
|
(,, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
|
221
242
|
instance.getInstanceStore().updateApplicationState(applicationNftId, REVOKED());
|