@etherisc/gif-next 0.0.2-8feedcc-442 → 0.0.2-906d113-035
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 +19 -2
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +105 -65
- 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 +67 -11
- 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 +60 -32
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +40 -3
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +19 -0
- package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.dbg.json +4 -0
- package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.json +1196 -0
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +68 -5
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +163 -309
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +82 -22
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +91 -277
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +172 -290
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +99 -123
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +78 -92
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +78 -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 +1538 -0
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +470 -0
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +2077 -0
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +470 -0
- package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.json +376 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +1471 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1231 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1592 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2095 -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/IInstance.sol/IInstance.json +53 -31
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +29 -84
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +56 -123
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +166 -139
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +57 -97
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +459 -131
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +77 -242
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +75 -87
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +330 -233
- 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 +46 -5
- 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 +137 -283
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +84 -24
- 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 +66 -80
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +43 -9
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +79 -265
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +91 -159
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +75 -83
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +109 -330
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +82 -22
- package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +359 -194
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +145 -97
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +178 -23
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +88 -130
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +384 -179
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +99 -313
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +506 -334
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +111 -87
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +76 -168
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +72 -92
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +136 -281
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +82 -22
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +303 -187
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +119 -103
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +34 -0
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +176 -6
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +323 -118
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +114 -85
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +124 -97
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
- package/artifacts/contracts/product/{IProductService.sol/IProductService.json → IRiskService.sol/IRiskService.json} +31 -2
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +444 -325
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +119 -103
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +199 -309
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +96 -120
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/product/Product.sol/Product.json +136 -281
- package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
- package/artifacts/contracts/product/RiskService.sol/RiskService.json +622 -0
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +694 -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 +286 -34
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +114 -35
- package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
- package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +5 -18
- package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
- package/artifacts/contracts/registry/Registry.sol/Registry.json +492 -95
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +283 -143
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +78 -284
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +67 -75
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +47 -6
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +129 -221
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +66 -8
- 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 +65 -236
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +355 -283
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +122 -120
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +47 -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 +55 -54
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +321 -19
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +66 -80
- 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/INftOwnable.sol/INftOwnable.json +16 -0
- 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/IRegisterable.sol/IRegisterable.json +29 -0
- 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 +29 -0
- 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 +79 -265
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +42 -1
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +42 -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 +22 -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 +58 -89
- 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 +47 -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 +82 -55
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +29 -21
- 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 +176 -293
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +46 -5
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +106 -91
- 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 +71 -165
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +71 -79
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +169 -128
- 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 +55 -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 +64 -59
- package/contracts/authorization/Authorization.sol +111 -40
- package/contracts/authorization/IAccess.sol +1 -0
- package/contracts/authorization/IAccessAdmin.sol +4 -3
- package/contracts/authorization/IAuthorization.sol +13 -7
- package/contracts/authorization/IServiceAuthorization.sol +3 -1
- package/contracts/authorization/ReleaseAccessManager.sol +38 -0
- package/contracts/authorization/ServiceAuthorization.sol +26 -10
- package/contracts/distribution/BasicDistribution.sol +2 -1
- package/contracts/distribution/Distribution.sol +7 -17
- package/contracts/distribution/DistributionService.sol +83 -65
- package/contracts/distribution/DistributionServiceManager.sol +6 -6
- package/contracts/distribution/IDistributionComponent.sol +1 -1
- 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 +418 -0
- package/contracts/examples/fire/FireProductAuthorization.sol +44 -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 +10 -30
- package/contracts/instance/IInstanceService.sol +0 -20
- package/contracts/instance/Instance.sol +29 -51
- package/contracts/instance/InstanceAdmin.sol +42 -31
- package/contracts/instance/InstanceAuthorizationV3.sol +11 -21
- package/contracts/instance/InstanceReader.sol +115 -25
- package/contracts/instance/InstanceService.sol +65 -97
- 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 +10 -10
- package/contracts/instance/module/IPolicy.sol +24 -24
- package/contracts/mock/Dip.sol +1 -1
- package/contracts/oracle/BasicOracle.sol +0 -1
- package/contracts/oracle/IOracleService.sol +2 -1
- package/contracts/oracle/Oracle.sol +6 -16
- package/contracts/oracle/OracleService.sol +47 -34
- package/contracts/oracle/OracleServiceManager.sol +6 -6
- package/contracts/pool/BasicPool.sol +21 -31
- package/contracts/pool/BasicPoolAuthorization.sol +5 -3
- package/contracts/pool/BundleService.sol +200 -61
- 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 +56 -39
- package/contracts/pool/Pool.sol +60 -53
- package/contracts/pool/PoolService.sol +241 -141
- 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 +9 -38
- package/contracts/product/BasicProductAuthorization.sol +0 -1
- package/contracts/product/ClaimService.sol +275 -101
- 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 -32
- package/contracts/product/IPricingService.sol +10 -10
- package/contracts/product/IProductComponent.sol +23 -4
- package/contracts/product/{IProductService.sol → IRiskService.sol} +1 -1
- package/contracts/product/PolicyService.sol +404 -197
- package/contracts/product/PolicyServiceManager.sol +4 -4
- package/contracts/product/PricingService.sol +50 -53
- package/contracts/product/PricingServiceManager.sol +3 -3
- package/contracts/product/Product.sol +134 -71
- package/contracts/product/{ProductService.sol → RiskService.sol} +7 -10
- package/contracts/product/RiskServiceManager.sol +39 -0
- package/contracts/registry/ChainNft.sol +68 -38
- package/contracts/registry/IRegistry.sol +55 -18
- package/contracts/registry/IRegistryService.sol +5 -12
- package/contracts/registry/ITransferInterceptor.sol +1 -2
- package/contracts/registry/Registry.sol +342 -201
- package/contracts/registry/RegistryAdmin.sol +134 -51
- package/contracts/registry/RegistryService.sol +35 -46
- package/contracts/registry/RegistryServiceManager.sol +2 -2
- package/contracts/registry/ReleaseLifecycle.sol +6 -3
- package/contracts/registry/ReleaseRegistry.sol +204 -188
- package/contracts/registry/ServiceAuthorizationV3.sol +16 -22
- package/contracts/shared/Component.sol +40 -55
- package/contracts/shared/ComponentService.sol +235 -151
- package/contracts/shared/ComponentServiceManager.sol +8 -5
- package/contracts/shared/ComponentVerifyingService.sol +23 -14
- package/contracts/shared/ContractLib.sol +38 -0
- package/contracts/shared/IComponent.sol +10 -6
- package/contracts/shared/IComponentService.sol +25 -13
- package/contracts/shared/IInstanceLinkedComponent.sol +7 -22
- package/contracts/shared/ILifecycle.sol +3 -1
- package/contracts/shared/INftOwnable.sol +2 -0
- package/contracts/shared/IPolicyHolder.sol +12 -22
- package/contracts/shared/IRegisterable.sol +11 -0
- package/contracts/shared/InitializableERC165.sol +2 -2
- package/contracts/shared/InstanceLinkedComponent.sol +72 -31
- package/contracts/shared/KeyValueStore.sol +1 -1
- package/contracts/shared/Lifecycle.sol +15 -4
- package/contracts/shared/NftOwnable.sol +23 -7
- package/contracts/shared/PolicyHolder.sol +15 -52
- package/contracts/shared/Registerable.sol +19 -9
- package/contracts/shared/RegistryLinked.sol +3 -2
- package/contracts/shared/Service.sol +20 -18
- package/contracts/shared/TokenHandler.sol +100 -19
- package/contracts/shared/TokenHandlerDeployerLib.sol +12 -0
- package/contracts/staking/IStaking.sol +2 -1
- package/contracts/staking/IStakingService.sol +0 -3
- package/contracts/staking/StakeManagerLib.sol +18 -25
- package/contracts/staking/Staking.sol +13 -32
- package/contracts/staking/StakingManager.sol +8 -6
- package/contracts/staking/StakingReader.sol +12 -5
- package/contracts/staking/StakingService.sol +11 -29
- 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/RoleId.sol +0 -12
- 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 +68 -34
- package/contracts/upgradeability/Versionable.sol +2 -2
- package/package.json +2 -1
- package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +0 -4
- package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.json +0 -290
- package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +0 -4
- package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +0 -390
- 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/authorization/IModuleAuthorization.sol +0 -21
- package/contracts/authorization/ModuleAuthorization.sol +0 -78
- package/contracts/product/ProductServiceManager.sol +0 -39
- package/contracts/shared/InitializableCustom.sol +0 -177
@@ -1,26 +1,25 @@
|
|
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
|
-
import {IInstanceService} from "../instance/IInstanceService.sol";
|
9
9
|
import {IPolicy} from "../instance/module/IPolicy.sol";
|
10
|
+
import {IProductComponent} from "../product/IProductComponent.sol";
|
10
11
|
import {IPoolService} from "./IPoolService.sol";
|
11
12
|
import {IRegistry} from "../registry/IRegistry.sol";
|
12
|
-
import {IRegistryService} from "../registry/IRegistryService.sol";
|
13
13
|
import {IStaking} from "../staking/IStaking.sol";
|
14
14
|
|
15
15
|
import {Amount, AmountLib} from "../type/Amount.sol";
|
16
|
+
import {ClaimId} from "../type/ClaimId.sol";
|
16
17
|
import {Fee, FeeLib} from "../type/Fee.sol";
|
17
|
-
import {NftId
|
18
|
-
import {ObjectType, POOL, BUNDLE,
|
19
|
-
import {RoleId, PUBLIC_ROLE} from "../type/RoleId.sol";
|
18
|
+
import {NftId} from "../type/NftId.sol";
|
19
|
+
import {ObjectType, POOL, BUNDLE, PRODUCT, POLICY, COMPONENT} from "../type/ObjectType.sol";
|
20
20
|
import {Fee, FeeLib} from "../type/Fee.sol";
|
21
21
|
import {KEEP_STATE} from "../type/StateId.sol";
|
22
22
|
import {Seconds} from "../type/Seconds.sol";
|
23
|
-
import {TokenHandler} from "../shared/TokenHandler.sol";
|
24
23
|
import {UFixed} from "../type/UFixed.sol";
|
25
24
|
import {ComponentVerifyingService} from "../shared/ComponentVerifyingService.sol";
|
26
25
|
import {InstanceReader} from "../instance/InstanceReader.sol";
|
@@ -34,9 +33,6 @@ contract PoolService is
|
|
34
33
|
{
|
35
34
|
IBundleService internal _bundleService;
|
36
35
|
IComponentService internal _componentService;
|
37
|
-
IInstanceService private _instanceService;
|
38
|
-
IRegistryService private _registryService;
|
39
|
-
|
40
36
|
IStaking private _staking;
|
41
37
|
|
42
38
|
function _initialize(
|
@@ -44,191 +40,286 @@ contract PoolService is
|
|
44
40
|
bytes memory data
|
45
41
|
)
|
46
42
|
internal
|
47
|
-
initializer
|
48
43
|
virtual override
|
44
|
+
initializer()
|
49
45
|
{
|
50
46
|
(
|
51
|
-
address registryAddress
|
52
|
-
//address managerAddress
|
47
|
+
address registryAddress,
|
53
48
|
address authority
|
54
|
-
) = abi.decode(data, (address, address
|
49
|
+
) = abi.decode(data, (address, address));
|
55
50
|
|
56
|
-
|
51
|
+
_initializeService(registryAddress, authority, owner);
|
57
52
|
|
58
|
-
_registryService = IRegistryService(_getServiceAddress(REGISTRY()));
|
59
53
|
_bundleService = IBundleService(_getServiceAddress(BUNDLE()));
|
60
|
-
_instanceService = IInstanceService(_getServiceAddress(INSTANCE()));
|
61
54
|
_componentService = IComponentService(_getServiceAddress(COMPONENT()));
|
62
|
-
|
63
55
|
_staking = IStaking(getRegistry().getStakingAddress());
|
64
56
|
|
65
|
-
|
57
|
+
_registerInterface(type(IPoolService).interfaceId);
|
66
58
|
}
|
67
59
|
|
68
60
|
|
69
|
-
|
61
|
+
/// @inheritdoc IPoolService
|
62
|
+
function setMaxBalanceAmount(Amount maxBalanceAmount)
|
70
63
|
external
|
71
64
|
virtual
|
72
65
|
{
|
73
|
-
/*
|
74
66
|
(NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
|
75
67
|
InstanceReader instanceReader = instance.getInstanceReader();
|
68
|
+
IComponents.PoolInfo memory poolInfo = instanceReader.getPoolInfo(poolNftId);
|
76
69
|
|
77
|
-
|
78
|
-
|
79
|
-
Amount previousMaxCapitalAmount = poolInfo.maxCapitalAmount;
|
80
|
-
|
81
|
-
poolInfo.maxCapitalAmount = maxCapitalAmount;
|
70
|
+
Amount previousMaxBalanceAmount = poolInfo.maxBalanceAmount;
|
71
|
+
poolInfo.maxBalanceAmount = maxBalanceAmount;
|
82
72
|
instance.getInstanceStore().updatePool(poolNftId, poolInfo, KEEP_STATE());
|
83
73
|
|
84
|
-
emit
|
85
|
-
|
74
|
+
emit LogPoolServiceMaxBalanceAmountUpdated(poolNftId, previousMaxBalanceAmount, maxBalanceAmount);
|
75
|
+
}
|
76
|
+
|
77
|
+
|
78
|
+
/// @inheritdoc IPoolService
|
79
|
+
function createBundle(
|
80
|
+
address bundleOwner, // initial bundle owner
|
81
|
+
Fee memory fee, // fees deducted from premium that go to bundle owner
|
82
|
+
Seconds lifetime, // initial duration for which new policies are covered
|
83
|
+
bytes calldata filter // optional use case specific criteria that define if a policy may be covered by this bundle
|
84
|
+
)
|
85
|
+
external
|
86
|
+
virtual
|
87
|
+
returns(NftId bundleNftId)
|
88
|
+
{
|
89
|
+
(NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
|
90
|
+
|
91
|
+
// create the empty bundle
|
92
|
+
bundleNftId = _bundleService.create(
|
93
|
+
instance,
|
94
|
+
poolNftId,
|
95
|
+
bundleOwner,
|
96
|
+
fee,
|
97
|
+
AmountLib.zero(),
|
98
|
+
lifetime,
|
99
|
+
filter);
|
100
|
+
|
101
|
+
emit LogPoolServiceBundleCreated(instance.getNftId(), poolNftId, bundleNftId);
|
86
102
|
}
|
87
103
|
|
88
|
-
|
104
|
+
|
105
|
+
function closeBundle(NftId bundleNftId)
|
89
106
|
external
|
90
107
|
virtual
|
108
|
+
onlyNftOfType(bundleNftId, BUNDLE())
|
91
109
|
{
|
92
110
|
(NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
|
93
|
-
InstanceReader instanceReader = instance.getInstanceReader();
|
94
111
|
|
95
|
-
|
96
|
-
IComponents.PoolInfo memory poolInfo = abi.decode(componentInfo.data, (IComponents.PoolInfo));
|
112
|
+
// TODO get performance fee for pool (#477)
|
97
113
|
|
98
|
-
//
|
99
|
-
|
100
|
-
revert ErrorPoolServiceBundleOwnerRoleAlreadySet(poolNftId);
|
101
|
-
}
|
114
|
+
// releasing collateral in bundle
|
115
|
+
(Amount unstakedAmount, Amount feeAmount) = _bundleService.close(instance, bundleNftId);
|
102
116
|
|
103
|
-
|
104
|
-
|
117
|
+
_componentService.decreasePoolBalance(
|
118
|
+
instance.getInstanceStore(),
|
119
|
+
poolNftId,
|
120
|
+
unstakedAmount + feeAmount,
|
121
|
+
AmountLib.zero());
|
122
|
+
|
123
|
+
emit LogPoolServiceBundleClosed(instance.getNftId(), poolNftId, bundleNftId);
|
105
124
|
|
106
|
-
|
125
|
+
if ((unstakedAmount + feeAmount).gtz()){
|
126
|
+
IComponents.ComponentInfo memory poolComponentInfo = instance.getInstanceReader().getComponentInfo(poolNftId);
|
127
|
+
poolComponentInfo.tokenHandler.distributeTokens(
|
128
|
+
poolComponentInfo.wallet,
|
129
|
+
getRegistry().ownerOf(bundleNftId),
|
130
|
+
unstakedAmount + feeAmount);
|
131
|
+
}
|
107
132
|
}
|
108
133
|
|
109
134
|
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
135
|
+
/// @inheritdoc IPoolService
|
136
|
+
function processFundedClaim(
|
137
|
+
NftId policyNftId,
|
138
|
+
ClaimId claimId,
|
139
|
+
Amount availableAmount
|
140
|
+
)
|
115
141
|
external
|
116
142
|
virtual
|
143
|
+
onlyNftOfType(policyNftId, POLICY())
|
117
144
|
{
|
118
145
|
(NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
|
146
|
+
InstanceReader instanceReader = instance.getInstanceReader();
|
147
|
+
NftId productNftId = _getProductNftId(poolNftId);
|
148
|
+
|
149
|
+
// check policy matches with calling pool
|
150
|
+
IPolicy.PolicyInfo memory policyInfo = instanceReader.getPolicyInfo(policyNftId);
|
151
|
+
if(policyInfo.productNftId != productNftId) {
|
152
|
+
revert ErrorPoolServicePolicyPoolMismatch(
|
153
|
+
policyNftId,
|
154
|
+
policyInfo.productNftId,
|
155
|
+
productNftId);
|
156
|
+
}
|
119
157
|
|
120
|
-
|
121
|
-
poolInfo.poolFee = poolFee;
|
122
|
-
poolInfo.stakingFee = stakingFee;
|
123
|
-
poolInfo.performanceFee = performanceFee;
|
124
|
-
|
125
|
-
instance.getInstanceStore().updatePool(poolNftId, poolInfo, KEEP_STATE());
|
158
|
+
emit LogPoolServiceProcessFundedClaim(policyNftId, claimId, availableAmount);
|
126
159
|
|
127
|
-
//
|
160
|
+
// callback to product component if applicable
|
161
|
+
if (instanceReader.getProductInfo(productNftId).isProcessingFundedClaims) {
|
162
|
+
address productAddress = getRegistry().getObjectAddress(productNftId);
|
163
|
+
IProductComponent(productAddress).processFundedClaim(policyNftId, claimId, availableAmount);
|
164
|
+
}
|
128
165
|
}
|
129
166
|
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
Amount stakingAmount, // staking amount - staking fees result in initial bundle capital
|
134
|
-
Seconds lifetime, // initial duration for which new policies are covered
|
135
|
-
bytes calldata filter // optional use case specific criteria that define if a policy may be covered by this bundle
|
136
|
-
)
|
167
|
+
|
168
|
+
/// @inheritdoc IPoolService
|
169
|
+
function stake(NftId bundleNftId, Amount amount)
|
137
170
|
external
|
138
171
|
virtual
|
139
|
-
|
172
|
+
// TODO: restricted() (once #462 is done)
|
173
|
+
onlyNftOfType(bundleNftId, BUNDLE())
|
174
|
+
returns(Amount netAmount)
|
140
175
|
{
|
141
176
|
(NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
|
142
177
|
InstanceReader instanceReader = instance.getInstanceReader();
|
178
|
+
IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
|
179
|
+
IComponents.PoolInfo memory poolInfo = instanceReader.getPoolInfo(poolNftId);
|
143
180
|
|
144
|
-
(
|
145
|
-
|
146
|
-
|
147
|
-
) = FeeLib.calculateFee(
|
148
|
-
_getStakingFee(instanceReader, poolNftId),
|
149
|
-
stakingAmount);
|
181
|
+
if (bundleInfo.poolNftId != poolNftId) {
|
182
|
+
revert ErrorPoolServiceBundlePoolMismatch(bundleNftId, poolNftId);
|
183
|
+
}
|
150
184
|
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
lifetime,
|
158
|
-
filter);
|
185
|
+
{
|
186
|
+
Amount currentPoolBalance = instanceReader.getBalanceAmount(poolNftId);
|
187
|
+
if (currentPoolBalance + amount > poolInfo.maxBalanceAmount) {
|
188
|
+
revert ErrorPoolServiceMaxBalanceAmountExceeded(poolNftId, poolInfo.maxBalanceAmount, currentPoolBalance, amount);
|
189
|
+
}
|
190
|
+
}
|
159
191
|
|
160
|
-
//
|
192
|
+
// calculate fees
|
193
|
+
IRegistry registry = getRegistry();
|
194
|
+
Amount feeAmount;
|
195
|
+
|
196
|
+
{
|
197
|
+
NftId productNftId = registry.getObjectInfo(poolNftId).parentNftId;
|
198
|
+
Fee memory stakingFee = instanceReader.getProductInfo(productNftId).stakingFee;
|
199
|
+
(
|
200
|
+
feeAmount,
|
201
|
+
netAmount
|
202
|
+
) = FeeLib.calculateFee(
|
203
|
+
stakingFee,
|
204
|
+
amount);
|
205
|
+
}
|
206
|
+
|
207
|
+
// do all the bookkeeping
|
161
208
|
_componentService.increasePoolBalance(
|
162
209
|
instance.getInstanceStore(),
|
163
210
|
poolNftId,
|
164
|
-
|
165
|
-
|
211
|
+
netAmount,
|
212
|
+
feeAmount);
|
213
|
+
|
214
|
+
_bundleService.stake(instance, bundleNftId, netAmount);
|
166
215
|
|
167
|
-
//
|
216
|
+
// collect tokens from bundle owner
|
217
|
+
address bundleOwner = registry.ownerOf(bundleNftId);
|
218
|
+
emit LogPoolServiceBundleStaked(instance.getNftId(), poolNftId, bundleNftId, amount, netAmount);
|
219
|
+
|
220
|
+
// TODO only collect staking token when pool is not externally managed
|
168
221
|
_collectStakingAmount(
|
169
222
|
instanceReader,
|
170
223
|
poolNftId,
|
171
224
|
bundleOwner,
|
172
|
-
|
173
|
-
|
174
|
-
emit LogPoolServiceBundleCreated(instance.getNftId(), poolNftId, bundleNftId);
|
225
|
+
amount);
|
175
226
|
}
|
176
227
|
|
177
|
-
|
178
|
-
|
228
|
+
/// @inheritdoc IPoolService
|
229
|
+
function unstake(NftId bundleNftId, Amount amount)
|
230
|
+
external
|
179
231
|
virtual
|
180
|
-
|
181
|
-
|
232
|
+
onlyNftOfType(bundleNftId, BUNDLE())
|
233
|
+
// TODO: restricted() (once #462 is done)
|
234
|
+
returns(Amount netAmount)
|
182
235
|
{
|
183
|
-
NftId
|
184
|
-
|
236
|
+
(NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
|
237
|
+
InstanceReader instanceReader = instance.getInstanceReader();
|
238
|
+
InstanceStore instanceStore = instance.getInstanceStore();
|
239
|
+
IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
|
240
|
+
|
241
|
+
if (bundleInfo.poolNftId != poolNftId) {
|
242
|
+
revert ErrorPoolServiceBundlePoolMismatch(bundleNftId, poolNftId);
|
243
|
+
}
|
244
|
+
|
245
|
+
// call bundle service for bookkeeping and additional checks
|
246
|
+
Amount unstakedAmount = _bundleService.unstake(instance, bundleNftId, amount);
|
247
|
+
|
248
|
+
// Important: from now on work only with unstakedAmount as it is the only reliable amount.
|
249
|
+
// if amount was max, this was set to the available amount
|
250
|
+
|
251
|
+
// TODO: handle performance fees (issue #477)
|
252
|
+
|
253
|
+
// update pool bookkeeping - performance fees stay in the pool, but as fees
|
254
|
+
_componentService.decreasePoolBalance(
|
255
|
+
instanceStore,
|
256
|
+
poolNftId,
|
257
|
+
unstakedAmount,
|
258
|
+
AmountLib.zero());
|
259
|
+
|
260
|
+
IComponents.ComponentInfo memory poolComponentInfo = instanceReader.getComponentInfo(poolNftId);
|
261
|
+
|
262
|
+
// transfer amount to bundle owner
|
263
|
+
address owner = getRegistry().ownerOf(bundleNftId);
|
264
|
+
emit LogPoolServiceBundleUnstaked(instance.getNftId(), poolNftId, bundleNftId, unstakedAmount);
|
265
|
+
poolComponentInfo.tokenHandler.distributeTokens(
|
266
|
+
poolComponentInfo.wallet,
|
267
|
+
owner,
|
268
|
+
unstakedAmount);
|
269
|
+
|
270
|
+
return unstakedAmount;
|
185
271
|
}
|
186
272
|
|
187
|
-
|
273
|
+
|
274
|
+
function fundPoolWallet(NftId poolNftId, Amount amount)
|
188
275
|
external
|
189
276
|
virtual
|
277
|
+
restricted()
|
278
|
+
onlyNftOfType(poolNftId, POOL())
|
190
279
|
{
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
// releasing collateral in bundle
|
196
|
-
_bundleService.close(instance, bundleNftId);
|
280
|
+
// TODO check that poolNftId is externally managed
|
281
|
+
// TODO implement
|
282
|
+
}
|
197
283
|
|
198
|
-
// TODO get performance fee for pool, transfer of remaining funds + bundle fees to bundle owner
|
199
284
|
|
200
|
-
|
285
|
+
function defundPoolWallet(NftId poolNftId, Amount amount)
|
286
|
+
external
|
287
|
+
virtual
|
288
|
+
restricted()
|
289
|
+
onlyNftOfType(poolNftId, POOL())
|
290
|
+
{
|
291
|
+
// TODO check that poolNftId is externally managed
|
292
|
+
// TODO implement
|
201
293
|
}
|
202
294
|
|
203
|
-
|
204
295
|
function processSale(
|
205
296
|
NftId bundleNftId,
|
206
|
-
IPolicy.
|
297
|
+
IPolicy.PremiumInfo memory premium
|
207
298
|
)
|
208
299
|
external
|
209
300
|
virtual
|
210
301
|
restricted()
|
302
|
+
onlyNftOfType(bundleNftId, BUNDLE())
|
211
303
|
{
|
212
304
|
IRegistry registry = getRegistry();
|
213
|
-
IRegistry.ObjectInfo memory
|
214
|
-
IRegistry.ObjectInfo memory
|
215
|
-
|
216
|
-
IInstance instance = IInstance(instanceObjectInfo.objectAddress);
|
305
|
+
IRegistry.ObjectInfo memory bundleInfo = registry.getObjectInfo(bundleNftId);
|
306
|
+
IRegistry.ObjectInfo memory poolInfo = registry.getObjectInfo(bundleInfo.parentNftId);
|
307
|
+
IInstance instance = _getInstanceForComponent(registry, poolInfo);
|
217
308
|
|
218
|
-
Amount poolFeeAmount =
|
219
|
-
Amount bundleFeeAmount =
|
220
|
-
Amount bundleNetAmount =
|
309
|
+
Amount poolFeeAmount = premium.poolFeeFixAmount + premium.poolFeeVarAmount;
|
310
|
+
Amount bundleFeeAmount = premium.bundleFeeFixAmount + premium.bundleFeeVarAmount;
|
311
|
+
Amount bundleNetAmount = premium.netPremiumAmount;
|
221
312
|
|
222
313
|
InstanceStore instanceStore = instance.getInstanceStore();
|
223
314
|
_componentService.increasePoolBalance(
|
224
315
|
instanceStore,
|
225
|
-
|
316
|
+
poolInfo.nftId,
|
226
317
|
bundleNetAmount + bundleFeeAmount,
|
227
318
|
poolFeeAmount);
|
228
319
|
|
229
320
|
_componentService.increaseBundleBalance(
|
230
321
|
instanceStore,
|
231
|
-
|
322
|
+
bundleInfo.nftId,
|
232
323
|
bundleNetAmount,
|
233
324
|
bundleFeeAmount);
|
234
325
|
}
|
@@ -245,14 +336,17 @@ contract PoolService is
|
|
245
336
|
external
|
246
337
|
virtual
|
247
338
|
restricted()
|
339
|
+
onlyNftOfType(productNftId, PRODUCT())
|
340
|
+
onlyNftOfType(applicationNftId, POLICY())
|
341
|
+
onlyNftOfType(bundleNftId, BUNDLE())
|
248
342
|
returns (
|
249
|
-
Amount
|
250
|
-
Amount
|
343
|
+
Amount totalCollateralAmount,
|
344
|
+
Amount localCollateralAmount
|
251
345
|
)
|
252
346
|
{
|
253
347
|
(
|
254
|
-
|
255
|
-
|
348
|
+
totalCollateralAmount,
|
349
|
+
localCollateralAmount
|
256
350
|
) = calculateRequiredCollateral(
|
257
351
|
instance.getInstanceReader(),
|
258
352
|
productNftId,
|
@@ -270,16 +364,9 @@ contract PoolService is
|
|
270
364
|
instance.getNftId(),
|
271
365
|
token,
|
272
366
|
totalCollateralAmount);
|
273
|
-
|
274
|
-
// hierarhical riskpool setup
|
275
|
-
// TODO loop in with pool component to guarantee availability of external capital
|
276
|
-
if(totalCollateralAmount > localCollateralAmount) {
|
277
|
-
|
278
|
-
}
|
279
367
|
}
|
280
368
|
|
281
|
-
|
282
|
-
function reduceCollateral(
|
369
|
+
function processPayout(
|
283
370
|
IInstance instance,
|
284
371
|
address token,
|
285
372
|
NftId policyNftId,
|
@@ -289,7 +376,24 @@ contract PoolService is
|
|
289
376
|
external
|
290
377
|
virtual
|
291
378
|
restricted()
|
379
|
+
onlyNftOfType(policyNftId, POLICY())
|
292
380
|
{
|
381
|
+
NftId bundleNftId = policyInfo.bundleNftId;
|
382
|
+
NftId poolNftId = getRegistry().getObjectInfo(bundleNftId).parentNftId;
|
383
|
+
InstanceStore instanceStore = instance.getInstanceStore();
|
384
|
+
|
385
|
+
_componentService.decreasePoolBalance(
|
386
|
+
instanceStore,
|
387
|
+
poolNftId,
|
388
|
+
payoutAmount,
|
389
|
+
AmountLib.zero());
|
390
|
+
|
391
|
+
_componentService.decreaseBundleBalance(
|
392
|
+
instanceStore,
|
393
|
+
bundleNftId,
|
394
|
+
payoutAmount,
|
395
|
+
AmountLib.zero());
|
396
|
+
|
293
397
|
_bundleService.releaseCollateral(
|
294
398
|
instance,
|
295
399
|
policyNftId,
|
@@ -315,6 +419,7 @@ contract PoolService is
|
|
315
419
|
external
|
316
420
|
virtual
|
317
421
|
restricted()
|
422
|
+
onlyNftOfType(policyNftId, POLICY())
|
318
423
|
{
|
319
424
|
Amount remainingCollateralAmount = policyInfo.sumInsuredAmount - policyInfo.claimAmount;
|
320
425
|
|
@@ -343,17 +448,18 @@ contract PoolService is
|
|
343
448
|
)
|
344
449
|
public
|
345
450
|
view
|
451
|
+
onlyNftOfType(productNftId, PRODUCT())
|
346
452
|
returns(
|
347
|
-
Amount
|
348
|
-
Amount
|
453
|
+
Amount totalCollateralAmount,
|
454
|
+
Amount localCollateralAmount
|
349
455
|
)
|
350
456
|
{
|
351
457
|
NftId poolNftId = instanceReader.getProductInfo(productNftId).poolNftId;
|
352
458
|
IComponents.PoolInfo memory poolInfo = instanceReader.getPoolInfo(poolNftId);
|
353
459
|
|
354
460
|
(
|
355
|
-
|
356
|
-
|
461
|
+
totalCollateralAmount,
|
462
|
+
localCollateralAmount
|
357
463
|
) = calculateRequiredCollateral(
|
358
464
|
poolInfo.collateralizationLevel,
|
359
465
|
poolInfo.retentionLevel,
|
@@ -369,18 +475,17 @@ contract PoolService is
|
|
369
475
|
public
|
370
476
|
pure
|
371
477
|
returns(
|
372
|
-
Amount
|
373
|
-
Amount
|
478
|
+
Amount totalCollateralAmount,
|
479
|
+
Amount localCollateralAmount
|
374
480
|
)
|
375
481
|
{
|
376
|
-
//
|
377
|
-
|
378
|
-
|
379
|
-
|
380
|
-
//
|
381
|
-
|
382
|
-
|
383
|
-
totalCollateralAmount = localCollateralAmount;
|
482
|
+
// collateralization is applied to sum insured
|
483
|
+
UFixed totalUFixed = collateralizationLevel * sumInsuredAmount.toUFixed();
|
484
|
+
totalCollateralAmount = AmountLib.toAmount(totalUFixed.toInt());
|
485
|
+
|
486
|
+
// retention level defines how much capital is required locally
|
487
|
+
localCollateralAmount = AmountLib.toAmount(
|
488
|
+
(retentionLevel * totalUFixed).toInt());
|
384
489
|
}
|
385
490
|
|
386
491
|
|
@@ -389,6 +494,7 @@ contract PoolService is
|
|
389
494
|
Amount stakingAmount
|
390
495
|
)
|
391
496
|
internal
|
497
|
+
pure
|
392
498
|
returns (Amount stakingNetAmount)
|
393
499
|
{
|
394
500
|
stakingNetAmount = stakingAmount;
|
@@ -403,7 +509,6 @@ contract PoolService is
|
|
403
509
|
}
|
404
510
|
|
405
511
|
|
406
|
-
// TODO create (I)TreasuryService that deals with all gif related token transfers
|
407
512
|
/// @dev transfers the specified amount from the bundle owner to the pool's wallet
|
408
513
|
function _collectStakingAmount(
|
409
514
|
InstanceReader instanceReader,
|
@@ -416,16 +521,11 @@ contract PoolService is
|
|
416
521
|
|
417
522
|
// collecting investor token
|
418
523
|
IComponents.ComponentInfo memory componentInfo = instanceReader.getComponentInfo(poolNftId);
|
419
|
-
TokenHandler tokenHandler = componentInfo.tokenHandler;
|
420
524
|
address poolWallet = componentInfo.wallet;
|
421
|
-
|
422
|
-
|
423
|
-
|
424
|
-
|
425
|
-
bundleOwner,
|
426
|
-
poolWallet,
|
427
|
-
amount);
|
428
|
-
}
|
525
|
+
componentInfo.tokenHandler.collectTokens(
|
526
|
+
bundleOwner,
|
527
|
+
poolWallet,
|
528
|
+
amount);
|
429
529
|
}
|
430
530
|
|
431
531
|
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);
|