@etherisc/gif-next 0.0.2-93a7619-595 → 0.0.2-93ee1cf-782
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 +27 -6
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +96 -37
- package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.dbg.json +4 -0
- package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.json +24 -0
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
- package/artifacts/contracts/authorization/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 -13
- 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 +143 -182
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +77 -17
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +83 -98
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +175 -86
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +104 -60
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +73 -83
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +52 -0
- package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +113 -196
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +114 -22
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +215 -235
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +81 -25
- package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +155 -157
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +114 -129
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +230 -190
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +508 -228
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +147 -42
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +98 -30
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +53 -88
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +131 -42
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +168 -125
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +58 -85
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +327 -84
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +113 -135
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +72 -40
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +172 -111
- package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +4 -0
- package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +810 -0
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
- package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
- package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +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 +102 -141
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +77 -17
- 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 +68 -78
- 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 +78 -93
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +142 -79
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +92 -36
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +78 -121
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +114 -22
- package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +143 -214
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +84 -84
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +48 -57
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +68 -117
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +106 -88
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +78 -132
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +195 -188
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +87 -51
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +114 -45
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +68 -36
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +123 -94
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +77 -17
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +175 -88
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +97 -61
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +63 -7
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +66 -0
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +67 -19
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +80 -51
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +109 -75
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +1 -1
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.json +29 -0
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +174 -129
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +96 -56
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +165 -107
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +85 -45
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/product/Product.sol/Product.json +119 -90
- package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +1 -1
- package/artifacts/contracts/product/RiskService.sol/RiskService.json +76 -26
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +66 -30
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +2 -2
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +72 -15
- 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 +116 -51
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +206 -165
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +161 -61
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +65 -29
- 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 +123 -225
- 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 +76 -87
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +442 -180
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +115 -63
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +42 -0
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +1 -1
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +402 -6
- package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +4 -0
- package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.json +24 -0
- package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +4 -0
- package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.json +30 -0
- package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponent.sol/IComponent.json +66 -72
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +388 -19
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +68 -78
- 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/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/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +78 -93
- 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 +18 -2
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +2 -2
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +66 -8
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -2
- package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
- package/artifacts/contracts/shared/Service.sol/Service.json +42 -0
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +388 -35
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +4 -0
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +395 -0
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +88 -24
- package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
- package/artifacts/contracts/staking/IStaking.sol/IStaking.json +84 -108
- 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 +2 -2
- package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
- package/artifacts/contracts/staking/Staking.sol/Staking.json +154 -187
- 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 +81 -51
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +2 -2
- package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingService.sol/StakingService.json +82 -53
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +69 -33
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +144 -103
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +2 -2
- 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/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +2 -2
- package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
- package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
- package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
- package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
- package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
- package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +4 -0
- package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +33 -0
- package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/NftId.sol/NftIdLib.json +23 -4
- package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
- package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
- package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
- package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +2 -2
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +2 -2
- package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
- package/artifacts/contracts/type/Referral.sol/ReferralLib.json +2 -2
- package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +2 -2
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +43 -5
- 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/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/UFixed.sol/MathLib.dbg.json +1 -1
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
- 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 +44 -12
- 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 +86 -62
- package/contracts/authorization/Authorization.sol +106 -38
- package/contracts/authorization/IAccess.sol +1 -0
- package/contracts/authorization/IAccessAdmin.sol +4 -2
- 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 +4 -3
- package/contracts/distribution/BasicDistributionAuthorization.sol +1 -1
- package/contracts/distribution/Distribution.sol +11 -22
- package/contracts/distribution/DistributionService.sol +69 -51
- package/contracts/distribution/IDistributionComponent.sol +1 -1
- package/contracts/distribution/IDistributionService.sol +5 -6
- package/contracts/examples/fire/FirePool.sol +19 -8
- package/contracts/examples/fire/FireProduct.sol +33 -13
- package/contracts/examples/fire/FireProductAuthorization.sol +1 -2
- package/contracts/examples/unpermissioned/SimpleDistribution.sol +12 -4
- package/contracts/examples/unpermissioned/SimpleOracle.sol +4 -4
- package/contracts/examples/unpermissioned/SimplePool.sol +38 -6
- package/contracts/examples/unpermissioned/SimpleProduct.sol +17 -23
- package/contracts/instance/BundleSet.sol +38 -34
- package/contracts/instance/IInstance.sol +10 -1
- package/contracts/instance/IInstanceService.sol +7 -25
- package/contracts/instance/Instance.sol +34 -22
- package/contracts/instance/InstanceAdmin.sol +20 -30
- package/contracts/instance/InstanceAuthorizationV3.sol +38 -25
- package/contracts/instance/InstanceReader.sol +85 -1
- package/contracts/instance/InstanceService.sol +46 -87
- package/contracts/instance/RiskSet.sol +119 -0
- package/contracts/instance/base/ObjectLifecycle.sol +1 -1
- package/contracts/instance/base/ObjectSet.sol +24 -25
- package/contracts/instance/module/IComponents.sol +7 -5
- package/contracts/instance/module/IPolicy.sol +2 -1
- package/contracts/instance/module/IRisk.sol +1 -0
- package/contracts/oracle/BasicOracle.sol +0 -1
- package/contracts/oracle/IOracleService.sol +2 -1
- package/contracts/oracle/Oracle.sol +4 -15
- package/contracts/oracle/OracleService.sol +103 -75
- package/contracts/pool/BasicPool.sol +33 -24
- package/contracts/pool/BasicPoolAuthorization.sol +12 -2
- package/contracts/pool/BundleService.sol +60 -98
- package/contracts/pool/IBundleService.sol +2 -23
- package/contracts/pool/IPoolComponent.sol +1 -7
- package/contracts/pool/IPoolService.sol +12 -30
- package/contracts/pool/Pool.sol +118 -126
- package/contracts/pool/PoolService.sol +191 -142
- package/contracts/product/ApplicationService.sol +21 -13
- package/contracts/product/BasicProduct.sol +8 -12
- package/contracts/product/BasicProductAuthorization.sol +0 -1
- package/contracts/product/ClaimService.sol +113 -51
- package/contracts/product/IApplicationService.sol +5 -2
- package/contracts/product/IClaimService.sol +7 -0
- package/contracts/product/IPolicyService.sol +17 -7
- package/contracts/product/IPricingService.sol +9 -9
- package/contracts/product/IProductComponent.sol +6 -0
- package/contracts/product/PolicyService.sol +241 -194
- package/contracts/product/PricingService.sol +8 -8
- package/contracts/product/Product.sol +56 -61
- package/contracts/product/RiskService.sol +14 -3
- package/contracts/registry/ChainNft.sol +6 -9
- package/contracts/registry/IRegistry.sol +6 -3
- package/contracts/registry/IRegistryService.sol +6 -4
- package/contracts/registry/ITransferInterceptor.sol +1 -2
- package/contracts/registry/Registry.sol +22 -4
- package/contracts/registry/RegistryAdmin.sol +21 -34
- package/contracts/registry/RegistryService.sol +37 -55
- package/contracts/registry/ReleaseLifecycle.sol +6 -3
- package/contracts/registry/ReleaseRegistry.sol +202 -208
- package/contracts/registry/ServiceAuthorizationV3.sol +17 -40
- package/contracts/shared/Component.sol +47 -106
- package/contracts/shared/ComponentService.sol +322 -157
- package/contracts/shared/ComponentVerifyingService.sol +27 -15
- package/contracts/shared/ContractLib.sol +196 -10
- package/contracts/shared/IComponent.sol +10 -16
- package/contracts/shared/IComponentService.sol +38 -16
- package/contracts/shared/IInstanceLinkedComponent.sol +3 -11
- package/contracts/shared/ILifecycle.sol +3 -1
- package/contracts/shared/INftOwnable.sol +2 -0
- package/contracts/shared/IRegisterable.sol +11 -0
- package/contracts/shared/InstanceLinkedComponent.sol +66 -32
- package/contracts/shared/KeyValueStore.sol +1 -1
- package/contracts/shared/Lifecycle.sol +15 -4
- package/contracts/shared/NftOwnable.sol +23 -3
- package/contracts/shared/Registerable.sol +15 -7
- package/contracts/shared/RegistryLinked.sol +6 -12
- package/contracts/shared/Service.sol +4 -7
- package/contracts/shared/TokenHandler.sol +316 -66
- package/contracts/shared/TokenHandlerDeployerLib.sol +10 -2
- package/contracts/staking/IStaking.sol +9 -4
- package/contracts/staking/IStakingService.sol +0 -3
- package/contracts/staking/Staking.sol +31 -24
- package/contracts/staking/StakingService.sol +56 -23
- package/contracts/type/Key32.sol +2 -2
- package/contracts/type/Key32Set.sol +62 -0
- package/contracts/type/NftId.sol +6 -0
- package/contracts/type/ObjectType.sol +2 -0
- package/contracts/type/RiskId.sol +18 -6
- package/contracts/type/RoleId.sol +0 -12
- package/contracts/type/StateId.sol +14 -1
- package/contracts/upgradeability/ProxyManager.sol +2 -1
- package/package.json +3 -3
- 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/contracts/authorization/IModuleAuthorization.sol +0 -21
- package/contracts/authorization/ModuleAuthorization.sol +0 -78
@@ -6,39 +6,34 @@ import {IBundleService} from "./IBundleService.sol";
|
|
6
6
|
import {IComponents} from "../instance/module/IComponents.sol";
|
7
7
|
import {IComponentService} from "../shared/IComponentService.sol";
|
8
8
|
import {IInstance} from "../instance/IInstance.sol";
|
9
|
-
import {IInstanceService} from "../instance/IInstanceService.sol";
|
10
9
|
import {IPolicy} from "../instance/module/IPolicy.sol";
|
11
|
-
import {
|
10
|
+
import {IPoolComponent} from "../pool/IPoolComponent.sol";
|
12
11
|
import {IPoolService} from "./IPoolService.sol";
|
12
|
+
import {IProductComponent} from "../product/IProductComponent.sol";
|
13
13
|
import {IRegistry} from "../registry/IRegistry.sol";
|
14
|
-
import {IRegistryService} from "../registry/IRegistryService.sol";
|
15
14
|
import {IStaking} from "../staking/IStaking.sol";
|
16
15
|
|
17
16
|
import {Amount, AmountLib} from "../type/Amount.sol";
|
18
17
|
import {ClaimId} from "../type/ClaimId.sol";
|
18
|
+
import {ContractLib} from "../shared/ContractLib.sol";
|
19
19
|
import {Fee, FeeLib} from "../type/Fee.sol";
|
20
20
|
import {NftId} from "../type/NftId.sol";
|
21
|
-
import {ObjectType, POOL, BUNDLE,
|
22
|
-
import {RoleId, PUBLIC_ROLE} from "../type/RoleId.sol";
|
21
|
+
import {ObjectType, POOL, BUNDLE, PRODUCT, POLICY, COMPONENT} from "../type/ObjectType.sol";
|
23
22
|
import {Fee, FeeLib} from "../type/Fee.sol";
|
24
23
|
import {KEEP_STATE} from "../type/StateId.sol";
|
25
|
-
import {
|
26
|
-
import {
|
27
|
-
import {ComponentVerifyingService} from "../shared/ComponentVerifyingService.sol";
|
24
|
+
import {UFixed} from "../type/UFixed.sol";
|
25
|
+
import {Service} from "../shared/Service.sol";
|
28
26
|
import {InstanceReader} from "../instance/InstanceReader.sol";
|
29
27
|
import {InstanceStore} from "../instance/InstanceStore.sol";
|
30
28
|
|
31
29
|
string constant POOL_SERVICE_NAME = "PoolService";
|
32
30
|
|
33
31
|
contract PoolService is
|
34
|
-
|
32
|
+
Service,
|
35
33
|
IPoolService
|
36
34
|
{
|
37
35
|
IBundleService internal _bundleService;
|
38
36
|
IComponentService internal _componentService;
|
39
|
-
IInstanceService private _instanceService;
|
40
|
-
IRegistryService private _registryService;
|
41
|
-
|
42
37
|
IStaking private _staking;
|
43
38
|
|
44
39
|
function _initialize(
|
@@ -56,11 +51,8 @@ contract PoolService is
|
|
56
51
|
|
57
52
|
_initializeService(registryAddress, authority, owner);
|
58
53
|
|
59
|
-
_registryService = IRegistryService(_getServiceAddress(REGISTRY()));
|
60
54
|
_bundleService = IBundleService(_getServiceAddress(BUNDLE()));
|
61
|
-
_instanceService = IInstanceService(_getServiceAddress(INSTANCE()));
|
62
55
|
_componentService = IComponentService(_getServiceAddress(COMPONENT()));
|
63
|
-
|
64
56
|
_staking = IStaking(getRegistry().getStakingAddress());
|
65
57
|
|
66
58
|
_registerInterface(type(IPoolService).interfaceId);
|
@@ -72,7 +64,7 @@ contract PoolService is
|
|
72
64
|
external
|
73
65
|
virtual
|
74
66
|
{
|
75
|
-
(NftId poolNftId
|
67
|
+
(NftId poolNftId, IInstance instance) = _getAndVerifyActivePool();
|
76
68
|
InstanceReader instanceReader = instance.getInstanceReader();
|
77
69
|
IComponents.PoolInfo memory poolInfo = instanceReader.getPoolInfo(poolNftId);
|
78
70
|
|
@@ -84,71 +76,13 @@ contract PoolService is
|
|
84
76
|
}
|
85
77
|
|
86
78
|
|
87
|
-
function setBundleOwnerRole(RoleId bundleOwnerRole)
|
88
|
-
external
|
89
|
-
virtual
|
90
|
-
{
|
91
|
-
(NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
|
92
|
-
InstanceReader instanceReader = instance.getInstanceReader();
|
93
|
-
|
94
|
-
IComponents.ComponentInfo memory componentInfo = instanceReader.getComponentInfo(poolNftId);
|
95
|
-
IComponents.PoolInfo memory poolInfo = abi.decode(componentInfo.data, (IComponents.PoolInfo));
|
96
|
-
|
97
|
-
// bundle owner role may only be set once per pool
|
98
|
-
if(poolInfo.bundleOwnerRole != PUBLIC_ROLE()) {
|
99
|
-
revert ErrorPoolServiceBundleOwnerRoleAlreadySet(poolNftId);
|
100
|
-
}
|
101
|
-
|
102
|
-
poolInfo.bundleOwnerRole = bundleOwnerRole;
|
103
|
-
instance.getInstanceStore().updatePool(poolNftId, poolInfo, KEEP_STATE());
|
104
|
-
|
105
|
-
emit LogPoolServiceBundleOwnerRoleSet(poolNftId, bundleOwnerRole);
|
106
|
-
}
|
107
|
-
|
108
|
-
|
109
|
-
/// @inheritdoc IPoolService
|
110
|
-
function createBundle(
|
111
|
-
address bundleOwner, // initial bundle owner
|
112
|
-
Fee memory fee, // fees deducted from premium that go to bundle owner
|
113
|
-
Seconds lifetime, // initial duration for which new policies are covered
|
114
|
-
bytes calldata filter // optional use case specific criteria that define if a policy may be covered by this bundle
|
115
|
-
)
|
116
|
-
external
|
117
|
-
virtual
|
118
|
-
returns(NftId bundleNftId)
|
119
|
-
{
|
120
|
-
(NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
|
121
|
-
|
122
|
-
// create the empty bundle
|
123
|
-
bundleNftId = _bundleService.create(
|
124
|
-
instance,
|
125
|
-
poolNftId,
|
126
|
-
bundleOwner,
|
127
|
-
fee,
|
128
|
-
AmountLib.zero(),
|
129
|
-
lifetime,
|
130
|
-
filter);
|
131
|
-
|
132
|
-
emit LogPoolServiceBundleCreated(instance.getNftId(), poolNftId, bundleNftId);
|
133
|
-
}
|
134
|
-
|
135
|
-
|
136
|
-
function _getStakingFee(InstanceReader instanceReader, NftId poolNftId)
|
137
|
-
internal
|
138
|
-
virtual
|
139
|
-
view
|
140
|
-
returns (Fee memory stakingFee)
|
141
|
-
{
|
142
|
-
NftId productNftId = instanceReader.getComponentInfo(poolNftId).productNftId;
|
143
|
-
return instanceReader.getProductInfo(productNftId).stakingFee;
|
144
|
-
}
|
145
|
-
|
146
|
-
|
147
79
|
function closeBundle(NftId bundleNftId)
|
148
80
|
external
|
149
81
|
virtual
|
150
82
|
{
|
151
|
-
(
|
83
|
+
_checkNftType(bundleNftId, BUNDLE());
|
84
|
+
|
85
|
+
(NftId poolNftId, IInstance instance) = _getAndVerifyActivePool();
|
152
86
|
|
153
87
|
// TODO get performance fee for pool (#477)
|
154
88
|
|
@@ -166,7 +100,7 @@ contract PoolService is
|
|
166
100
|
if ((unstakedAmount + feeAmount).gtz()){
|
167
101
|
IComponents.ComponentInfo memory poolComponentInfo = instance.getInstanceReader().getComponentInfo(poolNftId);
|
168
102
|
poolComponentInfo.tokenHandler.distributeTokens(
|
169
|
-
poolComponentInfo.
|
103
|
+
poolComponentInfo.tokenHandler.getWallet(),
|
170
104
|
getRegistry().ownerOf(bundleNftId),
|
171
105
|
unstakedAmount + feeAmount);
|
172
106
|
}
|
@@ -182,9 +116,11 @@ contract PoolService is
|
|
182
116
|
external
|
183
117
|
virtual
|
184
118
|
{
|
185
|
-
(
|
119
|
+
_checkNftType(policyNftId, POLICY());
|
120
|
+
|
121
|
+
(NftId poolNftId, IInstance instance) = _getAndVerifyActivePool();
|
186
122
|
InstanceReader instanceReader = instance.getInstanceReader();
|
187
|
-
NftId productNftId =
|
123
|
+
NftId productNftId = getRegistry().getObjectInfo(poolNftId).parentNftId;
|
188
124
|
|
189
125
|
// check policy matches with calling pool
|
190
126
|
IPolicy.PolicyInfo memory policyInfo = instanceReader.getPolicyInfo(policyNftId);
|
@@ -212,7 +148,9 @@ contract PoolService is
|
|
212
148
|
// TODO: restricted() (once #462 is done)
|
213
149
|
returns(Amount netAmount)
|
214
150
|
{
|
215
|
-
(
|
151
|
+
_checkNftType(bundleNftId, BUNDLE());
|
152
|
+
|
153
|
+
(NftId poolNftId, IInstance instance) = _getAndVerifyActivePool();
|
216
154
|
InstanceReader instanceReader = instance.getInstanceReader();
|
217
155
|
IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
|
218
156
|
IComponents.PoolInfo memory poolInfo = instanceReader.getPoolInfo(poolNftId);
|
@@ -228,17 +166,22 @@ contract PoolService is
|
|
228
166
|
}
|
229
167
|
}
|
230
168
|
|
231
|
-
|
232
169
|
// calculate fees
|
170
|
+
IRegistry registry = getRegistry();
|
233
171
|
Amount feeAmount;
|
234
|
-
(
|
235
|
-
feeAmount,
|
236
|
-
netAmount
|
237
|
-
) = FeeLib.calculateFee(
|
238
|
-
_getStakingFee(instanceReader, poolNftId),
|
239
|
-
amount);
|
240
172
|
|
241
|
-
|
173
|
+
{
|
174
|
+
NftId productNftId = registry.getObjectInfo(poolNftId).parentNftId;
|
175
|
+
Fee memory stakingFee = instanceReader.getProductInfo(productNftId).stakingFee;
|
176
|
+
(
|
177
|
+
feeAmount,
|
178
|
+
netAmount
|
179
|
+
) = FeeLib.calculateFee(
|
180
|
+
stakingFee,
|
181
|
+
amount);
|
182
|
+
}
|
183
|
+
|
184
|
+
// do all the book keeping
|
242
185
|
_componentService.increasePoolBalance(
|
243
186
|
instance.getInstanceStore(),
|
244
187
|
poolNftId,
|
@@ -247,18 +190,22 @@ contract PoolService is
|
|
247
190
|
|
248
191
|
_bundleService.stake(instance, bundleNftId, netAmount);
|
249
192
|
|
250
|
-
// collect tokens from bundle owner
|
251
|
-
address bundleOwner = getRegistry().ownerOf(bundleNftId);
|
252
193
|
emit LogPoolServiceBundleStaked(instance.getNftId(), poolNftId, bundleNftId, amount, netAmount);
|
253
194
|
|
254
|
-
//
|
255
|
-
|
256
|
-
|
257
|
-
|
258
|
-
bundleOwner
|
259
|
-
|
195
|
+
// only collect staking amount when pool is not externally managed
|
196
|
+
if (!poolInfo.isExternallyManaged) {
|
197
|
+
|
198
|
+
// collect tokens from bundle owner
|
199
|
+
address bundleOwner = getRegistry().ownerOf(bundleNftId);
|
200
|
+
_collectStakingAmount(
|
201
|
+
instanceReader,
|
202
|
+
poolNftId,
|
203
|
+
bundleOwner,
|
204
|
+
amount);
|
205
|
+
}
|
260
206
|
}
|
261
207
|
|
208
|
+
|
262
209
|
/// @inheritdoc IPoolService
|
263
210
|
function unstake(NftId bundleNftId, Amount amount)
|
264
211
|
external
|
@@ -266,11 +213,13 @@ contract PoolService is
|
|
266
213
|
// TODO: restricted() (once #462 is done)
|
267
214
|
returns(Amount netAmount)
|
268
215
|
{
|
269
|
-
(
|
216
|
+
_checkNftType(bundleNftId, BUNDLE());
|
217
|
+
|
218
|
+
(NftId poolNftId, IInstance instance) = _getAndVerifyActivePool();
|
270
219
|
InstanceReader instanceReader = instance.getInstanceReader();
|
271
220
|
InstanceStore instanceStore = instance.getInstanceStore();
|
272
221
|
IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
|
273
|
-
|
222
|
+
|
274
223
|
if (bundleInfo.poolNftId != poolNftId) {
|
275
224
|
revert ErrorPoolServiceBundlePoolMismatch(bundleNftId, poolNftId);
|
276
225
|
}
|
@@ -282,6 +231,7 @@ contract PoolService is
|
|
282
231
|
// if amount was max, this was set to the available amount
|
283
232
|
|
284
233
|
// TODO: handle performance fees (issue #477)
|
234
|
+
netAmount = unstakedAmount;
|
285
235
|
|
286
236
|
// update pool bookkeeping - performance fees stay in the pool, but as fees
|
287
237
|
_componentService.decreasePoolBalance(
|
@@ -290,38 +240,77 @@ contract PoolService is
|
|
290
240
|
unstakedAmount,
|
291
241
|
AmountLib.zero());
|
292
242
|
|
293
|
-
|
294
|
-
|
295
|
-
|
296
|
-
|
297
|
-
|
298
|
-
|
299
|
-
|
300
|
-
|
301
|
-
|
302
|
-
|
243
|
+
|
244
|
+
emit LogPoolServiceBundleUnstaked(instance.getNftId(), poolNftId, bundleNftId, unstakedAmount, netAmount);
|
245
|
+
|
246
|
+
// only distribute staking amount when pool is not externally managed
|
247
|
+
if (!instanceReader.getPoolInfo(poolNftId).isExternallyManaged) {
|
248
|
+
|
249
|
+
// transfer amount to bundle owner
|
250
|
+
address bundleOwner = getRegistry().ownerOf(bundleNftId);
|
251
|
+
_distributeUnstakingAmount(
|
252
|
+
instanceReader,
|
253
|
+
poolNftId,
|
254
|
+
bundleOwner,
|
255
|
+
netAmount);
|
256
|
+
}
|
303
257
|
}
|
304
258
|
|
305
259
|
|
306
|
-
function fundPoolWallet(
|
260
|
+
function fundPoolWallet(Amount amount)
|
307
261
|
external
|
308
262
|
virtual
|
309
|
-
restricted()
|
263
|
+
// restricted()
|
310
264
|
{
|
311
|
-
|
312
|
-
|
265
|
+
(
|
266
|
+
NftId poolNftId,
|
267
|
+
IInstance instance
|
268
|
+
) = _getAndVerifyActivePool();
|
269
|
+
|
270
|
+
// check that pool is externally managed
|
271
|
+
InstanceReader reader = instance.getInstanceReader();
|
272
|
+
if (!reader.getPoolInfo(poolNftId).isExternallyManaged) {
|
273
|
+
revert ErrorPoolServicePoolNotExternallyManaged(poolNftId);
|
274
|
+
}
|
275
|
+
|
276
|
+
address poolOwner = getRegistry().ownerOf(poolNftId);
|
277
|
+
emit LogPoolServiceWalletFunded(poolNftId, poolOwner, amount);
|
278
|
+
|
279
|
+
_collectStakingAmount(
|
280
|
+
reader,
|
281
|
+
poolNftId,
|
282
|
+
poolOwner,
|
283
|
+
amount);
|
313
284
|
}
|
314
285
|
|
315
286
|
|
316
|
-
function defundPoolWallet(
|
287
|
+
function defundPoolWallet(Amount amount)
|
317
288
|
external
|
318
289
|
virtual
|
319
|
-
restricted()
|
290
|
+
// restricted()
|
320
291
|
{
|
321
|
-
|
322
|
-
|
292
|
+
(
|
293
|
+
NftId poolNftId,
|
294
|
+
IInstance instance
|
295
|
+
) = _getAndVerifyActivePool();
|
296
|
+
|
297
|
+
// check that pool is externally managed
|
298
|
+
InstanceReader reader = instance.getInstanceReader();
|
299
|
+
if (!reader.getPoolInfo(poolNftId).isExternallyManaged) {
|
300
|
+
revert ErrorPoolServicePoolNotExternallyManaged(poolNftId);
|
301
|
+
}
|
302
|
+
|
303
|
+
address poolOwner = getRegistry().ownerOf(poolNftId);
|
304
|
+
emit LogPoolServiceWalletDefunded(poolNftId, poolOwner, amount);
|
305
|
+
|
306
|
+
_distributeUnstakingAmount(
|
307
|
+
reader,
|
308
|
+
poolNftId,
|
309
|
+
poolOwner,
|
310
|
+
amount);
|
323
311
|
}
|
324
312
|
|
313
|
+
|
325
314
|
function processSale(
|
326
315
|
NftId bundleNftId,
|
327
316
|
IPolicy.PremiumInfo memory premium
|
@@ -330,11 +319,12 @@ contract PoolService is
|
|
330
319
|
virtual
|
331
320
|
restricted()
|
332
321
|
{
|
322
|
+
_checkNftType(bundleNftId, BUNDLE());
|
323
|
+
|
333
324
|
IRegistry registry = getRegistry();
|
334
|
-
|
335
|
-
|
336
|
-
|
337
|
-
IInstance instance = IInstance(instanceObjectInfo.objectAddress);
|
325
|
+
NftId poolNftId = registry.getObjectInfo(bundleNftId).parentNftId;
|
326
|
+
(, address instanceAddress) = ContractLib.getInfoAndInstance(registry, poolNftId, true);
|
327
|
+
IInstance instance = IInstance(instanceAddress);
|
338
328
|
|
339
329
|
Amount poolFeeAmount = premium.poolFeeFixAmount + premium.poolFeeVarAmount;
|
340
330
|
Amount bundleFeeAmount = premium.bundleFeeFixAmount + premium.bundleFeeVarAmount;
|
@@ -343,13 +333,13 @@ contract PoolService is
|
|
343
333
|
InstanceStore instanceStore = instance.getInstanceStore();
|
344
334
|
_componentService.increasePoolBalance(
|
345
335
|
instanceStore,
|
346
|
-
|
336
|
+
poolNftId,
|
347
337
|
bundleNetAmount + bundleFeeAmount,
|
348
338
|
poolFeeAmount);
|
349
339
|
|
350
340
|
_componentService.increaseBundleBalance(
|
351
341
|
instanceStore,
|
352
|
-
|
342
|
+
bundleNftId,
|
353
343
|
bundleNetAmount,
|
354
344
|
bundleFeeAmount);
|
355
345
|
}
|
@@ -371,9 +361,17 @@ contract PoolService is
|
|
371
361
|
Amount localCollateralAmount
|
372
362
|
)
|
373
363
|
{
|
364
|
+
_checkNftType(productNftId, PRODUCT());
|
365
|
+
_checkNftType(applicationNftId, POLICY());
|
366
|
+
_checkNftType(bundleNftId, BUNDLE());
|
367
|
+
|
368
|
+
NftId poolNftId;
|
369
|
+
bool poolIsVerifyingApplications;
|
374
370
|
(
|
371
|
+
poolNftId,
|
375
372
|
totalCollateralAmount,
|
376
|
-
localCollateralAmount
|
373
|
+
localCollateralAmount,
|
374
|
+
poolIsVerifyingApplications
|
377
375
|
) = calculateRequiredCollateral(
|
378
376
|
instance.getInstanceReader(),
|
379
377
|
productNftId,
|
@@ -392,11 +390,20 @@ contract PoolService is
|
|
392
390
|
token,
|
393
391
|
totalCollateralAmount);
|
394
392
|
|
395
|
-
//
|
396
|
-
|
397
|
-
|
393
|
+
// pool callback when required
|
394
|
+
if (poolIsVerifyingApplications) {
|
395
|
+
IPoolComponent pool = IPoolComponent(
|
396
|
+
getRegistry().getObjectAddress(poolNftId));
|
398
397
|
|
398
|
+
pool.verifyApplication(
|
399
|
+
applicationNftId,
|
400
|
+
bundleNftId,
|
401
|
+
totalCollateralAmount);
|
402
|
+
|
403
|
+
// TODO add logging
|
399
404
|
}
|
405
|
+
|
406
|
+
// TODO add logging
|
400
407
|
}
|
401
408
|
|
402
409
|
function processPayout(
|
@@ -410,6 +417,8 @@ contract PoolService is
|
|
410
417
|
virtual
|
411
418
|
restricted()
|
412
419
|
{
|
420
|
+
_checkNftType(policyNftId, POLICY());
|
421
|
+
|
413
422
|
NftId bundleNftId = policyInfo.bundleNftId;
|
414
423
|
NftId poolNftId = getRegistry().getObjectInfo(bundleNftId).parentNftId;
|
415
424
|
InstanceStore instanceStore = instance.getInstanceStore();
|
@@ -452,6 +461,8 @@ contract PoolService is
|
|
452
461
|
virtual
|
453
462
|
restricted()
|
454
463
|
{
|
464
|
+
_checkNftType(policyNftId, POLICY());
|
465
|
+
|
455
466
|
Amount remainingCollateralAmount = policyInfo.sumInsuredAmount - policyInfo.claimAmount;
|
456
467
|
|
457
468
|
_bundleService.releaseCollateral(
|
@@ -460,10 +471,6 @@ contract PoolService is
|
|
460
471
|
policyInfo.bundleNftId,
|
461
472
|
remainingCollateralAmount);
|
462
473
|
|
463
|
-
_bundleService.unlinkPolicy(
|
464
|
-
instance,
|
465
|
-
policyNftId);
|
466
|
-
|
467
474
|
// update value locked with staking service
|
468
475
|
_staking.decreaseTotalValueLocked(
|
469
476
|
instance.getNftId(),
|
@@ -480,12 +487,17 @@ contract PoolService is
|
|
480
487
|
public
|
481
488
|
view
|
482
489
|
returns(
|
490
|
+
NftId poolNftId,
|
483
491
|
Amount totalCollateralAmount,
|
484
|
-
Amount localCollateralAmount
|
492
|
+
Amount localCollateralAmount,
|
493
|
+
bool poolIsVerifyingApplications
|
485
494
|
)
|
486
495
|
{
|
487
|
-
|
496
|
+
_checkNftType(productNftId, PRODUCT());
|
497
|
+
|
498
|
+
poolNftId = instanceReader.getProductInfo(productNftId).poolNftId;
|
488
499
|
IComponents.PoolInfo memory poolInfo = instanceReader.getPoolInfo(poolNftId);
|
500
|
+
poolIsVerifyingApplications = poolInfo.isVerifyingApplications;
|
489
501
|
|
490
502
|
(
|
491
503
|
totalCollateralAmount,
|
@@ -524,6 +536,7 @@ contract PoolService is
|
|
524
536
|
Amount stakingAmount
|
525
537
|
)
|
526
538
|
internal
|
539
|
+
pure
|
527
540
|
returns (Amount stakingNetAmount)
|
528
541
|
{
|
529
542
|
stakingNetAmount = stakingAmount;
|
@@ -538,25 +551,61 @@ contract PoolService is
|
|
538
551
|
}
|
539
552
|
|
540
553
|
|
541
|
-
/// @dev transfers the specified amount from the
|
554
|
+
/// @dev transfers the specified amount from the "from account" to the pool's wallet
|
542
555
|
function _collectStakingAmount(
|
543
|
-
InstanceReader
|
556
|
+
InstanceReader reader,
|
544
557
|
NftId poolNftId,
|
545
|
-
address
|
558
|
+
address from,
|
546
559
|
Amount amount
|
547
560
|
)
|
548
561
|
internal
|
549
562
|
{
|
563
|
+
IComponents.ComponentInfo memory info = reader.getComponentInfo(poolNftId);
|
564
|
+
info.tokenHandler.collectTokens(
|
565
|
+
from,
|
566
|
+
amount);
|
567
|
+
}
|
550
568
|
|
551
|
-
|
552
|
-
|
553
|
-
|
554
|
-
|
555
|
-
|
556
|
-
|
569
|
+
/// @dev distributes the specified amount from the pool's wallet to the "to account"
|
570
|
+
function _distributeUnstakingAmount(
|
571
|
+
InstanceReader reader,
|
572
|
+
NftId poolNftId,
|
573
|
+
address to,
|
574
|
+
Amount amount
|
575
|
+
)
|
576
|
+
internal
|
577
|
+
{
|
578
|
+
IComponents.ComponentInfo memory info = reader.getComponentInfo(poolNftId);
|
579
|
+
info.tokenHandler.distributeTokens(
|
580
|
+
info.tokenHandler.getWallet(),
|
581
|
+
to,
|
557
582
|
amount);
|
558
583
|
}
|
559
584
|
|
585
|
+
|
586
|
+
function _getAndVerifyActivePool()
|
587
|
+
internal
|
588
|
+
virtual
|
589
|
+
view
|
590
|
+
returns (
|
591
|
+
NftId poolNftId,
|
592
|
+
IInstance instance
|
593
|
+
)
|
594
|
+
{
|
595
|
+
(
|
596
|
+
IRegistry.ObjectInfo memory info,
|
597
|
+
address instanceAddress
|
598
|
+
) = ContractLib.getAndVerifyComponent(
|
599
|
+
getRegistry(),
|
600
|
+
msg.sender,
|
601
|
+
POOL(),
|
602
|
+
true); // only active pools
|
603
|
+
|
604
|
+
poolNftId = info.nftId;
|
605
|
+
instance = IInstance(instanceAddress);
|
606
|
+
}
|
607
|
+
|
608
|
+
|
560
609
|
function _getDomain() internal pure override returns(ObjectType) {
|
561
610
|
return POOL();
|
562
611
|
}
|
@@ -13,7 +13,7 @@ import {IRegistryService} from "../registry/IRegistryService.sol";
|
|
13
13
|
import {AmountLib} from "../type/Amount.sol";
|
14
14
|
import {Seconds} from "../type/Seconds.sol";
|
15
15
|
import {zeroTimestamp} from "../type/Timestamp.sol";
|
16
|
-
import {ObjectType, DISTRIBUTION, PRODUCT, REGISTRY, APPLICATION, POLICY, PRICE} from "../type/ObjectType.sol";
|
16
|
+
import {ObjectType, BUNDLE, DISTRIBUTION, PRODUCT, REGISTRY, APPLICATION, POLICY, PRICE} from "../type/ObjectType.sol";
|
17
17
|
import {REVOKED} from "../type/StateId.sol";
|
18
18
|
import {NftId, NftIdLib} from "../type/NftId.sol";
|
19
19
|
import {ReferralId} from "../type/Referral.sol";
|
@@ -55,10 +55,10 @@ contract ApplicationService is
|
|
55
55
|
}
|
56
56
|
|
57
57
|
|
58
|
-
function
|
58
|
+
function _checkLinkedApplicationParameters(
|
59
59
|
InstanceReader instanceReader,
|
60
60
|
NftId productNftId,
|
61
|
-
RiskId
|
61
|
+
RiskId riskId,
|
62
62
|
ReferralId referralId,
|
63
63
|
NftId bundleNftId
|
64
64
|
)
|
@@ -66,18 +66,18 @@ contract ApplicationService is
|
|
66
66
|
virtual
|
67
67
|
view
|
68
68
|
{
|
69
|
-
|
69
|
+
// check risk with product
|
70
|
+
(bool exists, bool active) = instanceReader.getRiskSet().checkRisk(productNftId, riskId);
|
71
|
+
if (!exists) { revert ErrorApplicationServiceRiskUnknown(riskId, productNftId); }
|
72
|
+
if (!active) { revert ErrorApplicationServiceRiskPaused(riskId, productNftId); }
|
70
73
|
|
71
|
-
//
|
74
|
+
// check bundle with pool
|
75
|
+
NftId poolNftId = instanceReader.getProductInfo(productNftId).poolNftId;
|
76
|
+
(exists, active) = instanceReader.getBundleSet().checkBundle(poolNftId, bundleNftId);
|
77
|
+
if (!exists) { revert ErrorApplicationServiceBundleUnknown(bundleNftId, poolNftId); }
|
78
|
+
if (!active) { revert ErrorApplicationServiceBundleLocked(bundleNftId, poolNftId); }
|
72
79
|
|
73
80
|
// TODO check referral with distribution
|
74
|
-
|
75
|
-
// check bundle with pool
|
76
|
-
NftId productPoolNftId = productInfo.poolNftId;
|
77
|
-
NftId bundlePoolNftId = instanceReader.getBundleInfo(bundleNftId).poolNftId;
|
78
|
-
if(bundlePoolNftId != productPoolNftId) {
|
79
|
-
revert ErrorApplicationServiceBundlePoolMismatch(bundleNftId, productPoolNftId, bundlePoolNftId);
|
80
|
-
}
|
81
81
|
}
|
82
82
|
|
83
83
|
|
@@ -137,11 +137,13 @@ contract ApplicationService is
|
|
137
137
|
nonReentrant()
|
138
138
|
returns (NftId applicationNftId)
|
139
139
|
{
|
140
|
+
_checkNftType(bundleNftId, BUNDLE());
|
141
|
+
|
140
142
|
(NftId productNftId,, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
|
141
143
|
|
142
144
|
// check if provided references are valid and linked to calling product contract
|
143
145
|
InstanceReader instanceReader = instance.getInstanceReader();
|
144
|
-
|
146
|
+
_checkLinkedApplicationParameters(
|
145
147
|
instanceReader,
|
146
148
|
productNftId,
|
147
149
|
riskId,
|
@@ -213,6 +215,8 @@ contract ApplicationService is
|
|
213
215
|
nonReentrant()
|
214
216
|
returns (NftId applicationNftId)
|
215
217
|
{
|
218
|
+
_checkNftType(policyNftId, POLICY());
|
219
|
+
_checkNftType(bundleNftId, BUNDLE());
|
216
220
|
// TODO implement
|
217
221
|
}
|
218
222
|
|
@@ -230,6 +234,8 @@ contract ApplicationService is
|
|
230
234
|
virtual
|
231
235
|
nonReentrant()
|
232
236
|
{
|
237
|
+
_checkNftType(applicationNftId, POLICY());
|
238
|
+
_checkNftType(bundleNftId, BUNDLE());
|
233
239
|
// TODO implement
|
234
240
|
}
|
235
241
|
|
@@ -238,6 +244,8 @@ contract ApplicationService is
|
|
238
244
|
virtual
|
239
245
|
nonReentrant()
|
240
246
|
{
|
247
|
+
_checkNftType(applicationNftId, POLICY());
|
248
|
+
|
241
249
|
(,, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
|
242
250
|
instance.getInstanceStore().updateApplicationState(applicationNftId, REVOKED());
|
243
251
|
}
|
@@ -3,6 +3,7 @@ pragma solidity ^0.8.20;
|
|
3
3
|
|
4
4
|
import {Fee} from "../type/Fee.sol";
|
5
5
|
import {IAuthorization} from "../authorization/IAuthorization.sol";
|
6
|
+
import {IComponents} from "../instance/module/IComponents.sol";
|
6
7
|
import {NftId} from "../type/NftId.sol";
|
7
8
|
import {Product} from "../product/Product.sol";
|
8
9
|
|
@@ -25,13 +26,11 @@ abstract contract BasicProduct is
|
|
25
26
|
function _initializeBasicProduct(
|
26
27
|
address registry,
|
27
28
|
NftId instanceNftId,
|
28
|
-
IAuthorization authorization,
|
29
|
-
address initialOwner,
|
30
29
|
string memory name,
|
31
30
|
address token,
|
32
|
-
|
33
|
-
|
34
|
-
address
|
31
|
+
IComponents.ProductInfo memory productInfo,
|
32
|
+
IAuthorization authorization,
|
33
|
+
address initialOwner
|
35
34
|
)
|
36
35
|
internal
|
37
36
|
virtual
|
@@ -40,14 +39,11 @@ abstract contract BasicProduct is
|
|
40
39
|
_initializeProduct(
|
41
40
|
registry,
|
42
41
|
instanceNftId,
|
43
|
-
authorization,
|
44
|
-
initialOwner,
|
45
42
|
name,
|
46
43
|
token,
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
""
|
51
|
-
""); // componentData
|
44
|
+
productInfo,
|
45
|
+
authorization,
|
46
|
+
initialOwner,
|
47
|
+
""); // component data
|
52
48
|
}
|
53
49
|
}
|