@etherisc/gif-next 0.0.2-f11de3a-698 → 0.0.2-f13c010-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 +5 -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 +190 -292
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +107 -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 +2072 -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 +446 -81
- 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 +335 -126
- 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/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 +103 -274
- 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 +184 -229
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +114 -110
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +65 -32
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +91 -77
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +221 -151
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +102 -260
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +299 -326
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +93 -101
- 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 +260 -140
- 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 +358 -356
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +107 -107
- 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 +376 -287
- package/artifacts/contracts/shared/ComponentServiceHelperLib.sol/ComponentServiceHelperLib.dbg.json +4 -0
- package/artifacts/contracts/shared/ComponentServiceHelperLib.sol/ComponentServiceHelperLib.json +206 -0
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +120 -122
- 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 +346 -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 +407 -11
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +132 -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/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 +26 -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 +2 -2
- 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 +84 -66
- 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 +73 -0
- package/contracts/examples/fire/FirePoolAuthorization.sol +34 -0
- package/contracts/examples/fire/FireProduct.sol +415 -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 +45 -32
- package/contracts/instance/InstanceAuthorizationV3.sol +11 -21
- package/contracts/instance/InstanceReader.sol +107 -25
- package/contracts/instance/InstanceService.sol +67 -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/IComponents.sol +10 -5
- package/contracts/instance/module/IPolicy.sol +24 -24
- 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 +16 -28
- package/contracts/pool/BasicPoolAuthorization.sol +1 -2
- package/contracts/pool/BundleService.sol +108 -57
- package/contracts/pool/BundleServiceManager.sol +6 -6
- package/contracts/pool/IBundleService.sol +14 -4
- package/contracts/pool/IPoolComponent.sol +18 -8
- package/contracts/pool/IPoolService.sol +49 -31
- package/contracts/pool/Pool.sol +54 -47
- package/contracts/pool/PoolService.sol +180 -162
- package/contracts/pool/PoolServiceManager.sol +4 -4
- package/contracts/product/ApplicationService.sol +59 -30
- package/contracts/product/ApplicationServiceManager.sol +4 -4
- package/contracts/product/BasicProduct.sol +7 -6
- package/contracts/product/BasicProductAuthorization.sol +0 -1
- package/contracts/product/ClaimService.sol +313 -118
- 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 +31 -35
- 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 +374 -212
- package/contracts/product/PolicyServiceManager.sol +4 -4
- package/contracts/product/PricingService.sol +54 -54
- package/contracts/product/PricingServiceManager.sol +3 -3
- package/contracts/product/Product.sol +117 -73
- 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 +45 -54
- package/contracts/shared/ComponentService.sol +217 -182
- package/contracts/shared/ComponentServiceHelperLib.sol +118 -0
- 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 +26 -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 +27 -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 +144 -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 +25 -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/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 +8 -0
- package/contracts/type/StateId.sol +15 -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,29 +1,25 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
2
|
pragma solidity ^0.8.20;
|
3
3
|
|
4
|
-
import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
|
5
|
-
|
6
4
|
import {IBundle} from "../instance/module/IBundle.sol";
|
7
5
|
import {IBundleService} from "./IBundleService.sol";
|
8
6
|
import {IComponents} from "../instance/module/IComponents.sol";
|
9
7
|
import {IComponentService} from "../shared/IComponentService.sol";
|
10
8
|
import {IInstance} from "../instance/IInstance.sol";
|
11
|
-
import {IInstanceService} from "../instance/IInstanceService.sol";
|
12
9
|
import {IPolicy} from "../instance/module/IPolicy.sol";
|
10
|
+
import {IProductComponent} from "../product/IProductComponent.sol";
|
13
11
|
import {IPoolService} from "./IPoolService.sol";
|
14
12
|
import {IRegistry} from "../registry/IRegistry.sol";
|
15
|
-
import {IRegistryService} from "../registry/IRegistryService.sol";
|
16
13
|
import {IStaking} from "../staking/IStaking.sol";
|
17
14
|
|
18
15
|
import {Amount, AmountLib} from "../type/Amount.sol";
|
16
|
+
import {ClaimId} from "../type/ClaimId.sol";
|
19
17
|
import {Fee, FeeLib} from "../type/Fee.sol";
|
20
|
-
import {NftId
|
21
|
-
import {ObjectType, POOL, BUNDLE,
|
22
|
-
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";
|
23
20
|
import {Fee, FeeLib} from "../type/Fee.sol";
|
24
21
|
import {KEEP_STATE} from "../type/StateId.sol";
|
25
22
|
import {Seconds} from "../type/Seconds.sol";
|
26
|
-
import {TokenHandler} from "../shared/TokenHandler.sol";
|
27
23
|
import {UFixed} from "../type/UFixed.sol";
|
28
24
|
import {ComponentVerifyingService} from "../shared/ComponentVerifyingService.sol";
|
29
25
|
import {InstanceReader} from "../instance/InstanceReader.sol";
|
@@ -37,9 +33,6 @@ contract PoolService is
|
|
37
33
|
{
|
38
34
|
IBundleService internal _bundleService;
|
39
35
|
IComponentService internal _componentService;
|
40
|
-
IInstanceService private _instanceService;
|
41
|
-
IRegistryService private _registryService;
|
42
|
-
|
43
36
|
IStaking private _staking;
|
44
37
|
|
45
38
|
function _initialize(
|
@@ -47,27 +40,24 @@ contract PoolService is
|
|
47
40
|
bytes memory data
|
48
41
|
)
|
49
42
|
internal
|
50
|
-
initializer
|
51
43
|
virtual override
|
44
|
+
initializer()
|
52
45
|
{
|
53
46
|
(
|
54
|
-
address registryAddress
|
55
|
-
//address managerAddress
|
47
|
+
address registryAddress,
|
56
48
|
address authority
|
57
|
-
) = abi.decode(data, (address, address
|
49
|
+
) = abi.decode(data, (address, address));
|
58
50
|
|
59
|
-
|
51
|
+
_initializeService(registryAddress, authority, owner);
|
60
52
|
|
61
|
-
_registryService = IRegistryService(_getServiceAddress(REGISTRY()));
|
62
53
|
_bundleService = IBundleService(_getServiceAddress(BUNDLE()));
|
63
|
-
_instanceService = IInstanceService(_getServiceAddress(INSTANCE()));
|
64
54
|
_componentService = IComponentService(_getServiceAddress(COMPONENT()));
|
65
|
-
|
66
55
|
_staking = IStaking(getRegistry().getStakingAddress());
|
67
56
|
|
68
|
-
|
57
|
+
_registerInterface(type(IPoolService).interfaceId);
|
69
58
|
}
|
70
59
|
|
60
|
+
|
71
61
|
/// @inheritdoc IPoolService
|
72
62
|
function setMaxBalanceAmount(Amount maxBalanceAmount)
|
73
63
|
external
|
@@ -75,111 +65,108 @@ contract PoolService is
|
|
75
65
|
{
|
76
66
|
(NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
|
77
67
|
InstanceReader instanceReader = instance.getInstanceReader();
|
68
|
+
IComponents.PoolInfo memory poolInfo = instanceReader.getPoolInfo(poolNftId);
|
78
69
|
|
79
|
-
IComponents.ComponentInfo memory componentInfo = instanceReader.getComponentInfo(poolNftId);
|
80
|
-
IComponents.PoolInfo memory poolInfo = abi.decode(componentInfo.data, (IComponents.PoolInfo));
|
81
70
|
Amount previousMaxBalanceAmount = poolInfo.maxBalanceAmount;
|
82
|
-
|
83
71
|
poolInfo.maxBalanceAmount = maxBalanceAmount;
|
84
72
|
instance.getInstanceStore().updatePool(poolNftId, poolInfo, KEEP_STATE());
|
85
73
|
|
86
74
|
emit LogPoolServiceMaxBalanceAmountUpdated(poolNftId, previousMaxBalanceAmount, maxBalanceAmount);
|
87
75
|
}
|
88
76
|
|
89
|
-
function setBundleOwnerRole(RoleId bundleOwnerRole)
|
90
|
-
external
|
91
|
-
virtual
|
92
|
-
{
|
93
|
-
(NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
|
94
|
-
InstanceReader instanceReader = instance.getInstanceReader();
|
95
|
-
|
96
|
-
IComponents.ComponentInfo memory componentInfo = instanceReader.getComponentInfo(poolNftId);
|
97
|
-
IComponents.PoolInfo memory poolInfo = abi.decode(componentInfo.data, (IComponents.PoolInfo));
|
98
|
-
|
99
|
-
// bundle owner role may only be set once per pool
|
100
|
-
if(poolInfo.bundleOwnerRole != PUBLIC_ROLE()) {
|
101
|
-
revert ErrorPoolServiceBundleOwnerRoleAlreadySet(poolNftId);
|
102
|
-
}
|
103
|
-
|
104
|
-
poolInfo.bundleOwnerRole = bundleOwnerRole;
|
105
|
-
instance.getInstanceStore().updatePool(poolNftId, poolInfo, KEEP_STATE());
|
106
|
-
|
107
|
-
emit LogPoolServiceBundleOwnerRoleSet(poolNftId, bundleOwnerRole);
|
108
|
-
}
|
109
77
|
|
110
78
|
/// @inheritdoc IPoolService
|
111
79
|
function createBundle(
|
112
80
|
address bundleOwner, // initial bundle owner
|
113
81
|
Fee memory fee, // fees deducted from premium that go to bundle owner
|
114
|
-
Amount stakingAmount, // staking amount - staking fees result in initial bundle capital
|
115
82
|
Seconds lifetime, // initial duration for which new policies are covered
|
116
83
|
bytes calldata filter // optional use case specific criteria that define if a policy may be covered by this bundle
|
117
84
|
)
|
118
85
|
external
|
119
86
|
virtual
|
120
|
-
returns(NftId bundleNftId
|
87
|
+
returns(NftId bundleNftId)
|
121
88
|
{
|
122
89
|
(NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
|
123
|
-
|
124
|
-
Amount stakingFeeAmount;
|
125
|
-
(stakingFeeAmount, netStakedAmount) = FeeLib.calculateFee(
|
126
|
-
_getStakingFee(instance.getInstanceReader(), poolNftId),
|
127
|
-
stakingAmount);
|
128
|
-
|
129
|
-
// TODO: (staking amount + existing pool balance) must be be > maxCapitalAmount
|
130
90
|
|
91
|
+
// create the empty bundle
|
131
92
|
bundleNftId = _bundleService.create(
|
132
93
|
instance,
|
133
94
|
poolNftId,
|
134
95
|
bundleOwner,
|
135
96
|
fee,
|
136
|
-
|
97
|
+
AmountLib.zero(),
|
137
98
|
lifetime,
|
138
99
|
filter);
|
139
100
|
|
140
|
-
// pool book keeping
|
141
|
-
_componentService.increasePoolBalance(
|
142
|
-
instance.getInstanceStore(),
|
143
|
-
poolNftId,
|
144
|
-
netStakedAmount,
|
145
|
-
stakingFeeAmount);
|
146
|
-
|
147
|
-
// pool bookkeeping and collect tokens from bundle owner
|
148
|
-
_collectStakingAmount(
|
149
|
-
instance.getInstanceReader(),
|
150
|
-
poolNftId,
|
151
|
-
bundleOwner,
|
152
|
-
stakingAmount);
|
153
|
-
|
154
101
|
emit LogPoolServiceBundleCreated(instance.getNftId(), poolNftId, bundleNftId);
|
155
102
|
}
|
156
103
|
|
157
|
-
function _getStakingFee(InstanceReader instanceReader, NftId poolNftId)
|
158
|
-
internal
|
159
|
-
virtual
|
160
|
-
view
|
161
|
-
returns (Fee memory stakingFee)
|
162
|
-
{
|
163
|
-
NftId productNftId = instanceReader.getComponentInfo(poolNftId).productNftId;
|
164
|
-
return instanceReader.getProductInfo(productNftId).stakingFee;
|
165
|
-
}
|
166
104
|
|
167
105
|
function closeBundle(NftId bundleNftId)
|
168
106
|
external
|
169
107
|
virtual
|
170
108
|
{
|
109
|
+
_checkNftType(bundleNftId, BUNDLE());
|
110
|
+
|
171
111
|
(NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
|
172
112
|
|
173
|
-
// TODO
|
113
|
+
// TODO get performance fee for pool (#477)
|
174
114
|
|
175
115
|
// releasing collateral in bundle
|
176
|
-
_bundleService.close(instance, bundleNftId);
|
177
|
-
|
178
|
-
// TODO get performance fee for pool, transfer of remaining funds + bundle fees to bundle owner
|
116
|
+
(Amount unstakedAmount, Amount feeAmount) = _bundleService.close(instance, bundleNftId);
|
179
117
|
|
118
|
+
_componentService.decreasePoolBalance(
|
119
|
+
instance.getInstanceStore(),
|
120
|
+
poolNftId,
|
121
|
+
unstakedAmount + feeAmount,
|
122
|
+
AmountLib.zero());
|
123
|
+
|
180
124
|
emit LogPoolServiceBundleClosed(instance.getNftId(), poolNftId, bundleNftId);
|
125
|
+
|
126
|
+
if ((unstakedAmount + feeAmount).gtz()){
|
127
|
+
IComponents.ComponentInfo memory poolComponentInfo = instance.getInstanceReader().getComponentInfo(poolNftId);
|
128
|
+
poolComponentInfo.tokenHandler.distributeTokens(
|
129
|
+
poolComponentInfo.wallet,
|
130
|
+
getRegistry().ownerOf(bundleNftId),
|
131
|
+
unstakedAmount + feeAmount);
|
132
|
+
}
|
181
133
|
}
|
182
134
|
|
135
|
+
|
136
|
+
/// @inheritdoc IPoolService
|
137
|
+
function processFundedClaim(
|
138
|
+
NftId policyNftId,
|
139
|
+
ClaimId claimId,
|
140
|
+
Amount availableAmount
|
141
|
+
)
|
142
|
+
external
|
143
|
+
virtual
|
144
|
+
{
|
145
|
+
_checkNftType(policyNftId, POLICY());
|
146
|
+
|
147
|
+
(NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
|
148
|
+
InstanceReader instanceReader = instance.getInstanceReader();
|
149
|
+
NftId productNftId = _getProductNftId(poolNftId);
|
150
|
+
|
151
|
+
// check policy matches with calling pool
|
152
|
+
IPolicy.PolicyInfo memory policyInfo = instanceReader.getPolicyInfo(policyNftId);
|
153
|
+
if(policyInfo.productNftId != productNftId) {
|
154
|
+
revert ErrorPoolServicePolicyPoolMismatch(
|
155
|
+
policyNftId,
|
156
|
+
policyInfo.productNftId,
|
157
|
+
productNftId);
|
158
|
+
}
|
159
|
+
|
160
|
+
emit LogPoolServiceProcessFundedClaim(policyNftId, claimId, availableAmount);
|
161
|
+
|
162
|
+
// callback to product component if applicable
|
163
|
+
if (instanceReader.getProductInfo(productNftId).isProcessingFundedClaims) {
|
164
|
+
address productAddress = getRegistry().getObjectAddress(productNftId);
|
165
|
+
IProductComponent(productAddress).processFundedClaim(policyNftId, claimId, availableAmount);
|
166
|
+
}
|
167
|
+
}
|
168
|
+
|
169
|
+
|
183
170
|
/// @inheritdoc IPoolService
|
184
171
|
function stake(NftId bundleNftId, Amount amount)
|
185
172
|
external
|
@@ -187,6 +174,8 @@ contract PoolService is
|
|
187
174
|
// TODO: restricted() (once #462 is done)
|
188
175
|
returns(Amount netAmount)
|
189
176
|
{
|
177
|
+
_checkNftType(bundleNftId, BUNDLE());
|
178
|
+
|
190
179
|
(NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
|
191
180
|
InstanceReader instanceReader = instance.getInstanceReader();
|
192
181
|
IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
|
@@ -196,18 +185,27 @@ contract PoolService is
|
|
196
185
|
revert ErrorPoolServiceBundlePoolMismatch(bundleNftId, poolNftId);
|
197
186
|
}
|
198
187
|
|
199
|
-
|
200
|
-
|
201
|
-
|
188
|
+
{
|
189
|
+
Amount currentPoolBalance = instanceReader.getBalanceAmount(poolNftId);
|
190
|
+
if (currentPoolBalance + amount > poolInfo.maxBalanceAmount) {
|
191
|
+
revert ErrorPoolServiceMaxBalanceAmountExceeded(poolNftId, poolInfo.maxBalanceAmount, currentPoolBalance, amount);
|
192
|
+
}
|
202
193
|
}
|
203
194
|
|
204
195
|
// calculate fees
|
205
|
-
(
|
206
|
-
|
207
|
-
|
208
|
-
|
209
|
-
|
210
|
-
|
196
|
+
IRegistry registry = getRegistry();
|
197
|
+
Amount feeAmount;
|
198
|
+
|
199
|
+
{
|
200
|
+
NftId productNftId = registry.getObjectInfo(poolNftId).parentNftId;
|
201
|
+
Fee memory stakingFee = instanceReader.getProductInfo(productNftId).stakingFee;
|
202
|
+
(
|
203
|
+
feeAmount,
|
204
|
+
netAmount
|
205
|
+
) = FeeLib.calculateFee(
|
206
|
+
stakingFee,
|
207
|
+
amount);
|
208
|
+
}
|
211
209
|
|
212
210
|
// do all the bookkeeping
|
213
211
|
_componentService.increasePoolBalance(
|
@@ -219,14 +217,15 @@ contract PoolService is
|
|
219
217
|
_bundleService.stake(instance, bundleNftId, netAmount);
|
220
218
|
|
221
219
|
// collect tokens from bundle owner
|
222
|
-
address bundleOwner =
|
220
|
+
address bundleOwner = registry.ownerOf(bundleNftId);
|
221
|
+
emit LogPoolServiceBundleStaked(instance.getNftId(), poolNftId, bundleNftId, amount, netAmount);
|
222
|
+
|
223
|
+
// TODO only collect staking token when pool is not externally managed
|
223
224
|
_collectStakingAmount(
|
224
225
|
instanceReader,
|
225
226
|
poolNftId,
|
226
227
|
bundleOwner,
|
227
228
|
amount);
|
228
|
-
|
229
|
-
emit LogPoolServiceBundleStaked(instance.getNftId(), poolNftId, bundleNftId, amount, netAmount);
|
230
229
|
}
|
231
230
|
|
232
231
|
/// @inheritdoc IPoolService
|
@@ -236,6 +235,8 @@ contract PoolService is
|
|
236
235
|
// TODO: restricted() (once #462 is done)
|
237
236
|
returns(Amount netAmount)
|
238
237
|
{
|
238
|
+
_checkNftType(bundleNftId, BUNDLE());
|
239
|
+
|
239
240
|
(NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
|
240
241
|
InstanceReader instanceReader = instance.getInstanceReader();
|
241
242
|
InstanceStore instanceStore = instance.getInstanceStore();
|
@@ -245,10 +246,6 @@ contract PoolService is
|
|
245
246
|
revert ErrorPoolServiceBundlePoolMismatch(bundleNftId, poolNftId);
|
246
247
|
}
|
247
248
|
|
248
|
-
if (amount.eqz()) {
|
249
|
-
revert ErrorPoolServiceAmountIsZero();
|
250
|
-
}
|
251
|
-
|
252
249
|
// call bundle service for bookkeeping and additional checks
|
253
250
|
Amount unstakedAmount = _bundleService.unstake(instance, bundleNftId, amount);
|
254
251
|
|
@@ -265,55 +262,70 @@ contract PoolService is
|
|
265
262
|
AmountLib.zero());
|
266
263
|
|
267
264
|
IComponents.ComponentInfo memory poolComponentInfo = instanceReader.getComponentInfo(poolNftId);
|
268
|
-
address poolWallet = poolComponentInfo.wallet;
|
269
|
-
|
270
|
-
// check allowance
|
271
|
-
{
|
272
|
-
IERC20Metadata token = IERC20Metadata(poolComponentInfo.token);
|
273
|
-
uint256 tokenAllowance = token.allowance(poolWallet, address(poolComponentInfo.tokenHandler));
|
274
|
-
if (tokenAllowance < unstakedAmount.toInt()) {
|
275
|
-
revert ErrorPoolServiceWalletAllowanceTooSmall(poolWallet, address(poolComponentInfo.tokenHandler), tokenAllowance, amount.toInt());
|
276
|
-
}
|
277
|
-
}
|
278
265
|
|
279
266
|
// transfer amount to bundle owner
|
280
267
|
address owner = getRegistry().ownerOf(bundleNftId);
|
281
|
-
// TODO: centralize token handling (issue #471)
|
282
|
-
poolComponentInfo.tokenHandler.transfer(poolWallet, owner, unstakedAmount);
|
283
|
-
|
284
268
|
emit LogPoolServiceBundleUnstaked(instance.getNftId(), poolNftId, bundleNftId, unstakedAmount);
|
269
|
+
poolComponentInfo.tokenHandler.distributeTokens(
|
270
|
+
poolComponentInfo.wallet,
|
271
|
+
owner,
|
272
|
+
unstakedAmount);
|
285
273
|
|
286
274
|
return unstakedAmount;
|
287
275
|
}
|
288
276
|
|
277
|
+
|
278
|
+
function fundPoolWallet(NftId poolNftId, Amount amount)
|
279
|
+
external
|
280
|
+
virtual
|
281
|
+
restricted()
|
282
|
+
{
|
283
|
+
_checkNftType(poolNftId, POOL());
|
284
|
+
// TODO check that poolNftId is externally managed
|
285
|
+
// TODO implement
|
286
|
+
}
|
287
|
+
|
288
|
+
|
289
|
+
function defundPoolWallet(NftId poolNftId, Amount amount)
|
290
|
+
external
|
291
|
+
virtual
|
292
|
+
restricted()
|
293
|
+
{
|
294
|
+
_checkNftType(poolNftId, POOL());
|
295
|
+
|
296
|
+
// TODO check that poolNftId is externally managed
|
297
|
+
// TODO implement
|
298
|
+
}
|
299
|
+
|
289
300
|
function processSale(
|
290
301
|
NftId bundleNftId,
|
291
|
-
IPolicy.
|
302
|
+
IPolicy.PremiumInfo memory premium
|
292
303
|
)
|
293
304
|
external
|
294
305
|
virtual
|
295
306
|
restricted()
|
296
307
|
{
|
308
|
+
_checkNftType(bundleNftId, BUNDLE());
|
309
|
+
|
297
310
|
IRegistry registry = getRegistry();
|
298
|
-
IRegistry.ObjectInfo memory
|
299
|
-
IRegistry.ObjectInfo memory
|
300
|
-
|
301
|
-
IInstance instance = IInstance(instanceObjectInfo.objectAddress);
|
311
|
+
IRegistry.ObjectInfo memory bundleInfo = registry.getObjectInfo(bundleNftId);
|
312
|
+
IRegistry.ObjectInfo memory poolInfo = registry.getObjectInfo(bundleInfo.parentNftId);
|
313
|
+
IInstance instance = _getInstanceForComponent(registry, poolInfo);
|
302
314
|
|
303
|
-
Amount poolFeeAmount =
|
304
|
-
Amount bundleFeeAmount =
|
305
|
-
Amount bundleNetAmount =
|
315
|
+
Amount poolFeeAmount = premium.poolFeeFixAmount + premium.poolFeeVarAmount;
|
316
|
+
Amount bundleFeeAmount = premium.bundleFeeFixAmount + premium.bundleFeeVarAmount;
|
317
|
+
Amount bundleNetAmount = premium.netPremiumAmount;
|
306
318
|
|
307
319
|
InstanceStore instanceStore = instance.getInstanceStore();
|
308
320
|
_componentService.increasePoolBalance(
|
309
321
|
instanceStore,
|
310
|
-
|
322
|
+
poolInfo.nftId,
|
311
323
|
bundleNetAmount + bundleFeeAmount,
|
312
324
|
poolFeeAmount);
|
313
325
|
|
314
326
|
_componentService.increaseBundleBalance(
|
315
327
|
instanceStore,
|
316
|
-
|
328
|
+
bundleInfo.nftId,
|
317
329
|
bundleNetAmount,
|
318
330
|
bundleFeeAmount);
|
319
331
|
}
|
@@ -331,13 +343,17 @@ contract PoolService is
|
|
331
343
|
virtual
|
332
344
|
restricted()
|
333
345
|
returns (
|
334
|
-
Amount
|
335
|
-
Amount
|
346
|
+
Amount totalCollateralAmount,
|
347
|
+
Amount localCollateralAmount
|
336
348
|
)
|
337
349
|
{
|
350
|
+
_checkNftType(productNftId, PRODUCT());
|
351
|
+
_checkNftType(applicationNftId, POLICY());
|
352
|
+
_checkNftType(bundleNftId, BUNDLE());
|
353
|
+
|
338
354
|
(
|
339
|
-
|
340
|
-
|
355
|
+
totalCollateralAmount,
|
356
|
+
localCollateralAmount
|
341
357
|
) = calculateRequiredCollateral(
|
342
358
|
instance.getInstanceReader(),
|
343
359
|
productNftId,
|
@@ -355,16 +371,9 @@ contract PoolService is
|
|
355
371
|
instance.getNftId(),
|
356
372
|
token,
|
357
373
|
totalCollateralAmount);
|
358
|
-
|
359
|
-
// hierarhical riskpool setup
|
360
|
-
// TODO loop in with pool component to guarantee availability of external capital
|
361
|
-
if(totalCollateralAmount > localCollateralAmount) {
|
362
|
-
|
363
|
-
}
|
364
374
|
}
|
365
375
|
|
366
|
-
|
367
|
-
function reduceCollateral(
|
376
|
+
function processPayout(
|
368
377
|
IInstance instance,
|
369
378
|
address token,
|
370
379
|
NftId policyNftId,
|
@@ -375,6 +384,24 @@ contract PoolService is
|
|
375
384
|
virtual
|
376
385
|
restricted()
|
377
386
|
{
|
387
|
+
_checkNftType(policyNftId, POLICY());
|
388
|
+
|
389
|
+
NftId bundleNftId = policyInfo.bundleNftId;
|
390
|
+
NftId poolNftId = getRegistry().getObjectInfo(bundleNftId).parentNftId;
|
391
|
+
InstanceStore instanceStore = instance.getInstanceStore();
|
392
|
+
|
393
|
+
_componentService.decreasePoolBalance(
|
394
|
+
instanceStore,
|
395
|
+
poolNftId,
|
396
|
+
payoutAmount,
|
397
|
+
AmountLib.zero());
|
398
|
+
|
399
|
+
_componentService.decreaseBundleBalance(
|
400
|
+
instanceStore,
|
401
|
+
bundleNftId,
|
402
|
+
payoutAmount,
|
403
|
+
AmountLib.zero());
|
404
|
+
|
378
405
|
_bundleService.releaseCollateral(
|
379
406
|
instance,
|
380
407
|
policyNftId,
|
@@ -401,6 +428,8 @@ contract PoolService is
|
|
401
428
|
virtual
|
402
429
|
restricted()
|
403
430
|
{
|
431
|
+
_checkNftType(policyNftId, POLICY());
|
432
|
+
|
404
433
|
Amount remainingCollateralAmount = policyInfo.sumInsuredAmount - policyInfo.claimAmount;
|
405
434
|
|
406
435
|
_bundleService.releaseCollateral(
|
@@ -429,16 +458,18 @@ contract PoolService is
|
|
429
458
|
public
|
430
459
|
view
|
431
460
|
returns(
|
432
|
-
Amount
|
433
|
-
Amount
|
461
|
+
Amount totalCollateralAmount,
|
462
|
+
Amount localCollateralAmount
|
434
463
|
)
|
435
464
|
{
|
465
|
+
_checkNftType(productNftId, PRODUCT());
|
466
|
+
|
436
467
|
NftId poolNftId = instanceReader.getProductInfo(productNftId).poolNftId;
|
437
468
|
IComponents.PoolInfo memory poolInfo = instanceReader.getPoolInfo(poolNftId);
|
438
469
|
|
439
470
|
(
|
440
|
-
|
441
|
-
|
471
|
+
totalCollateralAmount,
|
472
|
+
localCollateralAmount
|
442
473
|
) = calculateRequiredCollateral(
|
443
474
|
poolInfo.collateralizationLevel,
|
444
475
|
poolInfo.retentionLevel,
|
@@ -454,18 +485,17 @@ contract PoolService is
|
|
454
485
|
public
|
455
486
|
pure
|
456
487
|
returns(
|
457
|
-
Amount
|
458
|
-
Amount
|
488
|
+
Amount totalCollateralAmount,
|
489
|
+
Amount localCollateralAmount
|
459
490
|
)
|
460
491
|
{
|
461
|
-
//
|
462
|
-
|
463
|
-
|
464
|
-
|
465
|
-
//
|
466
|
-
|
467
|
-
|
468
|
-
totalCollateralAmount = localCollateralAmount;
|
492
|
+
// collateralization is applied to sum insured
|
493
|
+
UFixed totalUFixed = collateralizationLevel * sumInsuredAmount.toUFixed();
|
494
|
+
totalCollateralAmount = AmountLib.toAmount(totalUFixed.toInt());
|
495
|
+
|
496
|
+
// retention level defines how much capital is required locally
|
497
|
+
localCollateralAmount = AmountLib.toAmount(
|
498
|
+
(retentionLevel * totalUFixed).toInt());
|
469
499
|
}
|
470
500
|
|
471
501
|
|
@@ -474,6 +504,7 @@ contract PoolService is
|
|
474
504
|
Amount stakingAmount
|
475
505
|
)
|
476
506
|
internal
|
507
|
+
pure
|
477
508
|
returns (Amount stakingNetAmount)
|
478
509
|
{
|
479
510
|
stakingNetAmount = stakingAmount;
|
@@ -488,7 +519,6 @@ contract PoolService is
|
|
488
519
|
}
|
489
520
|
|
490
521
|
|
491
|
-
// TODO create (I)TreasuryService that deals with all gif related token transfers
|
492
522
|
/// @dev transfers the specified amount from the bundle owner to the pool's wallet
|
493
523
|
function _collectStakingAmount(
|
494
524
|
InstanceReader instanceReader,
|
@@ -501,23 +531,11 @@ contract PoolService is
|
|
501
531
|
|
502
532
|
// collecting investor token
|
503
533
|
IComponents.ComponentInfo memory componentInfo = instanceReader.getComponentInfo(poolNftId);
|
504
|
-
TokenHandler tokenHandler = componentInfo.tokenHandler;
|
505
534
|
address poolWallet = componentInfo.wallet;
|
506
|
-
|
507
|
-
|
508
|
-
|
509
|
-
|
510
|
-
revert ErrorPoolServiceWalletAllowanceTooSmall(bundleOwner, address(tokenHandler), allowance, amount.toInt());
|
511
|
-
}
|
512
|
-
|
513
|
-
// TODO: centralize token handling (issue #471)
|
514
|
-
tokenHandler.transfer(
|
515
|
-
bundleOwner,
|
516
|
-
poolWallet,
|
517
|
-
amount);
|
518
|
-
} else {
|
519
|
-
revert ErrorPoolServiceAmountIsZero();
|
520
|
-
}
|
535
|
+
componentInfo.tokenHandler.collectTokens(
|
536
|
+
bundleOwner,
|
537
|
+
poolWallet,
|
538
|
+
amount);
|
521
539
|
}
|
522
540
|
|
523
541
|
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);
|