@etherisc/gif-next 0.0.2-2a59cd5-352 → 0.0.2-2af39ab-356
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 +8 -8
- package/artifacts/contracts/components/Component.sol/Component.dbg.json +1 -1
- package/artifacts/contracts/components/Component.sol/Component.json +62 -145
- package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/components/Distribution.sol/Distribution.json +112 -226
- package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IComponent.sol/IComponent.json +59 -92
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +90 -171
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +247 -205
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +63 -164
- package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/components/Pool.sol/Pool.json +264 -292
- package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/components/Product.sol/Product.json +67 -218
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +1 -1
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +30 -11
- package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +415 -522
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +19 -184
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +501 -633
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +2 -2
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +120 -222
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +70 -284
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +196 -113
- package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +1 -1
- package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +2 -2
- package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.json +18 -220
- package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +1 -1
- package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +40 -10
- package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +1 -1
- package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +36 -11
- 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 +4 -0
- package/artifacts/contracts/instance/module/IComponents.sol/IComponents.json +10 -0
- 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/instance/module/ISetup.sol/ISetup.dbg.json +1 -1
- package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.json +182 -331
- package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.json +665 -0
- package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +141 -366
- package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +182 -107
- package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.json +754 -0
- package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.json +637 -0
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +645 -268
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +300 -109
- package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.json +124 -206
- package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.json +89 -257
- package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.json +409 -0
- package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +369 -167
- package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.json +25 -290
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +69 -153
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +12 -177
- package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +65 -443
- package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +188 -141
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +108 -249
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +183 -104
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +42 -272
- package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +179 -104
- 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/IRegistryService.sol/IRegistryService.json +12 -177
- 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/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +2 -2
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +31 -261
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +182 -113
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +11 -11
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +34 -67
- package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +1 -1
- package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
- package/artifacts/contracts/shared/ERC165.sol/ERC165.json +2 -2
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +4 -30
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +4 -30
- package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.json +0 -21
- package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
- package/artifacts/contracts/shared/IService.sol/IService.json +12 -177
- package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
- package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +0 -150
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +10 -62
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +2 -23
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +171 -88
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +11 -74
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -23
- package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
- package/artifacts/contracts/shared/Service.sol/Service.json +13 -215
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +2 -2
- package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
- package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +2 -2
- package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
- package/artifacts/contracts/shared/Versionable.sol/Versionable.json +0 -150
- package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +1 -1
- package/artifacts/contracts/test/TestFee.sol/TestFee.json +2 -2
- package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +1 -1
- package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +11 -74
- package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +1 -1
- package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +2 -2
- package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +1 -1
- package/artifacts/contracts/test/TestService.sol/TestService.json +31 -269
- package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +1 -1
- package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +1 -1
- package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +2 -2
- package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +1 -1
- package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +6 -188
- package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +1 -1
- package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +1 -1
- package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
- package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +2 -2
- package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
- package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.json +100 -0
- package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
- package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +2 -2
- package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +1 -1
- package/artifacts/contracts/types/Fee.sol/FeeLib.json +2 -2
- package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +1 -1
- package/artifacts/contracts/types/Key32.sol/Key32Lib.json +2 -2
- package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/NftId.sol/NftIdLib.json +17 -4
- package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
- package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +2 -2
- package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
- package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +2 -2
- package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
- package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.json +100 -0
- package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +1 -1
- package/artifacts/contracts/types/Referral.sol/ReferralLib.json +2 -2
- package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +2 -2
- package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +2 -2
- package/artifacts/contracts/types/Seconds.sol/SecondsLib.dbg.json +4 -0
- package/artifacts/contracts/types/Seconds.sol/SecondsLib.json +124 -0
- package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/StateId.sol/StateIdLib.json +2 -2
- package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +1 -1
- package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +25 -7
- package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +1 -1
- package/artifacts/contracts/types/UFixed.sol/MathLib.json +2 -2
- package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +1 -1
- package/artifacts/contracts/types/UFixed.sol/UFixedLib.json +2 -2
- package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +1 -1
- package/artifacts/contracts/types/Version.sol/VersionLib.json +2 -2
- package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +1 -1
- package/artifacts/contracts/types/Version.sol/VersionPartLib.json +2 -2
- package/contracts/components/Component.sol +88 -83
- package/contracts/components/Distribution.sol +16 -31
- package/contracts/components/IComponent.sol +40 -16
- package/contracts/components/IDistributionComponent.sol +1 -22
- package/contracts/components/IPoolComponent.sol +73 -47
- package/contracts/components/IProductComponent.sol +3 -2
- package/contracts/components/Pool.sol +171 -126
- package/contracts/components/Product.sol +38 -23
- package/contracts/instance/BundleManager.sol +7 -5
- package/contracts/instance/IInstance.sol +10 -3
- package/contracts/instance/IInstanceService.sol +2 -1
- package/contracts/instance/Instance.sol +25 -11
- package/contracts/instance/InstanceReader.sol +4 -3
- package/contracts/instance/InstanceService.sol +59 -11
- package/contracts/instance/InstanceServiceManager.sol +1 -1
- package/contracts/instance/base/KeyValueStore.sol +5 -2
- package/contracts/instance/base/Lifecycle.sol +11 -2
- package/contracts/instance/module/IBundle.sol +2 -1
- package/contracts/instance/module/IComponents.sol +35 -0
- package/contracts/instance/module/IDistribution.sol +2 -0
- package/contracts/instance/module/IPolicy.sol +30 -3
- package/contracts/instance/module/ISetup.sol +23 -7
- package/contracts/instance/service/ApplicationService.sol +139 -57
- package/contracts/instance/service/ApplicationServiceManager.sol +35 -0
- package/contracts/instance/service/BundleService.sol +76 -38
- package/contracts/instance/service/BundleServiceManager.sol +1 -1
- package/contracts/instance/service/ClaimService.sol +151 -0
- package/contracts/instance/service/ClaimServiceManager.sol +35 -0
- package/contracts/instance/service/DistributionService.sol +133 -21
- package/contracts/instance/service/DistributionServiceManager.sol +1 -1
- package/contracts/instance/service/IApplicationService.sol +9 -9
- package/contracts/instance/service/IBundleService.sol +19 -11
- package/contracts/instance/service/IClaimService.sol +61 -0
- package/contracts/instance/service/IDistributionService.sol +23 -2
- package/contracts/instance/service/IPolicyService.sol +17 -35
- package/contracts/instance/service/IPoolService.sol +17 -2
- package/contracts/instance/service/PolicyService.sol +61 -175
- package/contracts/instance/service/PolicyServiceManager.sol +2 -2
- package/contracts/instance/service/PoolService.sol +72 -18
- package/contracts/instance/service/PoolServiceManager.sol +1 -1
- package/contracts/instance/service/ProductServiceManager.sol +2 -2
- package/contracts/registry/IRegistryService.sol +7 -7
- package/contracts/registry/RegistryService.sol +51 -45
- package/contracts/registry/RegistryServiceManager.sol +13 -13
- package/contracts/registry/ReleaseManager.sol +10 -19
- package/contracts/registry/TokenRegistry.sol +13 -10
- package/contracts/shared/ERC165.sol +2 -1
- package/contracts/shared/INftOwnable.sol +4 -9
- package/contracts/shared/IRegistryLinked.sol +0 -3
- package/contracts/shared/IService.sol +2 -0
- package/contracts/shared/IVersionable.sol +4 -47
- package/contracts/shared/NftOwnable.sol +10 -80
- package/contracts/shared/ProxyManager.sol +98 -24
- package/contracts/shared/Registerable.sol +3 -10
- package/contracts/shared/RegistryLinked.sol +10 -26
- package/contracts/shared/Service.sol +10 -12
- package/contracts/shared/TokenHandler.sol +11 -5
- package/contracts/shared/Versionable.sol +1 -90
- package/contracts/types/Blocknumber.sol +1 -0
- package/contracts/types/ClaimId.sol +52 -0
- package/contracts/types/Fee.sol +1 -0
- package/contracts/types/NftId.sol +8 -0
- package/contracts/types/ObjectType.sol +5 -4
- package/contracts/types/PayoutId.sol +54 -0
- package/contracts/types/RoleId.sol +10 -5
- package/contracts/types/Seconds.sol +54 -0
- package/contracts/types/StateId.sol +1 -0
- package/contracts/types/Timestamp.sol +13 -13
- package/contracts/types/UFixed.sol +1 -0
- package/contracts/types/Version.sol +1 -0
- package/package.json +1 -1
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +0 -4
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.json +0 -66
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +0 -4
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.json +0 -24
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +0 -4
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.json +0 -42
- package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
- package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
- package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
- package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
- package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
- package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
- package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
- package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
- package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
- package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.json +0 -37
- package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
- package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
- package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
- package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
- package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
- package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.json +0 -124
- package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
- package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
- package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
- package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
- package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
- package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
- package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
- package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
- package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
- package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
- package/contracts/experiment/cloning/Cloner.sol +0 -47
- package/contracts/experiment/errors/Require.sol +0 -38
- package/contracts/experiment/errors/Revert.sol +0 -44
- package/contracts/experiment/inheritance/A.sol +0 -53
- package/contracts/experiment/inheritance/B.sol +0 -28
- package/contracts/experiment/inheritance/C.sol +0 -34
- package/contracts/experiment/inheritance/IA.sol +0 -13
- package/contracts/experiment/inheritance/IB.sol +0 -10
- package/contracts/experiment/inheritance/IC.sol +0 -12
- package/contracts/experiment/statemachine/Dummy.sol +0 -27
- package/contracts/experiment/statemachine/ISM.sol +0 -25
- package/contracts/experiment/statemachine/SM.sol +0 -57
- package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
- package/contracts/experiment/types/TypeA.sol +0 -47
- package/contracts/experiment/types/TypeB.sol +0 -29
|
@@ -4,10 +4,11 @@ pragma solidity ^0.8.19;
|
|
|
4
4
|
import {IRegistry} from "../../registry/IRegistry.sol";
|
|
5
5
|
import {IProductComponent} from "../../components/IProductComponent.sol";
|
|
6
6
|
import {Product} from "../../components/Product.sol";
|
|
7
|
-
import {
|
|
7
|
+
import {IComponents} from "../module/IComponents.sol";
|
|
8
8
|
import {IDistributionComponent} from "../../components/IDistributionComponent.sol";
|
|
9
9
|
import {IInstance} from "../IInstance.sol";
|
|
10
10
|
import {IPolicy} from "../module/IPolicy.sol";
|
|
11
|
+
import {IPoolComponent} from "../../components/IPoolComponent.sol";
|
|
11
12
|
import {IRisk} from "../module/IRisk.sol";
|
|
12
13
|
import {IBundle} from "../module/IBundle.sol";
|
|
13
14
|
import {IProductService} from "./IProductService.sol";
|
|
@@ -19,10 +20,11 @@ import {TokenHandler} from "../../shared/TokenHandler.sol";
|
|
|
19
20
|
import {IVersionable} from "../../shared/IVersionable.sol";
|
|
20
21
|
import {Versionable} from "../../shared/Versionable.sol";
|
|
21
22
|
|
|
23
|
+
import {Seconds} from "../../types/Seconds.sol";
|
|
22
24
|
import {Timestamp, TimestampLib, zeroTimestamp} from "../../types/Timestamp.sol";
|
|
23
25
|
import {UFixed, UFixedLib} from "../../types/UFixed.sol";
|
|
24
26
|
import {Blocknumber, blockNumber} from "../../types/Blocknumber.sol";
|
|
25
|
-
import {ObjectType, INSTANCE, PRODUCT, POOL, POLICY, BUNDLE} from "../../types/ObjectType.sol";
|
|
27
|
+
import {ObjectType, APPLICATION, INSTANCE, PRODUCT, POOL, POLICY, BUNDLE} from "../../types/ObjectType.sol";
|
|
26
28
|
import {APPLIED, UNDERWRITTEN, ACTIVE, KEEP_STATE, CLOSED} from "../../types/StateId.sol";
|
|
27
29
|
import {NftId, NftIdLib, zeroNftId} from "../../types/NftId.sol";
|
|
28
30
|
import {Fee, FeeLib} from "../../types/Fee.sol";
|
|
@@ -35,6 +37,7 @@ import {Version, VersionLib} from "../../types/Version.sol";
|
|
|
35
37
|
import {IService} from "../../shared/IService.sol";
|
|
36
38
|
import {Service} from "../../shared/Service.sol";
|
|
37
39
|
import {ComponentService} from "../base/ComponentService.sol";
|
|
40
|
+
import {IApplicationService} from "./IApplicationService.sol";
|
|
38
41
|
import {IPolicyService} from "./IPolicyService.sol";
|
|
39
42
|
import {InstanceReader} from "../InstanceReader.sol";
|
|
40
43
|
import {IPoolService} from "./IPoolService.sol";
|
|
@@ -50,6 +53,7 @@ contract PolicyService is
|
|
|
50
53
|
|
|
51
54
|
IPoolService internal _poolService;
|
|
52
55
|
IBundleService internal _bundleService;
|
|
56
|
+
IApplicationService internal _applicationService;
|
|
53
57
|
|
|
54
58
|
event LogProductServiceSender(address sender);
|
|
55
59
|
|
|
@@ -58,8 +62,8 @@ contract PolicyService is
|
|
|
58
62
|
bytes memory data
|
|
59
63
|
)
|
|
60
64
|
internal
|
|
61
|
-
initializer
|
|
62
65
|
virtual override
|
|
66
|
+
initializer
|
|
63
67
|
{
|
|
64
68
|
address registryAddress;
|
|
65
69
|
address initialOwner;
|
|
@@ -69,6 +73,7 @@ contract PolicyService is
|
|
|
69
73
|
|
|
70
74
|
_poolService = IPoolService(getRegistry().getServiceAddress(POOL(), getMajorVersion()));
|
|
71
75
|
_bundleService = IBundleService(getRegistry().getServiceAddress(BUNDLE(), getMajorVersion()));
|
|
76
|
+
_applicationService = IApplicationService(getRegistry().getServiceAddress(APPLICATION(), getMajorVersion()));
|
|
72
77
|
|
|
73
78
|
registerInterface(type(IPolicyService).interfaceId);
|
|
74
79
|
}
|
|
@@ -85,156 +90,6 @@ contract PolicyService is
|
|
|
85
90
|
product = Product(productInfo.objectAddress);
|
|
86
91
|
}
|
|
87
92
|
|
|
88
|
-
// TODO: no access restrictions
|
|
89
|
-
function calculatePremium(
|
|
90
|
-
RiskId riskId,
|
|
91
|
-
uint256 sumInsuredAmount,
|
|
92
|
-
uint256 lifetime,
|
|
93
|
-
bytes memory applicationData,
|
|
94
|
-
NftId bundleNftId,
|
|
95
|
-
ReferralId referralId
|
|
96
|
-
)
|
|
97
|
-
public
|
|
98
|
-
view
|
|
99
|
-
virtual override
|
|
100
|
-
returns (
|
|
101
|
-
uint256 premiumAmount,
|
|
102
|
-
uint256 productFeeAmount,
|
|
103
|
-
uint256 poolFeeAmount,
|
|
104
|
-
uint256 bundleFeeAmount,
|
|
105
|
-
uint256 distributionFeeAmount
|
|
106
|
-
)
|
|
107
|
-
{
|
|
108
|
-
Product product = _getAndVerifyInstanceAndProduct();
|
|
109
|
-
uint256 netPremiumAmount = product.calculateNetPremium(
|
|
110
|
-
sumInsuredAmount,
|
|
111
|
-
riskId,
|
|
112
|
-
lifetime,
|
|
113
|
-
applicationData
|
|
114
|
-
);
|
|
115
|
-
|
|
116
|
-
(
|
|
117
|
-
productFeeAmount,
|
|
118
|
-
poolFeeAmount,
|
|
119
|
-
bundleFeeAmount,
|
|
120
|
-
distributionFeeAmount
|
|
121
|
-
) = _calculateFeeAmounts(
|
|
122
|
-
netPremiumAmount,
|
|
123
|
-
product,
|
|
124
|
-
bundleNftId,
|
|
125
|
-
referralId
|
|
126
|
-
);
|
|
127
|
-
|
|
128
|
-
premiumAmount = netPremiumAmount + productFeeAmount;
|
|
129
|
-
premiumAmount += poolFeeAmount + bundleFeeAmount;
|
|
130
|
-
premiumAmount += distributionFeeAmount;
|
|
131
|
-
}
|
|
132
|
-
|
|
133
|
-
function _calculateFeeAmounts(
|
|
134
|
-
uint256 netPremiumAmount,
|
|
135
|
-
Product product,
|
|
136
|
-
NftId bundleNftId,
|
|
137
|
-
ReferralId referralId
|
|
138
|
-
)
|
|
139
|
-
internal
|
|
140
|
-
view
|
|
141
|
-
returns (
|
|
142
|
-
uint256 productFeeAmount,
|
|
143
|
-
uint256 poolFeeAmount,
|
|
144
|
-
uint256 bundleFeeAmount,
|
|
145
|
-
uint256 distributionFeeAmount
|
|
146
|
-
)
|
|
147
|
-
{
|
|
148
|
-
InstanceReader instanceReader;
|
|
149
|
-
{
|
|
150
|
-
IInstance instance = product.getInstance();
|
|
151
|
-
instanceReader = instance.getInstanceReader();
|
|
152
|
-
}
|
|
153
|
-
|
|
154
|
-
NftId poolNftId = product.getPoolNftId();
|
|
155
|
-
IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
|
|
156
|
-
require(bundleInfo.poolNftId == poolNftId,"ERROR:PRS-035:BUNDLE_POOL_MISMATCH");
|
|
157
|
-
|
|
158
|
-
{
|
|
159
|
-
ISetup.ProductSetupInfo memory productSetupInfo = instanceReader.getProductSetupInfo(product.getProductNftId());
|
|
160
|
-
(productFeeAmount,) = FeeLib.calculateFee(productSetupInfo.productFee, netPremiumAmount);
|
|
161
|
-
}
|
|
162
|
-
{
|
|
163
|
-
ISetup.PoolSetupInfo memory poolSetupInfo = instanceReader.getPoolSetupInfo(poolNftId);
|
|
164
|
-
(poolFeeAmount,) = FeeLib.calculateFee(poolSetupInfo.poolFee, netPremiumAmount);
|
|
165
|
-
}
|
|
166
|
-
{
|
|
167
|
-
NftId distributionNftId = product.getDistributionNftId();
|
|
168
|
-
ISetup.DistributionSetupInfo memory distributionSetupInfo = instanceReader.getDistributionSetupInfo(distributionNftId);
|
|
169
|
-
(distributionFeeAmount,) = FeeLib.calculateFee(distributionSetupInfo.distributionFee, netPremiumAmount);
|
|
170
|
-
}
|
|
171
|
-
|
|
172
|
-
(bundleFeeAmount,) = FeeLib.calculateFee(bundleInfo.fee, netPremiumAmount);
|
|
173
|
-
}
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
function createApplication(
|
|
177
|
-
address applicationOwner,
|
|
178
|
-
RiskId riskId,
|
|
179
|
-
uint256 sumInsuredAmount,
|
|
180
|
-
uint256 lifetime,
|
|
181
|
-
bytes memory applicationData,
|
|
182
|
-
NftId bundleNftId,
|
|
183
|
-
ReferralId referralId
|
|
184
|
-
)
|
|
185
|
-
external
|
|
186
|
-
virtual override
|
|
187
|
-
returns (NftId policyNftId)
|
|
188
|
-
{
|
|
189
|
-
(IRegistry.ObjectInfo memory productInfo, IInstance instance) = _getAndVerifyComponentInfoAndInstance(PRODUCT());
|
|
190
|
-
// TODO: add validations (see create bundle in pool service)
|
|
191
|
-
|
|
192
|
-
policyNftId = getRegistryService().registerPolicy(
|
|
193
|
-
IRegistry.ObjectInfo(
|
|
194
|
-
zeroNftId(),
|
|
195
|
-
productInfo.nftId,
|
|
196
|
-
POLICY(),
|
|
197
|
-
false, // intercepting property for policies is defined on product
|
|
198
|
-
address(0),
|
|
199
|
-
applicationOwner,
|
|
200
|
-
""
|
|
201
|
-
)
|
|
202
|
-
);
|
|
203
|
-
|
|
204
|
-
(uint256 premiumAmount,,,,) = calculatePremium(
|
|
205
|
-
riskId,
|
|
206
|
-
sumInsuredAmount,
|
|
207
|
-
lifetime,
|
|
208
|
-
applicationData,
|
|
209
|
-
bundleNftId,
|
|
210
|
-
referralId
|
|
211
|
-
);
|
|
212
|
-
|
|
213
|
-
IPolicy.PolicyInfo memory policyInfo = IPolicy.PolicyInfo(
|
|
214
|
-
productInfo.nftId,
|
|
215
|
-
bundleNftId,
|
|
216
|
-
referralId,
|
|
217
|
-
riskId,
|
|
218
|
-
sumInsuredAmount,
|
|
219
|
-
premiumAmount,
|
|
220
|
-
0,
|
|
221
|
-
lifetime,
|
|
222
|
-
applicationData,
|
|
223
|
-
"",
|
|
224
|
-
0,
|
|
225
|
-
0,
|
|
226
|
-
0,
|
|
227
|
-
zeroTimestamp(),
|
|
228
|
-
zeroTimestamp(),
|
|
229
|
-
zeroTimestamp()
|
|
230
|
-
);
|
|
231
|
-
|
|
232
|
-
instance.createPolicy(policyNftId, policyInfo);
|
|
233
|
-
instance.updatePolicyState(policyNftId, APPLIED());
|
|
234
|
-
|
|
235
|
-
// TODO: add logging
|
|
236
|
-
}
|
|
237
|
-
|
|
238
93
|
function _getAndVerifyUnderwritingSetup(
|
|
239
94
|
IInstance instance,
|
|
240
95
|
InstanceReader instanceReader,
|
|
@@ -257,7 +112,9 @@ contract PolicyService is
|
|
|
257
112
|
require(bundleInfo.poolNftId == poolNftId, "POLICY_BUNDLE_MISMATCH");
|
|
258
113
|
|
|
259
114
|
// calculate required collateral
|
|
260
|
-
|
|
115
|
+
IComponents.ComponentInfo memory componentInfo = instanceReader.getComponentInfo(poolNftId);
|
|
116
|
+
ISetup.PoolInfo memory poolInfo = abi.decode(
|
|
117
|
+
componentInfo.data, (ISetup.PoolInfo));
|
|
261
118
|
|
|
262
119
|
// obtain remaining return values
|
|
263
120
|
// TODO required collateral amount should be calculated by pool service, not policy service
|
|
@@ -358,13 +215,19 @@ contract PolicyService is
|
|
|
358
215
|
instance.updatePolicy(applicationNftId, policyInfo, newPolicyState);
|
|
359
216
|
|
|
360
217
|
// also verify/confirm application by pool if necessary
|
|
361
|
-
if(
|
|
218
|
+
if(abi.decode(
|
|
219
|
+
instanceReader.getComponentInfo(poolNftId).data,
|
|
220
|
+
(ISetup.PoolInfo)
|
|
221
|
+
).isVerifyingApplications
|
|
222
|
+
)
|
|
223
|
+
{
|
|
362
224
|
IPoolComponent pool = IPoolComponent(
|
|
363
225
|
getRegistry().getObjectInfo(poolNftId).objectAddress);
|
|
364
226
|
|
|
365
227
|
pool.verifyApplication(
|
|
366
228
|
applicationNftId,
|
|
367
229
|
policyInfo.applicationData,
|
|
230
|
+
bundleNftId,
|
|
368
231
|
bundleInfo.filter,
|
|
369
232
|
collateralAmount);
|
|
370
233
|
}
|
|
@@ -428,9 +291,22 @@ contract PolicyService is
|
|
|
428
291
|
// TODO: add logging
|
|
429
292
|
}
|
|
430
293
|
|
|
294
|
+
|
|
295
|
+
function expire(
|
|
296
|
+
NftId policyNftId
|
|
297
|
+
)
|
|
298
|
+
external
|
|
299
|
+
override
|
|
300
|
+
// solhint-disable-next-line no-empty-blocks
|
|
301
|
+
{
|
|
302
|
+
|
|
303
|
+
}
|
|
304
|
+
|
|
431
305
|
function close(
|
|
432
306
|
NftId policyNftId
|
|
433
|
-
)
|
|
307
|
+
)
|
|
308
|
+
external
|
|
309
|
+
override
|
|
434
310
|
{
|
|
435
311
|
(, IInstance instance) = _getAndVerifyComponentInfoAndInstance(PRODUCT());
|
|
436
312
|
InstanceReader instanceReader = instance.getInstanceReader();
|
|
@@ -493,30 +369,40 @@ contract PolicyService is
|
|
|
493
369
|
{
|
|
494
370
|
// process token transfer(s)
|
|
495
371
|
if(premiumAmount > 0) {
|
|
496
|
-
|
|
372
|
+
InstanceReader instanceReader = instance.getInstanceReader();
|
|
373
|
+
ISetup.ProductSetupInfo memory productSetupInfo = instanceReader.getProductSetupInfo(productNftId);
|
|
374
|
+
IPolicy.PolicyInfo memory policyInfo = instanceReader.getPolicyInfo(policyNftId);
|
|
497
375
|
TokenHandler tokenHandler = productSetupInfo.tokenHandler;
|
|
498
376
|
address policyOwner = getRegistry().ownerOf(policyNftId);
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
premiumAmount
|
|
377
|
+
address poolWallet = instanceReader.getComponentInfo(productSetupInfo.poolNftId).wallet;
|
|
378
|
+
IPolicy.Premium memory premium = _applicationService.calculatePremium(
|
|
379
|
+
productNftId,
|
|
380
|
+
policyInfo.riskId,
|
|
381
|
+
policyInfo.sumInsuredAmount,
|
|
382
|
+
policyInfo.lifetime,
|
|
383
|
+
policyInfo.applicationData,
|
|
384
|
+
policyInfo.bundleNftId,
|
|
385
|
+
policyInfo.referralId
|
|
509
386
|
);
|
|
510
|
-
|
|
511
|
-
|
|
387
|
+
|
|
388
|
+
// if (FeeLib.feeIsZero(premium.productFeeAmount)) {
|
|
389
|
+
// tokenHandler.transfer(
|
|
390
|
+
// policyOwner,
|
|
391
|
+
// poolWallet,
|
|
392
|
+
// premiumAmount
|
|
393
|
+
// );
|
|
394
|
+
// } else {
|
|
512
395
|
address productWallet = productSetupInfo.wallet;
|
|
513
|
-
if (tokenHandler.getToken().allowance(policyOwner, address(tokenHandler)) < premiumAmount) {
|
|
514
|
-
revert ErrorIPolicyServiceInsufficientAllowance(policyOwner, address(tokenHandler), premiumAmount);
|
|
396
|
+
if (tokenHandler.getToken().allowance(policyOwner, address(tokenHandler)) < premium.premiumAmount) {
|
|
397
|
+
revert ErrorIPolicyServiceInsufficientAllowance(policyOwner, address(tokenHandler), premium.premiumAmount);
|
|
515
398
|
}
|
|
516
|
-
tokenHandler.transfer(policyOwner, productWallet,
|
|
517
|
-
tokenHandler.transfer(policyOwner, poolWallet,
|
|
518
|
-
netPremiumAmount =
|
|
519
|
-
|
|
399
|
+
tokenHandler.transfer(policyOwner, productWallet, premium.productFeeFixAmount + premium.productFeeVarAmount);
|
|
400
|
+
tokenHandler.transfer(policyOwner, poolWallet, premium.netPremiumAmount);
|
|
401
|
+
netPremiumAmount = premium.netPremiumAmount;
|
|
402
|
+
// TODO: also move distribution tokens to distribution wallet and call `Distribution.processSale` to update distribution balances
|
|
403
|
+
// }
|
|
404
|
+
// TODO: move pool/bundle related tokens too
|
|
405
|
+
|
|
520
406
|
}
|
|
521
407
|
|
|
522
408
|
// TODO: add logging
|
|
@@ -16,7 +16,7 @@ contract PolicyServiceManager is ProxyManager {
|
|
|
16
16
|
constructor(
|
|
17
17
|
address registryAddress
|
|
18
18
|
)
|
|
19
|
-
ProxyManager()
|
|
19
|
+
ProxyManager(registryAddress)
|
|
20
20
|
{
|
|
21
21
|
PolicyService svc = new PolicyService();
|
|
22
22
|
bytes memory data = abi.encode(registryAddress, address(this));
|
|
@@ -39,7 +39,7 @@ contract PolicyServiceManager is ProxyManager {
|
|
|
39
39
|
// address(_productService));
|
|
40
40
|
|
|
41
41
|
// implies that after this constructor call only upgrade functionality is available
|
|
42
|
-
_isDeployed = true;
|
|
42
|
+
// _isDeployed = true;
|
|
43
43
|
}
|
|
44
44
|
|
|
45
45
|
//--- view functions ----------------------------------------------------//
|
|
@@ -6,20 +6,20 @@ import {IRegistry} from "../../registry/IRegistry.sol";
|
|
|
6
6
|
import {IInstance} from "../../instance/IInstance.sol";
|
|
7
7
|
import {IBundle} from "../../instance/module/IBundle.sol";
|
|
8
8
|
import {TokenHandler} from "../../instance/module/ITreasury.sol";
|
|
9
|
-
import {
|
|
9
|
+
import {IComponents} from "../module/IComponents.sol";
|
|
10
10
|
import {IPolicy} from "../module/IPolicy.sol";
|
|
11
11
|
|
|
12
12
|
import {IVersionable} from "../../shared/IVersionable.sol";
|
|
13
13
|
import {Versionable} from "../../shared/Versionable.sol";
|
|
14
14
|
import {INftOwnable} from "../../shared/INftOwnable.sol";
|
|
15
15
|
|
|
16
|
+
import {Fee, FeeLib} from "../../types/Fee.sol";
|
|
16
17
|
import {NftId, NftIdLib, zeroNftId} from "../../types/NftId.sol";
|
|
17
18
|
import {ObjectType, POOL, BUNDLE} from "../../types/ObjectType.sol";
|
|
18
|
-
import {POOL_OWNER_ROLE,
|
|
19
|
-
import {
|
|
20
|
-
import {Version, VersionLib} from "../../types/Version.sol";
|
|
21
|
-
import {KEEP_STATE, StateId} from "../../types/StateId.sol";
|
|
19
|
+
import {RoleId, POOL_OWNER_ROLE, PUBLIC_ROLE} from "../../types/RoleId.sol";
|
|
20
|
+
import {StateId, KEEP_STATE} from "../../types/StateId.sol";
|
|
22
21
|
import {TimestampLib, zeroTimestamp} from "../../types/Timestamp.sol";
|
|
22
|
+
import {Version, VersionLib} from "../../types/Version.sol";
|
|
23
23
|
|
|
24
24
|
import {IService} from "../../shared/IService.sol";
|
|
25
25
|
import {Service} from "../../shared/Service.sol";
|
|
@@ -78,32 +78,86 @@ contract PoolService is
|
|
|
78
78
|
POOL_OWNER_ROLE());
|
|
79
79
|
|
|
80
80
|
IPoolComponent pool = IPoolComponent(poolAddress);
|
|
81
|
-
IRegistry.ObjectInfo memory
|
|
81
|
+
IRegistry.ObjectInfo memory registryInfo = getRegistryService().registerPool(pool, owner);
|
|
82
82
|
pool.linkToRegisteredNftId();
|
|
83
|
-
poolNftId =
|
|
83
|
+
poolNftId = registryInfo.nftId;
|
|
84
|
+
|
|
85
|
+
// amend component info with pool specific token handler
|
|
86
|
+
IComponents.ComponentInfo memory componentInfo = pool.getComponentInfo();
|
|
87
|
+
componentInfo.tokenHandler = new TokenHandler(address(componentInfo.token));
|
|
88
|
+
|
|
89
|
+
// save amended component info with instance
|
|
90
|
+
instance.createPoolSetup(poolNftId, componentInfo);
|
|
84
91
|
|
|
85
|
-
instance.createPoolSetup(poolNftId, pool.getSetupInfo());
|
|
86
92
|
getInstanceService().createGifTarget(instanceNftId, poolAddress, pool.getName());
|
|
87
93
|
getInstanceService().grantPoolDefaultPermissions(instanceNftId, poolAddress, pool.getName());
|
|
88
94
|
}
|
|
89
95
|
|
|
96
|
+
|
|
97
|
+
function setMaxCapitalAmount(uint256 maxCapitalAmount)
|
|
98
|
+
external
|
|
99
|
+
virtual
|
|
100
|
+
{
|
|
101
|
+
(IRegistry.ObjectInfo memory registryInfo, IInstance instance) = _getAndVerifyComponentInfoAndInstance(POOL());
|
|
102
|
+
InstanceReader instanceReader = instance.getInstanceReader();
|
|
103
|
+
NftId poolNftId = registryInfo.nftId;
|
|
104
|
+
|
|
105
|
+
IComponents.ComponentInfo memory componentInfo = instanceReader.getComponentInfo(poolNftId);
|
|
106
|
+
IComponents.PoolInfo memory poolInfo = abi.decode(componentInfo.data, (IComponents.PoolInfo));
|
|
107
|
+
uint256 previousMaxCapitalAmount = poolInfo.maxCapitalAmount;
|
|
108
|
+
|
|
109
|
+
poolInfo.maxCapitalAmount = maxCapitalAmount;
|
|
110
|
+
componentInfo.data = abi.encode(poolInfo);
|
|
111
|
+
instance.updatePoolSetup(poolNftId, componentInfo, KEEP_STATE());
|
|
112
|
+
|
|
113
|
+
emit LogPoolServiceMaxCapitalAmountUpdated(poolNftId, previousMaxCapitalAmount, maxCapitalAmount);
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
function setBundleOwnerRole(RoleId bundleOwnerRole)
|
|
117
|
+
external
|
|
118
|
+
virtual
|
|
119
|
+
{
|
|
120
|
+
(IRegistry.ObjectInfo memory registryInfo, IInstance instance) = _getAndVerifyComponentInfoAndInstance(POOL());
|
|
121
|
+
InstanceReader instanceReader = instance.getInstanceReader();
|
|
122
|
+
NftId poolNftId = registryInfo.nftId;
|
|
123
|
+
|
|
124
|
+
IComponents.ComponentInfo memory componentInfo = instanceReader.getComponentInfo(poolNftId);
|
|
125
|
+
IComponents.PoolInfo memory poolInfo = abi.decode(componentInfo.data, (IComponents.PoolInfo));
|
|
126
|
+
|
|
127
|
+
// bundle owner role may only be set once per pool
|
|
128
|
+
if(poolInfo.bundleOwnerRole != PUBLIC_ROLE()) {
|
|
129
|
+
revert ErrorPoolServiceBundleOwnerRoleAlreadySet(poolNftId);
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
poolInfo.bundleOwnerRole = bundleOwnerRole;
|
|
133
|
+
componentInfo.data = abi.encode(poolInfo);
|
|
134
|
+
instance.updatePoolSetup(poolNftId, componentInfo, KEEP_STATE());
|
|
135
|
+
|
|
136
|
+
emit LogPoolServiceBundleOwnerRoleSet(poolNftId, bundleOwnerRole);
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
|
|
90
140
|
function setFees(
|
|
91
141
|
Fee memory poolFee,
|
|
92
142
|
Fee memory stakingFee,
|
|
93
143
|
Fee memory performanceFee
|
|
94
144
|
)
|
|
95
145
|
external
|
|
96
|
-
|
|
146
|
+
virtual
|
|
97
147
|
{
|
|
98
|
-
(IRegistry.ObjectInfo memory
|
|
148
|
+
(IRegistry.ObjectInfo memory registryInfo, IInstance instance) = _getAndVerifyComponentInfoAndInstance(POOL());
|
|
99
149
|
InstanceReader instanceReader = instance.getInstanceReader();
|
|
100
|
-
NftId poolNftId =
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
150
|
+
NftId poolNftId = registryInfo.nftId;
|
|
151
|
+
|
|
152
|
+
IComponents.ComponentInfo memory componentInfo = instanceReader.getComponentInfo(poolNftId);
|
|
153
|
+
IComponents.PoolInfo memory poolInfo = abi.decode(componentInfo.data, (IComponents.PoolInfo));
|
|
154
|
+
|
|
155
|
+
poolInfo.poolFee = poolFee;
|
|
156
|
+
poolInfo.stakingFee = stakingFee;
|
|
157
|
+
poolInfo.performanceFee = performanceFee;
|
|
158
|
+
componentInfo.data = abi.encode(poolInfo);
|
|
159
|
+
instance.updatePoolSetup(poolNftId, componentInfo, KEEP_STATE());
|
|
160
|
+
|
|
161
|
+
// TODO add logging
|
|
108
162
|
}
|
|
109
163
|
}
|
|
@@ -16,7 +16,7 @@ contract PoolServiceManager is ProxyManager {
|
|
|
16
16
|
constructor(
|
|
17
17
|
address registryAddress
|
|
18
18
|
)
|
|
19
|
-
ProxyManager()
|
|
19
|
+
ProxyManager(registryAddress)
|
|
20
20
|
{
|
|
21
21
|
PoolService poolSrv = new PoolService();
|
|
22
22
|
bytes memory data = abi.encode(registryAddress, address(this));
|
|
@@ -16,7 +16,7 @@ contract ProductServiceManager is ProxyManager {
|
|
|
16
16
|
constructor(
|
|
17
17
|
address registryAddress
|
|
18
18
|
)
|
|
19
|
-
ProxyManager()
|
|
19
|
+
ProxyManager(registryAddress)
|
|
20
20
|
{
|
|
21
21
|
ProductService svc = new ProductService();
|
|
22
22
|
bytes memory data = abi.encode(registryAddress, address(this));
|
|
@@ -39,7 +39,7 @@ contract ProductServiceManager is ProxyManager {
|
|
|
39
39
|
// address(_productService));
|
|
40
40
|
|
|
41
41
|
// implies that after this constructor call only upgrade functionality is available
|
|
42
|
-
_isDeployed = true;
|
|
42
|
+
// _isDeployed = true;
|
|
43
43
|
}
|
|
44
44
|
|
|
45
45
|
//--- view functions ----------------------------------------------------//
|
|
@@ -38,15 +38,15 @@ interface IRegistryService is
|
|
|
38
38
|
bytes4[] selectors;
|
|
39
39
|
}
|
|
40
40
|
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
41
|
+
function getFunctionConfigs()
|
|
42
|
+
external
|
|
43
|
+
pure
|
|
44
|
+
returns(
|
|
45
|
+
FunctionConfig[] memory config
|
|
46
|
+
);
|
|
47
47
|
|
|
48
48
|
// TODO used by service -> add owner arg
|
|
49
|
-
|
|
49
|
+
function registerInstance(IRegisterable instance, address owner)
|
|
50
50
|
external returns(IRegistry.ObjectInfo memory info);
|
|
51
51
|
|
|
52
52
|
function registerProduct(IComponent product, address owner)
|
|
@@ -19,7 +19,7 @@ import {IRegisterable} from "../../contracts/shared/IRegisterable.sol";
|
|
|
19
19
|
import {Registerable} from "../../contracts/shared/Registerable.sol";
|
|
20
20
|
|
|
21
21
|
import {RoleId, PRODUCT_OWNER_ROLE, POOL_OWNER_ROLE, ORACLE_OWNER_ROLE} from "../../contracts/types/RoleId.sol";
|
|
22
|
-
import {ObjectType, REGISTRY, SERVICE, PRODUCT, ORACLE, POOL, INSTANCE, DISTRIBUTION, DISTRIBUTOR, POLICY, BUNDLE, STAKE} from "../../contracts/types/ObjectType.sol";
|
|
22
|
+
import {ObjectType, REGISTRY, SERVICE, PRODUCT, ORACLE, POOL, INSTANCE, DISTRIBUTION, DISTRIBUTOR, APPLICATION, POLICY, CLAIM, BUNDLE, STAKE} from "../../contracts/types/ObjectType.sol";
|
|
23
23
|
import {StateId, ACTIVE, PAUSED} from "../../contracts/types/StateId.sol";
|
|
24
24
|
import {NftId, NftIdLib, zeroNftId} from "../../contracts/types/NftId.sol";
|
|
25
25
|
import {Fee, FeeLib} from "../../contracts/types/Fee.sol";
|
|
@@ -40,6 +40,33 @@ contract RegistryService is
|
|
|
40
40
|
// TODO update to real hash when registry is stable
|
|
41
41
|
bytes32 public constant REGISTRY_CREATION_CODE_HASH = bytes32(0);
|
|
42
42
|
|
|
43
|
+
// From IService
|
|
44
|
+
function getDomain() public pure override(IService, Service) returns(ObjectType serviceDomain) {
|
|
45
|
+
return REGISTRY();
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
// from Versionable
|
|
49
|
+
|
|
50
|
+
/// @dev top level initializer
|
|
51
|
+
function _initialize(
|
|
52
|
+
address owner,
|
|
53
|
+
bytes memory data
|
|
54
|
+
)
|
|
55
|
+
internal
|
|
56
|
+
virtual override
|
|
57
|
+
initializer()
|
|
58
|
+
{
|
|
59
|
+
(
|
|
60
|
+
address registryAddress,
|
|
61
|
+
address initialAuthority
|
|
62
|
+
) = abi.decode(data, (address, address));
|
|
63
|
+
|
|
64
|
+
__AccessManaged_init(initialAuthority);
|
|
65
|
+
|
|
66
|
+
initializeService(registryAddress, owner);
|
|
67
|
+
registerInterface(type(IRegistryService).interfaceId);
|
|
68
|
+
}
|
|
69
|
+
|
|
43
70
|
function registerInstance(IRegisterable instance, address owner)
|
|
44
71
|
external
|
|
45
72
|
restricted
|
|
@@ -142,33 +169,6 @@ contract RegistryService is
|
|
|
142
169
|
nftId = getRegistry().register(info);
|
|
143
170
|
}
|
|
144
171
|
|
|
145
|
-
// From IService
|
|
146
|
-
function getDomain() public pure override(IService, Service) returns(ObjectType serviceDomain) {
|
|
147
|
-
return REGISTRY();
|
|
148
|
-
}
|
|
149
|
-
|
|
150
|
-
// from Versionable
|
|
151
|
-
|
|
152
|
-
/// @dev top level initializer
|
|
153
|
-
function _initialize(
|
|
154
|
-
address owner,
|
|
155
|
-
bytes memory data
|
|
156
|
-
)
|
|
157
|
-
internal
|
|
158
|
-
initializer
|
|
159
|
-
virtual override
|
|
160
|
-
{
|
|
161
|
-
(
|
|
162
|
-
address initialAuthority,
|
|
163
|
-
address registry
|
|
164
|
-
) = abi.decode(data, (address, address));
|
|
165
|
-
|
|
166
|
-
__AccessManaged_init(initialAuthority);
|
|
167
|
-
|
|
168
|
-
initializeService(address(registry), owner);
|
|
169
|
-
registerInterface(type(IRegistryService).interfaceId);
|
|
170
|
-
}
|
|
171
|
-
|
|
172
172
|
// from IRegisterable
|
|
173
173
|
|
|
174
174
|
function getFunctionConfigs()
|
|
@@ -178,37 +178,43 @@ contract RegistryService is
|
|
|
178
178
|
FunctionConfig[] memory config
|
|
179
179
|
)
|
|
180
180
|
{
|
|
181
|
-
config = new FunctionConfig[](
|
|
181
|
+
config = new FunctionConfig[](8);
|
|
182
182
|
|
|
183
183
|
// order of service registrations MUST be reverse to this array
|
|
184
184
|
/*config[-1].serviceDomain = STAKE();
|
|
185
185
|
config[-1].selector = RegistryService.registerStake.selector;*/
|
|
186
186
|
|
|
187
187
|
config[0].serviceDomain = POLICY();
|
|
188
|
-
config[0].selectors = new bytes4[](
|
|
189
|
-
config[0].selectors[0] = RegistryService.registerPolicy.selector;
|
|
188
|
+
config[0].selectors = new bytes4[](0);
|
|
190
189
|
|
|
191
|
-
config[1].serviceDomain =
|
|
190
|
+
config[1].serviceDomain = APPLICATION();
|
|
192
191
|
config[1].selectors = new bytes4[](1);
|
|
193
|
-
config[1].selectors[0] = RegistryService.
|
|
192
|
+
config[1].selectors[0] = RegistryService.registerPolicy.selector;
|
|
194
193
|
|
|
195
|
-
config[2].serviceDomain =
|
|
196
|
-
config[2].selectors = new bytes4[](
|
|
197
|
-
config[2].selectors[0] = RegistryService.registerProduct.selector;
|
|
194
|
+
config[2].serviceDomain = CLAIM();
|
|
195
|
+
config[2].selectors = new bytes4[](0);
|
|
198
196
|
|
|
199
|
-
config[3].serviceDomain =
|
|
197
|
+
config[3].serviceDomain = BUNDLE();
|
|
200
198
|
config[3].selectors = new bytes4[](1);
|
|
201
|
-
config[3].selectors[0] = RegistryService.
|
|
199
|
+
config[3].selectors[0] = RegistryService.registerBundle.selector;
|
|
202
200
|
|
|
203
|
-
config[4].serviceDomain =
|
|
204
|
-
config[4].selectors = new bytes4[](
|
|
205
|
-
config[4].selectors[0] = RegistryService.
|
|
206
|
-
config[4].selectors[1] = RegistryService.registerDistributor.selector;
|
|
201
|
+
config[4].serviceDomain = PRODUCT();
|
|
202
|
+
config[4].selectors = new bytes4[](1);
|
|
203
|
+
config[4].selectors[0] = RegistryService.registerProduct.selector;
|
|
207
204
|
|
|
208
|
-
|
|
209
|
-
config[5].serviceDomain = INSTANCE();
|
|
205
|
+
config[5].serviceDomain = POOL();
|
|
210
206
|
config[5].selectors = new bytes4[](1);
|
|
211
|
-
config[5].selectors[0] = RegistryService.
|
|
207
|
+
config[5].selectors[0] = RegistryService.registerPool.selector;
|
|
208
|
+
|
|
209
|
+
config[6].serviceDomain = DISTRIBUTION();
|
|
210
|
+
config[6].selectors = new bytes4[](2);
|
|
211
|
+
config[6].selectors[0] = RegistryService.registerDistribution.selector;
|
|
212
|
+
config[6].selectors[1] = RegistryService.registerDistributor.selector;
|
|
213
|
+
|
|
214
|
+
// registerInstance() have no restriction
|
|
215
|
+
config[7].serviceDomain = INSTANCE();
|
|
216
|
+
config[7].selectors = new bytes4[](1);
|
|
217
|
+
config[7].selectors[0] = RegistryService.registerInstance.selector;
|
|
212
218
|
}
|
|
213
219
|
|
|
214
220
|
// Internal
|