@etherisc/gif-next 0.0.2-e5a6af8-639 → 0.0.2-e5bdc7a-937
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 +2 -2
- 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 +2 -2
- package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +1 -1
- package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +1 -1
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.dbg.json +1 -1
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +2 -2
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +55 -133
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +2 -2
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +8 -38
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +133 -78
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +78 -46
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +11 -23
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +23 -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 +38 -147
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +49 -17
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +92 -190
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +2 -2
- 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 +66 -107
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +33 -87
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +155 -141
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +391 -205
- 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 +46 -0
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +24 -4
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +78 -11
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +85 -72
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +40 -27
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +302 -74
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +61 -25
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +46 -22
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +36 -46
- 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 +2 -2
- 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 +22 -100
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +2 -2
- 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 +11 -23
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +8 -38
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +84 -60
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +66 -22
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +8 -53
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +49 -17
- package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +101 -206
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +58 -70
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +19 -57
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +11 -62
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +77 -75
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +8 -77
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +153 -159
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +61 -33
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +66 -31
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +42 -22
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +13 -38
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +2 -2
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +84 -76
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +67 -47
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +34 -7
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +38 -19
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +16 -23
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +132 -121
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +70 -42
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +54 -38
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +56 -32
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/product/Product.sol/Product.json +13 -38
- package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +1 -1
- package/artifacts/contracts/product/RiskService.sol/RiskService.json +34 -18
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +40 -16
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +24 -0
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
- package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
- package/artifacts/contracts/registry/Registry.sol/Registry.json +62 -38
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +107 -94
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +32 -16
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +39 -15
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +2 -2
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +12 -12
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +6 -6
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +2 -2
- package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
- package/artifacts/contracts/shared/Component.sol/Component.json +8 -38
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +169 -102
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +74 -42
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
- 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 +11 -23
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +67 -0
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +11 -23
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
- package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
- package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +1 -1
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +8 -38
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +1 -1
- package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +2 -2
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +2 -2
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +2 -2
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +2 -2
- 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/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 +29 -59
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +2 -2
- package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
- package/artifacts/contracts/staking/Staking.sol/Staking.json +80 -152
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +2 -2
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +50 -46
- 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 +36 -20
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +43 -19
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2 -2
- 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/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 +18 -2
- package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
- package/contracts/authorization/AccessAdmin.sol +21 -1
- package/contracts/distribution/BasicDistribution.sol +2 -2
- package/contracts/distribution/BasicDistributionAuthorization.sol +1 -1
- package/contracts/distribution/Distribution.sol +5 -6
- package/contracts/distribution/DistributionService.sol +19 -20
- package/contracts/distribution/IDistributionService.sol +5 -6
- package/contracts/examples/fire/FirePool.sol +19 -8
- package/contracts/examples/fire/FireProduct.sol +24 -11
- package/contracts/examples/unpermissioned/SimpleDistribution.sol +8 -0
- package/contracts/examples/unpermissioned/SimplePool.sol +34 -2
- package/contracts/examples/unpermissioned/SimpleProduct.sol +15 -21
- package/contracts/instance/BundleSet.sol +38 -34
- package/contracts/instance/IInstance.sol +6 -0
- package/contracts/instance/IInstanceService.sol +7 -5
- package/contracts/instance/Instance.sol +14 -5
- package/contracts/instance/InstanceAdmin.sol +6 -5
- package/contracts/instance/InstanceAuthorizationV3.sol +30 -7
- package/contracts/instance/InstanceReader.sol +85 -1
- package/contracts/instance/InstanceService.sol +32 -19
- package/contracts/instance/RiskSet.sol +119 -0
- package/contracts/instance/base/ObjectSet.sol +24 -25
- package/contracts/instance/module/IComponents.sol +1 -2
- package/contracts/instance/module/IPolicy.sol +2 -1
- package/contracts/instance/module/IRisk.sol +1 -0
- package/contracts/oracle/OracleService.sol +87 -69
- package/contracts/pool/BasicPool.sol +24 -3
- package/contracts/pool/BasicPoolAuthorization.sol +12 -1
- package/contracts/pool/BundleService.sol +37 -94
- package/contracts/pool/IBundleService.sol +2 -23
- package/contracts/pool/IPoolComponent.sol +1 -7
- package/contracts/pool/IPoolService.sol +12 -26
- package/contracts/pool/Pool.sol +112 -102
- package/contracts/pool/PoolService.sol +177 -99
- package/contracts/product/ApplicationService.sol +20 -18
- package/contracts/product/BasicProduct.sol +7 -11
- package/contracts/product/ClaimService.sol +19 -9
- package/contracts/product/IApplicationService.sol +5 -2
- package/contracts/product/IPolicyService.sol +17 -7
- package/contracts/product/PolicyService.sol +241 -191
- package/contracts/product/PricingService.sol +4 -1
- package/contracts/product/Product.sol +12 -40
- package/contracts/product/RiskService.sol +14 -3
- package/contracts/registry/IRegistry.sol +2 -0
- package/contracts/registry/Registry.sol +9 -1
- package/contracts/registry/RegistryAdmin.sol +14 -11
- package/contracts/registry/ReleaseRegistry.sol +2 -18
- package/contracts/registry/ServiceAuthorizationV3.sol +12 -31
- package/contracts/shared/Component.sol +35 -83
- package/contracts/shared/ComponentService.sol +105 -34
- package/contracts/shared/ComponentVerifyingService.sol +15 -13
- package/contracts/shared/ContractLib.sol +196 -10
- package/contracts/shared/IComponent.sol +5 -12
- package/contracts/shared/IComponentService.sol +13 -3
- package/contracts/shared/InstanceLinkedComponent.sol +1 -9
- package/contracts/shared/NftOwnable.sol +5 -1
- package/contracts/shared/Registerable.sol +0 -2
- package/contracts/shared/RegistryLinked.sol +6 -12
- package/contracts/shared/TokenHandler.sol +316 -66
- package/contracts/shared/TokenHandlerDeployerLib.sol +10 -2
- package/contracts/staking/IStaking.sol +9 -4
- package/contracts/staking/Staking.sol +29 -21
- package/contracts/staking/StakingService.sol +55 -8
- 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/package.json +3 -3
@@ -7,28 +7,29 @@ import {IComponents} from "../instance/module/IComponents.sol";
|
|
7
7
|
import {IComponentService} from "../shared/IComponentService.sol";
|
8
8
|
import {IInstance} from "../instance/IInstance.sol";
|
9
9
|
import {IPolicy} from "../instance/module/IPolicy.sol";
|
10
|
-
import {
|
10
|
+
import {IPoolComponent} from "../pool/IPoolComponent.sol";
|
11
11
|
import {IPoolService} from "./IPoolService.sol";
|
12
|
+
import {IProductComponent} from "../product/IProductComponent.sol";
|
12
13
|
import {IRegistry} from "../registry/IRegistry.sol";
|
13
14
|
import {IStaking} from "../staking/IStaking.sol";
|
14
15
|
|
15
16
|
import {Amount, AmountLib} from "../type/Amount.sol";
|
16
17
|
import {ClaimId} from "../type/ClaimId.sol";
|
18
|
+
import {ContractLib} from "../shared/ContractLib.sol";
|
17
19
|
import {Fee, FeeLib} from "../type/Fee.sol";
|
18
20
|
import {NftId} from "../type/NftId.sol";
|
19
21
|
import {ObjectType, POOL, BUNDLE, PRODUCT, POLICY, COMPONENT} from "../type/ObjectType.sol";
|
20
22
|
import {Fee, FeeLib} from "../type/Fee.sol";
|
21
23
|
import {KEEP_STATE} from "../type/StateId.sol";
|
22
|
-
import {Seconds} from "../type/Seconds.sol";
|
23
24
|
import {UFixed} from "../type/UFixed.sol";
|
24
|
-
import {
|
25
|
+
import {Service} from "../shared/Service.sol";
|
25
26
|
import {InstanceReader} from "../instance/InstanceReader.sol";
|
26
27
|
import {InstanceStore} from "../instance/InstanceStore.sol";
|
27
28
|
|
28
29
|
string constant POOL_SERVICE_NAME = "PoolService";
|
29
30
|
|
30
31
|
contract PoolService is
|
31
|
-
|
32
|
+
Service,
|
32
33
|
IPoolService
|
33
34
|
{
|
34
35
|
IBundleService internal _bundleService;
|
@@ -63,7 +64,7 @@ contract PoolService is
|
|
63
64
|
external
|
64
65
|
virtual
|
65
66
|
{
|
66
|
-
(NftId poolNftId
|
67
|
+
(NftId poolNftId, IInstance instance) = _getAndVerifyActivePool();
|
67
68
|
InstanceReader instanceReader = instance.getInstanceReader();
|
68
69
|
IComponents.PoolInfo memory poolInfo = instanceReader.getPoolInfo(poolNftId);
|
69
70
|
|
@@ -75,39 +76,13 @@ contract PoolService is
|
|
75
76
|
}
|
76
77
|
|
77
78
|
|
78
|
-
/// @inheritdoc IPoolService
|
79
|
-
function createBundle(
|
80
|
-
address bundleOwner, // initial bundle owner
|
81
|
-
Fee memory fee, // fees deducted from premium that go to bundle owner
|
82
|
-
Seconds lifetime, // initial duration for which new policies are covered
|
83
|
-
bytes calldata filter // optional use case specific criteria that define if a policy may be covered by this bundle
|
84
|
-
)
|
85
|
-
external
|
86
|
-
virtual
|
87
|
-
returns(NftId bundleNftId)
|
88
|
-
{
|
89
|
-
(NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
|
90
|
-
|
91
|
-
// create the empty bundle
|
92
|
-
bundleNftId = _bundleService.create(
|
93
|
-
instance,
|
94
|
-
poolNftId,
|
95
|
-
bundleOwner,
|
96
|
-
fee,
|
97
|
-
AmountLib.zero(),
|
98
|
-
lifetime,
|
99
|
-
filter);
|
100
|
-
|
101
|
-
emit LogPoolServiceBundleCreated(instance.getNftId(), poolNftId, bundleNftId);
|
102
|
-
}
|
103
|
-
|
104
|
-
|
105
79
|
function closeBundle(NftId bundleNftId)
|
106
80
|
external
|
107
81
|
virtual
|
108
|
-
onlyNftOfType(bundleNftId, BUNDLE())
|
109
82
|
{
|
110
|
-
(
|
83
|
+
_checkNftType(bundleNftId, BUNDLE());
|
84
|
+
|
85
|
+
(NftId poolNftId, IInstance instance) = _getAndVerifyActivePool();
|
111
86
|
|
112
87
|
// TODO get performance fee for pool (#477)
|
113
88
|
|
@@ -125,7 +100,7 @@ contract PoolService is
|
|
125
100
|
if ((unstakedAmount + feeAmount).gtz()){
|
126
101
|
IComponents.ComponentInfo memory poolComponentInfo = instance.getInstanceReader().getComponentInfo(poolNftId);
|
127
102
|
poolComponentInfo.tokenHandler.distributeTokens(
|
128
|
-
poolComponentInfo.
|
103
|
+
poolComponentInfo.tokenHandler.getWallet(),
|
129
104
|
getRegistry().ownerOf(bundleNftId),
|
130
105
|
unstakedAmount + feeAmount);
|
131
106
|
}
|
@@ -140,11 +115,12 @@ contract PoolService is
|
|
140
115
|
)
|
141
116
|
external
|
142
117
|
virtual
|
143
|
-
onlyNftOfType(policyNftId, POLICY())
|
144
118
|
{
|
145
|
-
(
|
119
|
+
_checkNftType(policyNftId, POLICY());
|
120
|
+
|
121
|
+
(NftId poolNftId, IInstance instance) = _getAndVerifyActivePool();
|
146
122
|
InstanceReader instanceReader = instance.getInstanceReader();
|
147
|
-
NftId productNftId =
|
123
|
+
NftId productNftId = getRegistry().getObjectInfo(poolNftId).parentNftId;
|
148
124
|
|
149
125
|
// check policy matches with calling pool
|
150
126
|
IPolicy.PolicyInfo memory policyInfo = instanceReader.getPolicyInfo(policyNftId);
|
@@ -170,10 +146,11 @@ contract PoolService is
|
|
170
146
|
external
|
171
147
|
virtual
|
172
148
|
// TODO: restricted() (once #462 is done)
|
173
|
-
onlyNftOfType(bundleNftId, BUNDLE())
|
174
149
|
returns(Amount netAmount)
|
175
150
|
{
|
176
|
-
(
|
151
|
+
_checkNftType(bundleNftId, BUNDLE());
|
152
|
+
|
153
|
+
(NftId poolNftId, IInstance instance) = _getAndVerifyActivePool();
|
177
154
|
InstanceReader instanceReader = instance.getInstanceReader();
|
178
155
|
IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
|
179
156
|
IComponents.PoolInfo memory poolInfo = instanceReader.getPoolInfo(poolNftId);
|
@@ -204,7 +181,7 @@ contract PoolService is
|
|
204
181
|
amount);
|
205
182
|
}
|
206
183
|
|
207
|
-
// do all the
|
184
|
+
// do all the book keeping
|
208
185
|
_componentService.increasePoolBalance(
|
209
186
|
instance.getInstanceStore(),
|
210
187
|
poolNftId,
|
@@ -213,31 +190,36 @@ contract PoolService is
|
|
213
190
|
|
214
191
|
_bundleService.stake(instance, bundleNftId, netAmount);
|
215
192
|
|
216
|
-
// collect tokens from bundle owner
|
217
|
-
address bundleOwner = registry.ownerOf(bundleNftId);
|
218
193
|
emit LogPoolServiceBundleStaked(instance.getNftId(), poolNftId, bundleNftId, amount, netAmount);
|
219
194
|
|
220
|
-
//
|
221
|
-
|
222
|
-
|
223
|
-
|
224
|
-
bundleOwner
|
225
|
-
|
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
|
+
}
|
226
206
|
}
|
227
207
|
|
208
|
+
|
228
209
|
/// @inheritdoc IPoolService
|
229
210
|
function unstake(NftId bundleNftId, Amount amount)
|
230
211
|
external
|
231
212
|
virtual
|
232
|
-
onlyNftOfType(bundleNftId, BUNDLE())
|
233
213
|
// TODO: restricted() (once #462 is done)
|
234
214
|
returns(Amount netAmount)
|
235
215
|
{
|
236
|
-
(
|
216
|
+
_checkNftType(bundleNftId, BUNDLE());
|
217
|
+
|
218
|
+
(NftId poolNftId, IInstance instance) = _getAndVerifyActivePool();
|
237
219
|
InstanceReader instanceReader = instance.getInstanceReader();
|
238
220
|
InstanceStore instanceStore = instance.getInstanceStore();
|
239
221
|
IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
|
240
|
-
|
222
|
+
|
241
223
|
if (bundleInfo.poolNftId != poolNftId) {
|
242
224
|
revert ErrorPoolServiceBundlePoolMismatch(bundleNftId, poolNftId);
|
243
225
|
}
|
@@ -249,6 +231,7 @@ contract PoolService is
|
|
249
231
|
// if amount was max, this was set to the available amount
|
250
232
|
|
251
233
|
// TODO: handle performance fees (issue #477)
|
234
|
+
netAmount = unstakedAmount;
|
252
235
|
|
253
236
|
// update pool bookkeeping - performance fees stay in the pool, but as fees
|
254
237
|
_componentService.decreasePoolBalance(
|
@@ -257,41 +240,77 @@ contract PoolService is
|
|
257
240
|
unstakedAmount,
|
258
241
|
AmountLib.zero());
|
259
242
|
|
260
|
-
IComponents.ComponentInfo memory poolComponentInfo = instanceReader.getComponentInfo(poolNftId);
|
261
243
|
|
262
|
-
|
263
|
-
|
264
|
-
|
265
|
-
|
266
|
-
poolComponentInfo.wallet,
|
267
|
-
owner,
|
268
|
-
unstakedAmount);
|
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) {
|
269
248
|
|
270
|
-
|
249
|
+
// transfer amount to bundle owner
|
250
|
+
address bundleOwner = getRegistry().ownerOf(bundleNftId);
|
251
|
+
_distributeUnstakingAmount(
|
252
|
+
instanceReader,
|
253
|
+
poolNftId,
|
254
|
+
bundleOwner,
|
255
|
+
netAmount);
|
256
|
+
}
|
271
257
|
}
|
272
258
|
|
273
259
|
|
274
|
-
function fundPoolWallet(
|
260
|
+
function fundPoolWallet(Amount amount)
|
275
261
|
external
|
276
262
|
virtual
|
277
|
-
restricted()
|
278
|
-
onlyNftOfType(poolNftId, POOL())
|
263
|
+
// restricted()
|
279
264
|
{
|
280
|
-
|
281
|
-
|
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);
|
282
284
|
}
|
283
285
|
|
284
286
|
|
285
|
-
function defundPoolWallet(
|
287
|
+
function defundPoolWallet(Amount amount)
|
286
288
|
external
|
287
289
|
virtual
|
288
|
-
restricted()
|
289
|
-
onlyNftOfType(poolNftId, POOL())
|
290
|
+
// restricted()
|
290
291
|
{
|
291
|
-
|
292
|
-
|
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);
|
293
311
|
}
|
294
312
|
|
313
|
+
|
295
314
|
function processSale(
|
296
315
|
NftId bundleNftId,
|
297
316
|
IPolicy.PremiumInfo memory premium
|
@@ -299,12 +318,13 @@ contract PoolService is
|
|
299
318
|
external
|
300
319
|
virtual
|
301
320
|
restricted()
|
302
|
-
onlyNftOfType(bundleNftId, BUNDLE())
|
303
321
|
{
|
322
|
+
_checkNftType(bundleNftId, BUNDLE());
|
323
|
+
|
304
324
|
IRegistry registry = getRegistry();
|
305
|
-
|
306
|
-
|
307
|
-
IInstance instance =
|
325
|
+
NftId poolNftId = registry.getObjectInfo(bundleNftId).parentNftId;
|
326
|
+
(, address instanceAddress) = ContractLib.getInfoAndInstance(registry, poolNftId, true);
|
327
|
+
IInstance instance = IInstance(instanceAddress);
|
308
328
|
|
309
329
|
Amount poolFeeAmount = premium.poolFeeFixAmount + premium.poolFeeVarAmount;
|
310
330
|
Amount bundleFeeAmount = premium.bundleFeeFixAmount + premium.bundleFeeVarAmount;
|
@@ -313,13 +333,13 @@ contract PoolService is
|
|
313
333
|
InstanceStore instanceStore = instance.getInstanceStore();
|
314
334
|
_componentService.increasePoolBalance(
|
315
335
|
instanceStore,
|
316
|
-
|
336
|
+
poolNftId,
|
317
337
|
bundleNetAmount + bundleFeeAmount,
|
318
338
|
poolFeeAmount);
|
319
339
|
|
320
340
|
_componentService.increaseBundleBalance(
|
321
341
|
instanceStore,
|
322
|
-
|
342
|
+
bundleNftId,
|
323
343
|
bundleNetAmount,
|
324
344
|
bundleFeeAmount);
|
325
345
|
}
|
@@ -336,17 +356,22 @@ contract PoolService is
|
|
336
356
|
external
|
337
357
|
virtual
|
338
358
|
restricted()
|
339
|
-
onlyNftOfType(productNftId, PRODUCT())
|
340
|
-
onlyNftOfType(applicationNftId, POLICY())
|
341
|
-
onlyNftOfType(bundleNftId, BUNDLE())
|
342
359
|
returns (
|
343
360
|
Amount totalCollateralAmount,
|
344
361
|
Amount localCollateralAmount
|
345
362
|
)
|
346
363
|
{
|
364
|
+
_checkNftType(productNftId, PRODUCT());
|
365
|
+
_checkNftType(applicationNftId, POLICY());
|
366
|
+
_checkNftType(bundleNftId, BUNDLE());
|
367
|
+
|
368
|
+
NftId poolNftId;
|
369
|
+
bool poolIsVerifyingApplications;
|
347
370
|
(
|
371
|
+
poolNftId,
|
348
372
|
totalCollateralAmount,
|
349
|
-
localCollateralAmount
|
373
|
+
localCollateralAmount,
|
374
|
+
poolIsVerifyingApplications
|
350
375
|
) = calculateRequiredCollateral(
|
351
376
|
instance.getInstanceReader(),
|
352
377
|
productNftId,
|
@@ -364,6 +389,21 @@ contract PoolService is
|
|
364
389
|
instance.getNftId(),
|
365
390
|
token,
|
366
391
|
totalCollateralAmount);
|
392
|
+
|
393
|
+
// pool callback when required
|
394
|
+
if (poolIsVerifyingApplications) {
|
395
|
+
IPoolComponent pool = IPoolComponent(
|
396
|
+
getRegistry().getObjectAddress(poolNftId));
|
397
|
+
|
398
|
+
pool.verifyApplication(
|
399
|
+
applicationNftId,
|
400
|
+
bundleNftId,
|
401
|
+
totalCollateralAmount);
|
402
|
+
|
403
|
+
// TODO add logging
|
404
|
+
}
|
405
|
+
|
406
|
+
// TODO add logging
|
367
407
|
}
|
368
408
|
|
369
409
|
function processPayout(
|
@@ -376,8 +416,9 @@ contract PoolService is
|
|
376
416
|
external
|
377
417
|
virtual
|
378
418
|
restricted()
|
379
|
-
onlyNftOfType(policyNftId, POLICY())
|
380
419
|
{
|
420
|
+
_checkNftType(policyNftId, POLICY());
|
421
|
+
|
381
422
|
NftId bundleNftId = policyInfo.bundleNftId;
|
382
423
|
NftId poolNftId = getRegistry().getObjectInfo(bundleNftId).parentNftId;
|
383
424
|
InstanceStore instanceStore = instance.getInstanceStore();
|
@@ -419,8 +460,9 @@ contract PoolService is
|
|
419
460
|
external
|
420
461
|
virtual
|
421
462
|
restricted()
|
422
|
-
onlyNftOfType(policyNftId, POLICY())
|
423
463
|
{
|
464
|
+
_checkNftType(policyNftId, POLICY());
|
465
|
+
|
424
466
|
Amount remainingCollateralAmount = policyInfo.sumInsuredAmount - policyInfo.claimAmount;
|
425
467
|
|
426
468
|
_bundleService.releaseCollateral(
|
@@ -429,10 +471,6 @@ contract PoolService is
|
|
429
471
|
policyInfo.bundleNftId,
|
430
472
|
remainingCollateralAmount);
|
431
473
|
|
432
|
-
_bundleService.unlinkPolicy(
|
433
|
-
instance,
|
434
|
-
policyNftId);
|
435
|
-
|
436
474
|
// update value locked with staking service
|
437
475
|
_staking.decreaseTotalValueLocked(
|
438
476
|
instance.getNftId(),
|
@@ -448,14 +486,18 @@ contract PoolService is
|
|
448
486
|
)
|
449
487
|
public
|
450
488
|
view
|
451
|
-
onlyNftOfType(productNftId, PRODUCT())
|
452
489
|
returns(
|
490
|
+
NftId poolNftId,
|
453
491
|
Amount totalCollateralAmount,
|
454
|
-
Amount localCollateralAmount
|
492
|
+
Amount localCollateralAmount,
|
493
|
+
bool poolIsVerifyingApplications
|
455
494
|
)
|
456
495
|
{
|
457
|
-
|
496
|
+
_checkNftType(productNftId, PRODUCT());
|
497
|
+
|
498
|
+
poolNftId = instanceReader.getProductInfo(productNftId).poolNftId;
|
458
499
|
IComponents.PoolInfo memory poolInfo = instanceReader.getPoolInfo(poolNftId);
|
500
|
+
poolIsVerifyingApplications = poolInfo.isVerifyingApplications;
|
459
501
|
|
460
502
|
(
|
461
503
|
totalCollateralAmount,
|
@@ -509,25 +551,61 @@ contract PoolService is
|
|
509
551
|
}
|
510
552
|
|
511
553
|
|
512
|
-
/// @dev transfers the specified amount from the
|
554
|
+
/// @dev transfers the specified amount from the "from account" to the pool's wallet
|
513
555
|
function _collectStakingAmount(
|
514
|
-
InstanceReader
|
556
|
+
InstanceReader reader,
|
515
557
|
NftId poolNftId,
|
516
|
-
address
|
558
|
+
address from,
|
517
559
|
Amount amount
|
518
560
|
)
|
519
561
|
internal
|
520
562
|
{
|
563
|
+
IComponents.ComponentInfo memory info = reader.getComponentInfo(poolNftId);
|
564
|
+
info.tokenHandler.collectTokens(
|
565
|
+
from,
|
566
|
+
amount);
|
567
|
+
}
|
521
568
|
|
522
|
-
|
523
|
-
|
524
|
-
|
525
|
-
|
526
|
-
|
527
|
-
|
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,
|
528
582
|
amount);
|
529
583
|
}
|
530
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
|
+
|
531
609
|
function _getDomain() internal pure override returns(ObjectType) {
|
532
610
|
return POOL();
|
533
611
|
}
|
@@ -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
|
|
@@ -135,14 +135,15 @@ contract ApplicationService is
|
|
135
135
|
external
|
136
136
|
virtual
|
137
137
|
nonReentrant()
|
138
|
-
onlyNftOfType(bundleNftId, BUNDLE())
|
139
138
|
returns (NftId applicationNftId)
|
140
139
|
{
|
140
|
+
_checkNftType(bundleNftId, BUNDLE());
|
141
|
+
|
141
142
|
(NftId productNftId,, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
|
142
143
|
|
143
144
|
// check if provided references are valid and linked to calling product contract
|
144
145
|
InstanceReader instanceReader = instance.getInstanceReader();
|
145
|
-
|
146
|
+
_checkLinkedApplicationParameters(
|
146
147
|
instanceReader,
|
147
148
|
productNftId,
|
148
149
|
riskId,
|
@@ -212,10 +213,10 @@ contract ApplicationService is
|
|
212
213
|
external
|
213
214
|
virtual
|
214
215
|
nonReentrant()
|
215
|
-
onlyNftOfType(policyNftId, POLICY())
|
216
|
-
onlyNftOfType(bundleNftId, BUNDLE())
|
217
216
|
returns (NftId applicationNftId)
|
218
217
|
{
|
218
|
+
_checkNftType(policyNftId, POLICY());
|
219
|
+
_checkNftType(bundleNftId, BUNDLE());
|
219
220
|
// TODO implement
|
220
221
|
}
|
221
222
|
|
@@ -232,9 +233,9 @@ contract ApplicationService is
|
|
232
233
|
external
|
233
234
|
virtual
|
234
235
|
nonReentrant()
|
235
|
-
onlyNftOfType(applicationNftId, POLICY())
|
236
|
-
onlyNftOfType(bundleNftId, BUNDLE())
|
237
236
|
{
|
237
|
+
_checkNftType(applicationNftId, POLICY());
|
238
|
+
_checkNftType(bundleNftId, BUNDLE());
|
238
239
|
// TODO implement
|
239
240
|
}
|
240
241
|
|
@@ -242,8 +243,9 @@ contract ApplicationService is
|
|
242
243
|
external
|
243
244
|
virtual
|
244
245
|
nonReentrant()
|
245
|
-
onlyNftOfType(applicationNftId, POLICY())
|
246
246
|
{
|
247
|
+
_checkNftType(applicationNftId, POLICY());
|
248
|
+
|
247
249
|
(,, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
|
248
250
|
instance.getInstanceStore().updateApplicationState(applicationNftId, REVOKED());
|
249
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
|
-
|
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
|
-
numberOfOracles,
|
44
|
+
productInfo,
|
45
|
+
authorization,
|
46
|
+
initialOwner,
|
51
47
|
""); // component data
|
52
48
|
}
|
53
49
|
}
|