@etherisc/gif-next 0.0.2-7d58318-324 → 0.0.2-7dad245-860
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +19 -2
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +2 -2
- 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/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +2 -2
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +2 -2
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +38 -97
- 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 +0 -75
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +88 -157
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +42 -58
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +0 -37
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +1 -43
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +2 -2
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +2 -2
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +54 -54
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +2 -2
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +80 -122
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +16 -16
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +9 -9
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +72 -194
- 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/mock/Dip.sol/Dip.json +2 -2
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +26 -85
- 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 +0 -37
- 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 +0 -75
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +2 -2
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +2 -2
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +35 -136
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +16 -16
- package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +383 -51
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +90 -26
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +205 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +25 -94
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +194 -54
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +25 -132
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +262 -90
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +35 -19
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +21 -32
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +9 -17
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +0 -75
- 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 +74 -58
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +30 -30
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +5 -0
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +16 -0
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +188 -108
- 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 +0 -37
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
- package/artifacts/contracts/product/{IProductService.sol/IProductService.json → IRiskService.sol/IRiskService.json} +2 -2
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +254 -174
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +42 -26
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +7 -2
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +2 -2
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/product/Product.sol/Product.json +0 -75
- package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
- package/artifacts/contracts/product/{ProductService.sol/ProductService.json → RiskService.sol/RiskService.json} +4 -17
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/{ProductServiceManager.sol/ProductServiceManager.json → RiskServiceManager.sol/RiskServiceManager.json} +12 -12
- 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/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 +2 -2
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +28 -28
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +2 -2
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +2 -2
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +2 -2
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +2 -2
- 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 +0 -64
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +140 -100
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +43 -51
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponent.sol/IComponent.json +0 -26
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +56 -0
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +0 -37
- 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/InitializableCustom.sol/InitializableCustom.dbg.json +1 -1
- package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
- package/artifacts/contracts/shared/{ERC165.sol/ERC165.json → InitializableERC165.sol/InitializableERC165.json} +4 -4
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +0 -75
- 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/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 +330 -11
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +108 -0
- package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
- package/artifacts/contracts/staking/IStaking.sol/IStaking.json +0 -26
- 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 +40 -113
- package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
- package/artifacts/contracts/staking/Staking.sol/Staking.json +44 -108
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +23 -23
- 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 +22 -22
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +12 -12
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +17 -12
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +7 -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/Amount.sol/AmountLib.json +37 -8
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +2 -2
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
- package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
- package/artifacts/contracts/type/Fee.sol/FeeLib.json +7 -2
- package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
- package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
- package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
- 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/RiskId.sol/RiskIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +26 -2
- package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
- package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
- package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +23 -4
- package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +1 -1
- package/artifacts/contracts/type/UFixed.sol/MathLib.json +9 -3
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +39 -2
- package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
- package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +2 -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/Authorization.sol +0 -1
- package/contracts/distribution/BasicDistribution.sol +4 -15
- package/contracts/distribution/Distribution.sol +3 -9
- package/contracts/distribution/DistributionService.sol +14 -44
- package/contracts/distribution/IDistributionComponent.sol +1 -1
- package/contracts/distribution/IDistributionService.sol +3 -6
- package/contracts/instance/IInstance.sol +7 -30
- package/contracts/instance/Instance.sol +8 -33
- package/contracts/instance/InstanceAdmin.sol +23 -4
- package/contracts/instance/InstanceReader.sol +10 -7
- package/contracts/instance/InstanceService.sol +52 -28
- package/contracts/instance/InstanceStore.sol +2 -1
- package/contracts/instance/base/ObjectLifecycle.sol +2 -3
- package/contracts/instance/module/IBundle.sol +1 -1
- package/contracts/instance/module/IComponents.sol +1 -6
- package/contracts/instance/module/IDistribution.sol +0 -1
- package/contracts/instance/module/IPolicy.sol +1 -1
- package/contracts/mock/Dip.sol +1 -1
- package/contracts/oracle/Oracle.sol +2 -6
- package/contracts/pool/BasicPool.sol +7 -5
- package/contracts/pool/BasicPoolAuthorization.sol +8 -2
- package/contracts/pool/BundleService.sol +168 -16
- package/contracts/pool/IBundleService.sol +33 -5
- package/contracts/pool/IPoolComponent.sol +7 -0
- package/contracts/pool/IPoolService.sol +37 -24
- package/contracts/pool/Pool.sol +31 -14
- package/contracts/pool/PoolService.sol +165 -60
- package/contracts/product/ApplicationService.sol +37 -17
- package/contracts/product/BasicProduct.sol +3 -33
- package/contracts/product/ClaimService.sol +8 -8
- package/contracts/product/IApplicationService.sol +1 -0
- package/contracts/product/IClaimService.sol +1 -0
- package/contracts/product/IPolicyService.sol +23 -17
- package/contracts/product/{IProductService.sol → IRiskService.sol} +1 -1
- package/contracts/product/PolicyService.sol +242 -133
- package/contracts/product/PricingService.sol +5 -1
- package/contracts/product/Product.sol +35 -17
- package/contracts/product/{ProductService.sol → RiskService.sol} +4 -6
- package/contracts/product/{ProductServiceManager.sol → RiskServiceManager.sol} +8 -8
- package/contracts/registry/RegistryAdmin.sol +10 -1
- package/contracts/registry/ReleaseRegistry.sol +0 -2
- package/contracts/shared/Component.sol +11 -23
- package/contracts/shared/ComponentService.sol +44 -25
- package/contracts/shared/IComponent.sol +4 -4
- package/contracts/shared/IComponentService.sol +5 -9
- package/contracts/shared/IInstanceLinkedComponent.sol +8 -15
- package/contracts/shared/{ERC165.sol → InitializableERC165.sol} +1 -1
- package/contracts/shared/NftOwnable.sol +2 -2
- package/contracts/shared/PolicyHolder.sol +2 -5
- package/contracts/shared/TokenHandler.sol +100 -19
- package/contracts/shared/TokenHandlerDeployerLib.sol +12 -0
- package/contracts/staking/StakeManagerLib.sol +0 -25
- package/contracts/staking/Staking.sol +5 -22
- package/contracts/staking/StakingService.sol +8 -12
- package/contracts/type/Amount.sol +12 -5
- package/contracts/type/Blocknumber.sol +7 -1
- package/contracts/type/Referral.sol +1 -0
- package/contracts/type/Seconds.sol +13 -1
- package/contracts/type/Timestamp.sol +11 -1
- package/contracts/type/UFixed.sol +29 -10
- package/package.json +1 -1
- package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +0 -4
- package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +0 -4
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
- package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
@@ -7,6 +7,7 @@ import {AccessAdmin} from "../authorization/AccessAdmin.sol";
|
|
7
7
|
import {AccessManagerCloneable} from "../authorization/AccessManagerCloneable.sol";
|
8
8
|
import {IAccessAdmin} from "../authorization/IAccessAdmin.sol";
|
9
9
|
import {IAuthorization} from "../authorization/IAuthorization.sol";
|
10
|
+
import {IComponent} from "../shared/IComponent.sol";
|
10
11
|
import {IModuleAuthorization} from "../authorization/IModuleAuthorization.sol";
|
11
12
|
import {IRegistry} from "../registry/IRegistry.sol";
|
12
13
|
import {IInstance} from "./IInstance.sol";
|
@@ -14,6 +15,7 @@ import {IService} from "../shared/IService.sol";
|
|
14
15
|
import {ObjectType, ObjectTypeLib, ALL, POOL, RELEASE} from "../type/ObjectType.sol";
|
15
16
|
import {RoleId, RoleIdLib, ADMIN_ROLE, PUBLIC_ROLE, DISTRIBUTION_OWNER_ROLE, ORACLE_OWNER_ROLE, POOL_OWNER_ROLE, PRODUCT_OWNER_ROLE} from "../type/RoleId.sol";
|
16
17
|
import {Str, StrLib} from "../type/String.sol";
|
18
|
+
import {TokenHandler} from "../shared/TokenHandler.sol";
|
17
19
|
import {VersionPart} from "../type/Version.sol";
|
18
20
|
|
19
21
|
|
@@ -111,26 +113,43 @@ contract InstanceAdmin is
|
|
111
113
|
/// @dev Initializes the authorization for the specified component.
|
112
114
|
/// Important: The component MUST be registered.
|
113
115
|
function initializeComponentAuthorization(
|
114
|
-
|
116
|
+
IComponent component,
|
115
117
|
IAuthorization authorization
|
116
118
|
)
|
117
119
|
external
|
118
120
|
{
|
119
|
-
_checkTargetIsReadyForAuthorization(
|
121
|
+
_checkTargetIsReadyForAuthorization(address(component));
|
120
122
|
|
121
123
|
_createRoles(authorization);
|
122
124
|
|
123
125
|
// create component target
|
124
126
|
_createTarget(
|
125
|
-
|
127
|
+
address(component),
|
126
128
|
authorization.getTargetName(),
|
127
129
|
true, // checkAuthority
|
128
130
|
false); // custom
|
129
131
|
|
132
|
+
_createTarget(
|
133
|
+
address(component.getTokenHandler()),
|
134
|
+
string(abi.encodePacked(authorization.getTargetName(), "TH")),
|
135
|
+
true,
|
136
|
+
false);
|
137
|
+
|
138
|
+
// FIXME: make this a bit nicer and work with IAuthorization. Use a specific role, not public - access to TokenHandler must be restricted
|
139
|
+
FunctionInfo[] memory functions = new FunctionInfo[](3);
|
140
|
+
functions[0] = toFunction(TokenHandler.collectTokens.selector, "collectTokens");
|
141
|
+
functions[1] = toFunction(TokenHandler.collectTokensToThreeRecipients.selector, "collectTokensToThreeRecipients");
|
142
|
+
functions[2] = toFunction(TokenHandler.distributeTokens.selector, "distributeTokens");
|
143
|
+
|
144
|
+
_authorizeTargetFunctions(
|
145
|
+
address(component.getTokenHandler()),
|
146
|
+
getPublicRole(),
|
147
|
+
functions);
|
148
|
+
|
130
149
|
_grantRoleToAccount(
|
131
150
|
authorization.getTargetRole(
|
132
151
|
authorization.getTarget()),
|
133
|
-
|
152
|
+
address(component));
|
134
153
|
|
135
154
|
_createTargetAuthorizations(authorization);
|
136
155
|
}
|
@@ -1,25 +1,20 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
2
|
pragma solidity ^0.8.20;
|
3
3
|
|
4
|
-
import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
|
5
|
-
|
6
4
|
import {Amount} from "../type/Amount.sol";
|
7
5
|
import {ClaimId} from "../type/ClaimId.sol";
|
8
6
|
import {DistributorType} from "../type/DistributorType.sol";
|
9
|
-
import {Fee, FeeLib} from "../type/Fee.sol";
|
10
7
|
import {Key32} from "../type/Key32.sol";
|
11
8
|
import {NftId} from "../type/NftId.sol";
|
12
|
-
import {
|
9
|
+
import {COMPONENT, DISTRIBUTOR, DISTRIBUTION, PRODUCT, POLICY, POOL, BUNDLE} from "../type/ObjectType.sol";
|
13
10
|
import {PayoutId} from "../type/PayoutId.sol";
|
14
11
|
import {ReferralId, ReferralStatus, ReferralLib, REFERRAL_OK, REFERRAL_ERROR_UNKNOWN, REFERRAL_ERROR_EXPIRED, REFERRAL_ERROR_EXHAUSTED} from "../type/Referral.sol";
|
15
12
|
import {RequestId} from "../type/RequestId.sol";
|
16
13
|
import {RiskId} from "../type/RiskId.sol";
|
17
14
|
import {RoleId} from "../type/RoleId.sol";
|
18
15
|
import {StateId} from "../type/StateId.sol";
|
19
|
-
import {UFixed,
|
20
|
-
import {Version} from "../type/Version.sol";
|
16
|
+
import {UFixed, UFixedLib} from "../type/UFixed.sol";
|
21
17
|
|
22
|
-
import {IRegistry} from "../registry/IRegistry.sol";
|
23
18
|
import {IBundle} from "../instance/module/IBundle.sol";
|
24
19
|
import {IComponents} from "../instance/module/IComponents.sol";
|
25
20
|
import {IDistribution} from "../instance/module/IDistribution.sol";
|
@@ -85,6 +80,14 @@ contract InstanceReader {
|
|
85
80
|
return _store.getState(toPolicyKey(policyNftId));
|
86
81
|
}
|
87
82
|
|
83
|
+
function getBundleState(NftId bundleNftId)
|
84
|
+
public
|
85
|
+
view
|
86
|
+
returns (StateId state)
|
87
|
+
{
|
88
|
+
return _store.getState(toBundleKey(bundleNftId));
|
89
|
+
}
|
90
|
+
|
88
91
|
/// @dev returns true iff policy may be closed
|
89
92
|
/// a policy can be closed all conditions below are met
|
90
93
|
/// - policy exists
|
@@ -104,32 +104,9 @@ contract InstanceService is
|
|
104
104
|
// tx sender will become instance owner
|
105
105
|
address instanceOwner = msg.sender;
|
106
106
|
|
107
|
-
//
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
// set up the instance admin
|
112
|
-
InstanceAdmin clonedInstanceAdmin = InstanceAdmin(Clones.clone(_masterInstanceAdmin));
|
113
|
-
clonedAccessManager.initialize(
|
114
|
-
address(clonedInstanceAdmin)); // grant ADMIN_ROLE to instance admin
|
115
|
-
|
116
|
-
clonedInstanceAdmin.initialize(
|
117
|
-
clonedAccessManager,
|
118
|
-
InstanceAdmin(_masterInstanceAdmin).getInstanceAuthorization());
|
119
|
-
|
120
|
-
InstanceStore clonedInstanceStore = InstanceStore(Clones.clone(address(_masterInstanceStore)));
|
121
|
-
BundleSet clonedBundleSet = BundleSet(Clones.clone(_masterInstanceBundleSet));
|
122
|
-
InstanceReader clonedInstanceReader = InstanceReader(Clones.clone(address(_masterInstanceReader)));
|
123
|
-
|
124
|
-
// clone instance
|
125
|
-
clonedInstance = Instance(Clones.clone(_masterInstance));
|
126
|
-
clonedInstance.initialize(
|
127
|
-
clonedInstanceAdmin,
|
128
|
-
clonedInstanceStore,
|
129
|
-
clonedBundleSet,
|
130
|
-
clonedInstanceReader,
|
131
|
-
getRegistry(),
|
132
|
-
instanceOwner);
|
107
|
+
// create instance admin and instance
|
108
|
+
InstanceAdmin instanceAdmin = _createInstanceAdmin();
|
109
|
+
clonedInstance = _createInstance(instanceAdmin, instanceOwner);
|
133
110
|
|
134
111
|
// register cloned instance with registry
|
135
112
|
clonedInstanceNftId = _registryService.registerInstance(
|
@@ -142,7 +119,7 @@ contract InstanceService is
|
|
142
119
|
TargetManagerLib.getDefaultRewardRate());
|
143
120
|
|
144
121
|
// MUST be set after instance is set up and registered
|
145
|
-
|
122
|
+
instanceAdmin.initializeInstanceAuthorization(address(clonedInstance));
|
146
123
|
|
147
124
|
emit LogInstanceCloned(
|
148
125
|
clonedInstanceNftId,
|
@@ -337,7 +314,7 @@ contract InstanceService is
|
|
337
314
|
|
338
315
|
InstanceAdmin instanceAdmin = instance.getInstanceAdmin();
|
339
316
|
instanceAdmin.initializeComponentAuthorization(
|
340
|
-
|
317
|
+
component,
|
341
318
|
component.getAuthorization());
|
342
319
|
}
|
343
320
|
|
@@ -362,6 +339,53 @@ contract InstanceService is
|
|
362
339
|
);
|
363
340
|
}
|
364
341
|
|
342
|
+
/// @dev create new cloned instance admin
|
343
|
+
/// function used to setup a new instance
|
344
|
+
function _createInstanceAdmin()
|
345
|
+
internal
|
346
|
+
virtual
|
347
|
+
returns (InstanceAdmin clonedInstanceAdmin)
|
348
|
+
{
|
349
|
+
// start with setting up a new OZ access manager
|
350
|
+
AccessManagerCloneable clonedAccessManager = AccessManagerCloneable(
|
351
|
+
Clones.clone(_masterAccessManager));
|
352
|
+
|
353
|
+
// set up the instance admin
|
354
|
+
clonedInstanceAdmin = InstanceAdmin(Clones.clone(_masterInstanceAdmin));
|
355
|
+
clonedAccessManager.initialize(
|
356
|
+
address(clonedInstanceAdmin)); // grant ADMIN_ROLE to instance admin
|
357
|
+
|
358
|
+
clonedInstanceAdmin.initialize(
|
359
|
+
clonedAccessManager,
|
360
|
+
InstanceAdmin(_masterInstanceAdmin).getInstanceAuthorization());
|
361
|
+
}
|
362
|
+
|
363
|
+
|
364
|
+
/// @dev create new cloned instance
|
365
|
+
/// function used to setup a new instance
|
366
|
+
function _createInstance(
|
367
|
+
InstanceAdmin instanceAdmin,
|
368
|
+
address instanceOwner
|
369
|
+
)
|
370
|
+
internal
|
371
|
+
virtual
|
372
|
+
returns (Instance clonedInstance)
|
373
|
+
{
|
374
|
+
InstanceStore clonedInstanceStore = InstanceStore(Clones.clone(address(_masterInstanceStore)));
|
375
|
+
BundleSet clonedBundleSet = BundleSet(Clones.clone(_masterInstanceBundleSet));
|
376
|
+
InstanceReader clonedInstanceReader = InstanceReader(Clones.clone(address(_masterInstanceReader)));
|
377
|
+
|
378
|
+
// clone instance
|
379
|
+
clonedInstance = Instance(Clones.clone(_masterInstance));
|
380
|
+
clonedInstance.initialize(
|
381
|
+
instanceAdmin,
|
382
|
+
clonedInstanceStore,
|
383
|
+
clonedBundleSet,
|
384
|
+
clonedInstanceReader,
|
385
|
+
getRegistry(),
|
386
|
+
instanceOwner);
|
387
|
+
}
|
388
|
+
|
365
389
|
|
366
390
|
/// all gif targets MUST be children of instanceNftId
|
367
391
|
function _createGifTarget(
|
@@ -7,7 +7,7 @@ import {Amount} from "../type/Amount.sol";
|
|
7
7
|
import {Key32} from "../type/Key32.sol";
|
8
8
|
import {NftId} from "../type/NftId.sol";
|
9
9
|
import {ClaimId} from "../type/ClaimId.sol";
|
10
|
-
import {ObjectType, BUNDLE, POLICY, POOL, PRODUCT, COMPONENT, DISTRIBUTOR
|
10
|
+
import {ObjectType, BUNDLE, POLICY, POOL, PRODUCT, COMPONENT, DISTRIBUTOR} from "../type/ObjectType.sol";
|
11
11
|
import {RequestId} from "../type/RequestId.sol";
|
12
12
|
import {RiskId} from "../type/RiskId.sol";
|
13
13
|
import {StateId} from "../type/StateId.sol";
|
@@ -116,6 +116,7 @@ contract InstanceStore is
|
|
116
116
|
|
117
117
|
//--- Distributor -------------------------------------------------------//
|
118
118
|
function createDistributor(NftId distributorNftId, IDistribution.DistributorInfo memory info) external restricted() {
|
119
|
+
_registerBalanceTarget(distributorNftId);
|
119
120
|
_create(_toNftKey32(distributorNftId, DISTRIBUTOR()), abi.encode(info));
|
120
121
|
}
|
121
122
|
|
@@ -54,9 +54,7 @@ contract ObjectLifecycle is
|
|
54
54
|
setStateTransition(POLICY(), APPLIED(), REVOKED());
|
55
55
|
setStateTransition(POLICY(), APPLIED(), DECLINED());
|
56
56
|
setStateTransition(POLICY(), APPLIED(), COLLATERALIZED());
|
57
|
-
setStateTransition(POLICY(),
|
58
|
-
setStateTransition(POLICY(), COLLATERALIZED(), ACTIVE());
|
59
|
-
setStateTransition(POLICY(), ACTIVE(), CLOSED());
|
57
|
+
setStateTransition(POLICY(), COLLATERALIZED(), CLOSED());
|
60
58
|
}
|
61
59
|
|
62
60
|
function _setupClaimLifecycle() private {
|
@@ -68,6 +66,7 @@ contract ObjectLifecycle is
|
|
68
66
|
|
69
67
|
function _setupPayoutLifecycle() private {
|
70
68
|
setInitialState(PAYOUT(), EXPECTED());
|
69
|
+
// TODO: add state cancelled
|
71
70
|
setStateTransition(PAYOUT(), EXPECTED(), PAID());
|
72
71
|
}
|
73
72
|
|
@@ -13,7 +13,7 @@ interface IBundle {
|
|
13
13
|
NftId poolNftId;
|
14
14
|
Fee fee; // bundle fee on net premium amounts
|
15
15
|
bytes filter; // required conditions for applications to be considered for collateralization by this bundle
|
16
|
-
|
16
|
+
Timestamp activatedAt;
|
17
17
|
Timestamp expiredAt; // no new policies starting with this timestamp
|
18
18
|
Timestamp closedAt; // no open policies, locked amount = 0
|
19
19
|
}
|
@@ -35,17 +35,12 @@ interface IComponents {
|
|
35
35
|
|
36
36
|
|
37
37
|
struct PoolInfo {
|
38
|
-
NftId productNftId; // the nft of the product this pool is linked to
|
39
38
|
RoleId bundleOwnerRole; // the required role for bundle owners
|
40
|
-
//
|
41
|
-
Amount maxCapitalAmount; // max capital amount allowed for pool
|
39
|
+
Amount maxBalanceAmount; // max balance amount allowed for pool
|
42
40
|
bool isInterceptingBundleTransfers; // intercepts nft transfers for bundles
|
43
41
|
bool isExternallyManaged; // funding bundles is restricted to book keeping, actual funds may be provided as needed to support payouts
|
44
42
|
bool isVerifyingApplications; // underwriting requires the pool component checks/confirms the applications
|
45
43
|
UFixed collateralizationLevel; // factor to calculate collateral for sum insurance (default 100%)
|
46
44
|
UFixed retentionLevel; // amount of collateral held in pool (default 100%)
|
47
|
-
Fee poolFee; // pool fee on net premium
|
48
|
-
Fee stakingFee; // pool fee on staked capital from investor
|
49
|
-
Fee performanceFee; // pool fee on profits from capital investors
|
50
45
|
}
|
51
46
|
}
|
@@ -22,7 +22,7 @@ interface IPolicy {
|
|
22
22
|
uint256 netPremiumAmount;
|
23
23
|
// fullPremium = netPremium + all fixed amounts + all variable amounts (excl commission and minDistribtuionOwnerFee variable part)
|
24
24
|
uint256 fullPremiumAmount;
|
25
|
-
// premium = fullPremium - discount
|
25
|
+
// effective premium = fullPremium - discount
|
26
26
|
uint256 premiumAmount;
|
27
27
|
uint256 productFeeFixAmount;
|
28
28
|
uint256 poolFeeFixAmount;
|
package/contracts/mock/Dip.sol
CHANGED
@@ -8,14 +8,10 @@ import {IComponentService} from "../shared/IComponentService.sol";
|
|
8
8
|
import {IInstanceLinkedComponent} from "../shared/IInstanceLinkedComponent.sol";
|
9
9
|
import {IOracleComponent} from "./IOracleComponent.sol";
|
10
10
|
import {IOracleService} from "./IOracleService.sol";
|
11
|
-
import {
|
12
|
-
import {ITransferInterceptor} from "../registry/ITransferInterceptor.sol";
|
13
|
-
import {NftId, NftIdLib} from "../type/NftId.sol";
|
11
|
+
import {NftId} from "../type/NftId.sol";
|
14
12
|
import {InstanceLinkedComponent} from "../shared/InstanceLinkedComponent.sol";
|
15
|
-
import {InstanceReader} from "../instance/InstanceReader.sol";
|
16
13
|
import {RequestId} from "../type/RequestId.sol";
|
17
|
-
import {Timestamp
|
18
|
-
import {UFixed} from "../type/UFixed.sol";
|
14
|
+
import {Timestamp} from "../type/Timestamp.sol";
|
19
15
|
|
20
16
|
|
21
17
|
abstract contract Oracle is
|
@@ -14,6 +14,7 @@ import {NftId, NftIdLib} from "../type/NftId.sol";
|
|
14
14
|
import {BUNDLE, COMPONENT, POOL} from "../type/ObjectType.sol";
|
15
15
|
import {RoleId, PUBLIC_ROLE} from "../type/RoleId.sol";
|
16
16
|
import {Seconds} from "../type/Seconds.sol";
|
17
|
+
import {Timestamp} from "../type/Timestamp.sol";
|
17
18
|
import {TokenHandler} from "../shared/TokenHandler.sol";
|
18
19
|
import {UFixed, UFixedLib} from "../type/UFixed.sol";
|
19
20
|
|
@@ -81,8 +82,9 @@ abstract contract BasicPool is
|
|
81
82
|
virtual
|
82
83
|
restricted()
|
83
84
|
onlyBundleOwner(bundleNftId)
|
85
|
+
returns(Timestamp newExpiredAt)
|
84
86
|
{
|
85
|
-
_extend(bundleNftId, lifetimeExtension);
|
87
|
+
return _extend(bundleNftId, lifetimeExtension);
|
86
88
|
}
|
87
89
|
|
88
90
|
|
@@ -106,13 +108,13 @@ abstract contract BasicPool is
|
|
106
108
|
}
|
107
109
|
|
108
110
|
|
109
|
-
function
|
111
|
+
function closeBundle(NftId bundleNftId)
|
110
112
|
public
|
111
113
|
virtual
|
112
114
|
restricted()
|
113
115
|
onlyBundleOwner(bundleNftId)
|
114
116
|
{
|
115
|
-
|
117
|
+
_closeBundle(bundleNftId);
|
116
118
|
}
|
117
119
|
|
118
120
|
|
@@ -129,13 +131,13 @@ abstract contract BasicPool is
|
|
129
131
|
}
|
130
132
|
|
131
133
|
|
132
|
-
function
|
134
|
+
function setMaxBalanceAmount(Amount maxBalanceAmount)
|
133
135
|
public
|
134
136
|
virtual
|
135
137
|
restricted()
|
136
138
|
onlyOwner()
|
137
139
|
{
|
138
|
-
|
140
|
+
_setMaxBalanceAmount(maxBalanceAmount);
|
139
141
|
}
|
140
142
|
|
141
143
|
|
@@ -5,6 +5,7 @@ import {Authorization} from "../authorization/Authorization.sol";
|
|
5
5
|
import {BasicPool} from "./BasicPool.sol";
|
6
6
|
import {IAccess} from "../authorization/IAccess.sol";
|
7
7
|
import {IInstanceLinkedComponent} from "../shared/IInstanceLinkedComponent.sol";
|
8
|
+
import {IPoolComponent} from "./IPoolComponent.sol";
|
8
9
|
import {POOL} from "../type/ObjectType.sol";
|
9
10
|
import {PUBLIC_ROLE} from "../../contracts/type/RoleId.sol";
|
10
11
|
import {RoleId} from "../type/RoleId.sol";
|
@@ -39,14 +40,19 @@ contract BasicPoolAuthorization
|
|
39
40
|
_authorize(functions, BasicPool.extend.selector, "extend");
|
40
41
|
_authorize(functions, BasicPool.lockBundle.selector, "lockBundle");
|
41
42
|
_authorize(functions, BasicPool.unlockBundle.selector, "unlockBundle");
|
42
|
-
_authorize(functions, BasicPool.
|
43
|
+
_authorize(functions, BasicPool.closeBundle.selector, "closeBundle");
|
43
44
|
_authorize(functions, BasicPool.setBundleFee.selector, "setBundleFee");
|
44
45
|
|
45
|
-
_authorize(functions, BasicPool.
|
46
|
+
_authorize(functions, BasicPool.setMaxBalanceAmount.selector, "setMaxBalanceAmount");
|
46
47
|
_authorize(functions, BasicPool.setBundleOwnerRole.selector, "setBundleOwnerRole");
|
47
48
|
_authorize(functions, BasicPool.setFees.selector, "setFees");
|
49
|
+
_authorize(functions, BasicPool.stake.selector, "stake");
|
50
|
+
_authorize(functions, BasicPool.unstake.selector, "unstake");
|
51
|
+
_authorize(functions, BasicPool.extend.selector, "extend");
|
48
52
|
|
49
53
|
_authorize(functions, IInstanceLinkedComponent.withdrawFees.selector, "withdrawFees");
|
54
|
+
|
55
|
+
_authorize(functions, IPoolComponent.withdrawBundleFees.selector, "withdrawBundleFees");
|
50
56
|
}
|
51
57
|
}
|
52
58
|
|
@@ -3,6 +3,7 @@ pragma solidity ^0.8.20;
|
|
3
3
|
|
4
4
|
import {IBundle} from "../instance/module/IBundle.sol";
|
5
5
|
import {IBundleService} from "./IBundleService.sol";
|
6
|
+
import {IComponents} from "../instance/module/IComponents.sol";
|
6
7
|
import {IComponentService} from "../shared/IComponentService.sol";
|
7
8
|
import {IRegistry} from "../registry/IRegistry.sol";
|
8
9
|
import {IRegistryService} from "../registry/IRegistryService.sol";
|
@@ -19,7 +20,7 @@ import {NftId, NftIdLib} from "../type/NftId.sol";
|
|
19
20
|
import {ObjectType, COMPONENT, POOL, BUNDLE, REGISTRY} from "../type/ObjectType.sol";
|
20
21
|
import {StateId, ACTIVE, PAUSED, CLOSED, KEEP_STATE} from "../type/StateId.sol";
|
21
22
|
import {Seconds} from "../type/Seconds.sol";
|
22
|
-
import {TimestampLib, zeroTimestamp} from "../type/Timestamp.sol";
|
23
|
+
import {Timestamp, TimestampLib, zeroTimestamp} from "../type/Timestamp.sol";
|
23
24
|
|
24
25
|
string constant BUNDLE_SERVICE_NAME = "BundleService";
|
25
26
|
|
@@ -27,8 +28,7 @@ contract BundleService is
|
|
27
28
|
ComponentVerifyingService,
|
28
29
|
IBundleService
|
29
30
|
{
|
30
|
-
|
31
|
-
|
31
|
+
|
32
32
|
string public constant NAME = "BundleService";
|
33
33
|
|
34
34
|
address private _registryAddress;
|
@@ -111,13 +111,15 @@ contract BundleService is
|
|
111
111
|
InstanceStore instanceStore = instance.getInstanceStore();
|
112
112
|
instanceStore.createBundle(
|
113
113
|
bundleNftId,
|
114
|
-
IBundle.BundleInfo(
|
115
|
-
poolNftId,
|
116
|
-
bundleFee,
|
117
|
-
filter,
|
118
|
-
|
119
|
-
TimestampLib.blockTimestamp().addSeconds(lifetime),
|
120
|
-
zeroTimestamp()
|
114
|
+
IBundle.BundleInfo({
|
115
|
+
poolNftId: poolNftId,
|
116
|
+
fee: bundleFee,
|
117
|
+
filter: filter,
|
118
|
+
activatedAt: TimestampLib.blockTimestamp(),
|
119
|
+
expiredAt: TimestampLib.blockTimestamp().addSeconds(lifetime),
|
120
|
+
closedAt: zeroTimestamp()
|
121
|
+
})
|
122
|
+
);
|
121
123
|
|
122
124
|
// bundle book keeping
|
123
125
|
_componentService.increaseBundleBalance(
|
@@ -129,7 +131,6 @@ contract BundleService is
|
|
129
131
|
// put bundle under bundle managemet
|
130
132
|
BundleSet bundleManager = instance.getBundleSet();
|
131
133
|
bundleManager.add(bundleNftId);
|
132
|
-
|
133
134
|
// TODO add logging
|
134
135
|
}
|
135
136
|
|
@@ -146,7 +147,7 @@ contract BundleService is
|
|
146
147
|
restricted()
|
147
148
|
{
|
148
149
|
InstanceReader instanceReader = instance.getInstanceReader();
|
149
|
-
StateId bundleState =
|
150
|
+
StateId bundleState = instance.getInstanceReader().getBundleState(bundleNftId);
|
150
151
|
IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
|
151
152
|
|
152
153
|
// ensure bundle is active and not yet expired
|
@@ -216,9 +217,9 @@ contract BundleService is
|
|
216
217
|
external
|
217
218
|
virtual
|
218
219
|
restricted
|
220
|
+
returns (Amount unstakedAmount, Amount feeAmount)
|
219
221
|
{
|
220
|
-
|
221
|
-
instance.getInstanceStore().updateBundleState(bundleNftId, CLOSED());
|
222
|
+
InstanceReader instanceReader = instance.getInstanceReader();
|
222
223
|
|
223
224
|
// ensure no open policies attached to bundle
|
224
225
|
BundleSet bundleManager = instance.getBundleSet();
|
@@ -227,8 +228,117 @@ contract BundleService is
|
|
227
228
|
revert ErrorBundleServiceBundleWithOpenPolicies(bundleNftId, openPolicies);
|
228
229
|
}
|
229
230
|
|
230
|
-
|
231
|
-
|
231
|
+
{
|
232
|
+
// update bundle state
|
233
|
+
InstanceStore instanceStore = instance.getInstanceStore();
|
234
|
+
instanceStore.updateBundleState(bundleNftId, CLOSED());
|
235
|
+
bundleManager.lock(bundleNftId);
|
236
|
+
|
237
|
+
// decrease bundle counters
|
238
|
+
Amount balanceAmountWithFees = instanceReader.getBalanceAmount(bundleNftId);
|
239
|
+
feeAmount = instanceReader.getFeeAmount(bundleNftId);
|
240
|
+
unstakedAmount = balanceAmountWithFees - feeAmount;
|
241
|
+
_componentService.decreaseBundleBalance(instanceStore, bundleNftId, unstakedAmount, feeAmount);
|
242
|
+
}
|
243
|
+
}
|
244
|
+
|
245
|
+
/// @inheritdoc IBundleService
|
246
|
+
function stake(
|
247
|
+
IInstance instance,
|
248
|
+
NftId bundleNftId,
|
249
|
+
Amount amount
|
250
|
+
)
|
251
|
+
external
|
252
|
+
virtual
|
253
|
+
// TODO: restricted() (once #462 is done)
|
254
|
+
{
|
255
|
+
IBundle.BundleInfo memory bundleInfo = instance.getInstanceReader().getBundleInfo(bundleNftId);
|
256
|
+
StateId bundleState = instance.getInstanceReader().getBundleState(bundleNftId);
|
257
|
+
|
258
|
+
if( (bundleState != ACTIVE() && bundleState != PAUSED()) // locked bundles can be staked
|
259
|
+
|| bundleInfo.expiredAt < TimestampLib.blockTimestamp()
|
260
|
+
|| bundleInfo.closedAt.gtz()) {
|
261
|
+
revert ErrorBundleServiceBundleNotOpen(bundleNftId, bundleState, bundleInfo.expiredAt);
|
262
|
+
}
|
263
|
+
|
264
|
+
_componentService.increaseBundleBalance(
|
265
|
+
instance.getInstanceStore(),
|
266
|
+
bundleNftId,
|
267
|
+
amount,
|
268
|
+
AmountLib.zero());
|
269
|
+
}
|
270
|
+
|
271
|
+
/// @inheritdoc IBundleService
|
272
|
+
function unstake(
|
273
|
+
IInstance instance,
|
274
|
+
NftId bundleNftId,
|
275
|
+
Amount amount
|
276
|
+
)
|
277
|
+
external
|
278
|
+
virtual
|
279
|
+
// TODO: restricted() (once #462 is done)
|
280
|
+
returns (Amount unstakedAmount)
|
281
|
+
{
|
282
|
+
InstanceStore instanceStore = instance.getInstanceStore();
|
283
|
+
(
|
284
|
+
Amount balanceAmount,
|
285
|
+
Amount lockedAmount,
|
286
|
+
Amount feeAmount
|
287
|
+
) = instanceStore.getAmounts(bundleNftId);
|
288
|
+
|
289
|
+
Amount unstakedAmount = amount;
|
290
|
+
Amount availableAmount = balanceAmount - (lockedAmount + feeAmount);
|
291
|
+
|
292
|
+
// if amount is max, then unstake all available
|
293
|
+
if (amount.gte(AmountLib.max())) {
|
294
|
+
unstakedAmount = availableAmount;
|
295
|
+
}
|
296
|
+
|
297
|
+
// ensure unstaked amount does not exceed available amount
|
298
|
+
if (unstakedAmount > availableAmount) {
|
299
|
+
revert ErrorBundleServiceUnstakeAmountExceedsLimit(amount, availableAmount);
|
300
|
+
}
|
301
|
+
|
302
|
+
_componentService.decreaseBundleBalance(
|
303
|
+
instanceStore,
|
304
|
+
bundleNftId,
|
305
|
+
unstakedAmount,
|
306
|
+
AmountLib.zero());
|
307
|
+
|
308
|
+
return unstakedAmount;
|
309
|
+
}
|
310
|
+
|
311
|
+
/// @inheritdoc IBundleService
|
312
|
+
function extend(NftId bundleNftId, Seconds lifetimeExtension)
|
313
|
+
external
|
314
|
+
virtual
|
315
|
+
// TODO: restricted() (once #462 is done)
|
316
|
+
returns (Timestamp extendedExpiredAt)
|
317
|
+
{
|
318
|
+
(NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
|
319
|
+
IBundle.BundleInfo memory bundleInfo = instance.getInstanceReader().getBundleInfo(bundleNftId);
|
320
|
+
StateId bundleState = instance.getInstanceReader().getBundleState(bundleNftId);
|
321
|
+
|
322
|
+
// ensure bundle belongs to the pool
|
323
|
+
if (bundleInfo.poolNftId != poolNftId) {
|
324
|
+
revert ErrorBundleServiceBundlePoolMismatch(bundleNftId, bundleInfo.poolNftId, poolNftId);
|
325
|
+
}
|
326
|
+
|
327
|
+
// ensure bundle is active and not yet expired
|
328
|
+
if(bundleState != ACTIVE() || bundleInfo.expiredAt < TimestampLib.blockTimestamp()) {
|
329
|
+
revert ErrorBundleServiceBundleNotOpen(bundleNftId, bundleState, bundleInfo.expiredAt);
|
330
|
+
}
|
331
|
+
|
332
|
+
if (lifetimeExtension.eqz()) {
|
333
|
+
revert ErrorBundleServiceExtensionLifetimeIsZero();
|
334
|
+
}
|
335
|
+
|
336
|
+
bundleInfo.expiredAt = bundleInfo.expiredAt.addSeconds(lifetimeExtension);
|
337
|
+
instance.getInstanceStore().updateBundle(bundleNftId, bundleInfo, KEEP_STATE());
|
338
|
+
|
339
|
+
emit LogBundleServiceBundleExtended(bundleNftId, lifetimeExtension, bundleInfo.expiredAt);
|
340
|
+
|
341
|
+
return bundleInfo.expiredAt;
|
232
342
|
}
|
233
343
|
|
234
344
|
|
@@ -262,6 +372,48 @@ contract BundleService is
|
|
262
372
|
instance.getBundleSet().unlinkPolicy(policyNftId);
|
263
373
|
}
|
264
374
|
|
375
|
+
/// @inheritdoc IBundleService
|
376
|
+
function withdrawBundleFees(NftId bundleNftId, Amount amount)
|
377
|
+
public
|
378
|
+
virtual
|
379
|
+
// TODO: restricted() (once #462 is done)
|
380
|
+
returns (Amount withdrawnAmount)
|
381
|
+
{
|
382
|
+
(NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
|
383
|
+
InstanceReader reader = instance.getInstanceReader();
|
384
|
+
|
385
|
+
IComponents.ComponentInfo memory poolInfo = reader.getComponentInfo(poolNftId);
|
386
|
+
address poolWallet = poolInfo.wallet;
|
387
|
+
|
388
|
+
IBundle.BundleInfo memory bundleInfo = reader.getBundleInfo(bundleNftId);
|
389
|
+
|
390
|
+
// determine withdrawn amount
|
391
|
+
withdrawnAmount = amount;
|
392
|
+
if (withdrawnAmount.gte(AmountLib.max())) {
|
393
|
+
withdrawnAmount = reader.getFeeAmount(bundleNftId);
|
394
|
+
} else {
|
395
|
+
if (withdrawnAmount.gt(reader.getFeeAmount(bundleNftId))) {
|
396
|
+
revert ErrorBundleServiceFeesWithdrawAmountExceedsLimit(withdrawnAmount, reader.getFeeAmount(bundleNftId));
|
397
|
+
}
|
398
|
+
}
|
399
|
+
|
400
|
+
// decrease fee counters by withdrawnAmount
|
401
|
+
{
|
402
|
+
InstanceStore store = instance.getInstanceStore();
|
403
|
+
// decrease fee amount of the bundle
|
404
|
+
_componentService.decreaseBundleBalance(store, bundleNftId, AmountLib.zero(), withdrawnAmount);
|
405
|
+
// decrease pool balance
|
406
|
+
_componentService.decreasePoolBalance(store, poolNftId, withdrawnAmount, AmountLib.zero());
|
407
|
+
}
|
408
|
+
|
409
|
+
// transfer amount to bundle owner
|
410
|
+
{
|
411
|
+
address owner = getRegistry().ownerOf(bundleNftId);
|
412
|
+
emit LogBundleServiceFeesWithdrawn(bundleNftId, owner, address(poolInfo.token), withdrawnAmount);
|
413
|
+
poolInfo.tokenHandler.distributeTokens(poolWallet, owner, withdrawnAmount);
|
414
|
+
}
|
415
|
+
}
|
416
|
+
|
265
417
|
/// @dev links policy to bundle
|
266
418
|
function _linkPolicy(IInstance instance, NftId policyNftId)
|
267
419
|
internal
|