@etherisc/gif-next 0.0.2-d02cb80-460 → 0.0.2-d086e6d-456
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 +78 -1
- package/artifacts/contracts/components/Component.sol/Component.dbg.json +4 -0
- package/artifacts/contracts/components/Component.sol/Component.json +842 -0
- package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/components/Distribution.sol/Distribution.json +853 -296
- package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +4 -0
- package/artifacts/contracts/components/{BaseComponent.sol/BaseComponent.json → IComponent.sol/IComponent.json} +225 -89
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +848 -31
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +846 -57
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +682 -9
- package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/components/Pool.sol/Pool.json +725 -316
- package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/components/Product.sol/Product.json +524 -240
- package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +1 -1
- package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +15 -15
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +1 -1
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +69 -79
- package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +1 -1
- package/artifacts/contracts/instance/Cloneable.sol/Cloneable.json +5 -0
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +1038 -395
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +290 -220
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +1038 -784
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +432 -186
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +137 -270
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +448 -418
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +303 -138
- package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +1 -1
- package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +11 -40
- package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.dbg.json +4 -0
- package/artifacts/contracts/instance/base/{ComponentServiceBase.sol/ComponentServiceBase.json → ComponentService.sol/ComponentService.json} +278 -157
- 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/IAccess.sol/IAccess.json +61 -67
- 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 +4 -0
- package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.json +1058 -0
- 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 +625 -290
- package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +356 -79
- package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.json +844 -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 +1385 -247
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +450 -73
- package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.json +646 -0
- package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.json +278 -264
- package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/{IComponentOwnerService.sol/IComponentOwnerService.json → IClaimService.sol/IClaimService.json} +227 -194
- package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +791 -134
- package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.json +216 -250
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +502 -133
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +95 -157
- package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +474 -347
- package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +321 -96
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +801 -255
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +307 -78
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +308 -209
- package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +305 -76
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +15 -2
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +244 -133
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +158 -215
- package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
- package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +18 -0
- package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
- package/artifacts/contracts/registry/Registry.sol/Registry.json +257 -235
- package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +4 -0
- package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +285 -0
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +202 -318
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +298 -145
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +4 -0
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +547 -0
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +141 -53
- 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 +41 -3
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +40 -29
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +129 -0
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +21 -34
- package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
- package/artifacts/contracts/{experiment/inheritance/IB.sol/IB.json → shared/IRegistryLinked.sol/IRegistryLinked.json} +18 -20
- package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
- package/artifacts/contracts/shared/IService.sol/IService.json +95 -157
- package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
- package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +2 -152
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +120 -27
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +248 -0
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +294 -61
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +129 -51
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +84 -0
- package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
- package/artifacts/contracts/shared/Service.sol/Service.json +195 -148
- 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 +2 -152
- 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 +129 -51
- package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +1 -1
- package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +6 -6
- package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +1 -1
- package/artifacts/contracts/test/TestService.sol/TestService.json +213 -202
- 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 +8 -190
- 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/Amount.sol/AmountLib.dbg.json +4 -0
- package/artifacts/contracts/types/Amount.sol/AmountLib.json +161 -0
- 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 +40 -9
- 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 +23 -4
- 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 +253 -0
- package/contracts/components/Distribution.sol +200 -83
- package/contracts/components/IComponent.sol +76 -0
- package/contracts/components/IDistributionComponent.sol +44 -17
- package/contracts/components/IPoolComponent.sol +88 -41
- package/contracts/components/IProductComponent.sol +10 -5
- package/contracts/components/Pool.sol +217 -185
- package/contracts/components/Product.sol +125 -124
- package/contracts/instance/AccessManagerUpgradeableInitializeable.sol +2 -12
- package/contracts/instance/BundleManager.sol +14 -16
- package/contracts/instance/Cloneable.sol +7 -2
- package/contracts/instance/IInstance.sol +52 -14
- package/contracts/instance/IInstanceService.sol +39 -9
- package/contracts/instance/Instance.sol +126 -75
- package/contracts/instance/InstanceAccessManager.sol +383 -166
- package/contracts/instance/InstanceReader.sol +10 -34
- package/contracts/instance/InstanceService.sol +312 -128
- package/contracts/instance/InstanceServiceManager.sol +6 -9
- package/contracts/instance/ObjectManager.sol +10 -29
- package/contracts/instance/base/ComponentService.sol +136 -0
- package/contracts/instance/base/KeyValueStore.sol +13 -5
- package/contracts/instance/base/Lifecycle.sol +11 -2
- package/contracts/instance/module/IAccess.sol +23 -17
- package/contracts/instance/module/IBundle.sol +8 -5
- package/contracts/instance/module/IComponents.sol +41 -0
- package/contracts/instance/module/IDistribution.sol +2 -0
- package/contracts/instance/module/IPolicy.sol +30 -3
- package/contracts/instance/module/ISetup.sol +7 -20
- package/contracts/instance/service/ApplicationService.sol +350 -0
- package/contracts/instance/service/ApplicationServiceManager.sol +35 -0
- package/contracts/instance/service/BundleService.sol +239 -68
- package/contracts/instance/service/BundleServiceManager.sol +6 -9
- package/contracts/instance/service/ClaimService.sol +151 -0
- package/contracts/instance/service/ClaimServiceManager.sol +35 -0
- package/contracts/instance/service/DistributionService.sol +367 -50
- package/contracts/instance/service/DistributionServiceManager.sol +7 -10
- package/contracts/instance/service/IApplicationService.sol +82 -0
- package/contracts/instance/service/IBundleService.sol +67 -19
- package/contracts/instance/service/IClaimService.sol +61 -0
- package/contracts/instance/service/IDistributionService.sol +86 -0
- package/contracts/instance/service/IPolicyService.sol +34 -49
- package/contracts/instance/service/IPoolService.sol +82 -3
- package/contracts/instance/service/PolicyService.sol +199 -347
- package/contracts/instance/service/PolicyServiceManager.sol +2 -2
- package/contracts/instance/service/PoolService.sol +264 -45
- package/contracts/instance/service/PoolServiceManager.sol +6 -9
- package/contracts/instance/service/ProductService.sol +93 -56
- package/contracts/instance/service/ProductServiceManager.sol +2 -2
- package/contracts/registry/ChainNft.sol +9 -1
- package/contracts/registry/IRegistry.sol +39 -19
- package/contracts/registry/IRegistryService.sol +31 -13
- package/contracts/registry/ITransferInterceptor.sol +1 -0
- package/contracts/registry/Registry.sol +243 -224
- package/contracts/registry/RegistryAccessManager.sol +216 -0
- package/contracts/registry/RegistryService.sol +100 -173
- package/contracts/registry/RegistryServiceManager.sol +21 -39
- package/contracts/registry/ReleaseManager.sol +322 -0
- package/contracts/registry/TokenRegistry.sol +22 -17
- package/contracts/shared/ERC165.sol +14 -12
- package/contracts/shared/INftOwnable.sol +11 -10
- package/contracts/shared/IPolicyHolder.sol +26 -0
- package/contracts/shared/IRegisterable.sol +4 -6
- package/contracts/shared/IRegistryLinked.sol +12 -0
- package/contracts/shared/IService.sol +8 -2
- package/contracts/shared/IVersionable.sol +4 -47
- package/contracts/shared/NftOwnable.sol +66 -80
- package/contracts/shared/PolicyHolder.sol +81 -0
- package/contracts/shared/ProxyManager.sol +100 -25
- package/contracts/shared/Registerable.sol +16 -32
- package/contracts/shared/RegistryLinked.sol +48 -0
- package/contracts/shared/Service.sol +30 -22
- package/contracts/shared/TokenHandler.sol +11 -5
- package/contracts/shared/Versionable.sol +4 -92
- package/contracts/test/TestRegisterable.sol +1 -1
- package/contracts/test/TestService.sol +4 -3
- package/contracts/types/Amount.sol +60 -0
- package/contracts/types/Blocknumber.sol +1 -0
- package/contracts/types/ClaimId.sol +52 -0
- package/contracts/types/DistributorType.sol +2 -2
- package/contracts/types/Fee.sol +13 -5
- package/contracts/types/NftId.sol +8 -0
- package/contracts/types/ObjectType.sol +10 -5
- package/contracts/types/PayoutId.sol +54 -0
- package/contracts/types/Referral.sol +4 -0
- package/contracts/types/RoleId.sol +19 -15
- 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 +3 -3
- package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +0 -4
- package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +0 -4
- package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.json +0 -384
- 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/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/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.dbg.json +0 -4
- package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.json +0 -1082
- package/artifacts/contracts/instance/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
- package/artifacts/contracts/instance/IInstanceBase.sol/IInstanceBase.json +0 -448
- package/artifacts/contracts/instance/InstanceBase.sol/InstanceBase.dbg.json +0 -4
- package/artifacts/contracts/instance/InstanceBase.sol/InstanceBase.json +0 -763
- package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +0 -4
- package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
- package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +0 -113
- package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +0 -827
- package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +0 -4
- package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.dbg.json +0 -4
- package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.json +0 -442
- package/contracts/components/BaseComponent.sol +0 -145
- package/contracts/components/IBaseComponent.sol +0 -32
- 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
- package/contracts/instance/IAccessManagerSimple.sol +0 -391
- package/contracts/instance/IInstanceBase.sol +0 -26
- package/contracts/instance/InstanceBase.sol +0 -41
- package/contracts/instance/base/ComponentServiceBase.sol +0 -72
- package/contracts/instance/base/IInstanceBase.sol +0 -23
- package/contracts/instance/service/ComponentOwnerService.sol +0 -317
- package/contracts/instance/service/IComponentOwnerService.sol +0 -20
- package/contracts/shared/RegisterableUpgradable.sol +0 -16
@@ -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,42 +6,46 @@ 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 {Amount} from "../../types/Amount.sol";
|
17
|
+
import {Fee, FeeLib} from "../../types/Fee.sol";
|
16
18
|
import {NftId, NftIdLib, zeroNftId} from "../../types/NftId.sol";
|
17
|
-
import {POOL, BUNDLE} from "../../types/ObjectType.sol";
|
18
|
-
import {POOL_OWNER_ROLE, RoleId} from "../../types/RoleId.sol";
|
19
|
+
import {ObjectType, POOL, BUNDLE} from "../../types/ObjectType.sol";
|
20
|
+
import {PUBLIC_ROLE, POOL_OWNER_ROLE, POLICY_SERVICE_ROLE, RoleId} from "../../types/RoleId.sol";
|
19
21
|
import {Fee, FeeLib} from "../../types/Fee.sol";
|
20
22
|
import {Version, VersionLib} from "../../types/Version.sol";
|
21
23
|
import {KEEP_STATE, StateId} from "../../types/StateId.sol";
|
24
|
+
import {Seconds} from "../../types/Seconds.sol";
|
22
25
|
import {TimestampLib, zeroTimestamp} from "../../types/Timestamp.sol";
|
26
|
+
import {Version, VersionLib} from "../../types/Version.sol";
|
23
27
|
|
24
28
|
import {IService} from "../../shared/IService.sol";
|
25
29
|
import {Service} from "../../shared/Service.sol";
|
26
30
|
import {BundleManager} from "../BundleManager.sol";
|
27
|
-
import {
|
31
|
+
import {ComponentService} from "../base/ComponentService.sol";
|
32
|
+
import {IBundleService} from "./IBundleService.sol";
|
28
33
|
import {IPoolService} from "./IPoolService.sol";
|
29
34
|
import {IRegistryService} from "../../registry/IRegistryService.sol";
|
30
35
|
import {InstanceService} from "../InstanceService.sol";
|
31
36
|
import {InstanceReader} from "../InstanceReader.sol";
|
32
|
-
import {
|
37
|
+
import {IComponent} from "../../components/IComponent.sol";
|
38
|
+
import {IPoolComponent} from "../../components/IPoolComponent.sol";
|
33
39
|
|
34
40
|
string constant POOL_SERVICE_NAME = "PoolService";
|
35
41
|
|
36
42
|
contract PoolService is
|
37
|
-
|
43
|
+
ComponentService,
|
38
44
|
IPoolService
|
39
45
|
{
|
40
46
|
using NftIdLib for NftId;
|
41
47
|
|
42
|
-
|
43
|
-
|
44
|
-
address internal _registryAddress;
|
48
|
+
IBundleService internal _bundleService;
|
45
49
|
|
46
50
|
function _initialize(
|
47
51
|
address owner,
|
@@ -56,69 +60,284 @@ contract PoolService is
|
|
56
60
|
(registryAddress, initialOwner) = abi.decode(data, (address, address));
|
57
61
|
// TODO while PoolService is not deployed in PoolServiceManager constructor
|
58
62
|
// owner is PoolServiceManager deployer
|
59
|
-
|
63
|
+
initializeService(registryAddress, owner);
|
60
64
|
|
61
|
-
|
65
|
+
_bundleService = IBundleService(getRegistry().getServiceAddress(BUNDLE(), getMajorVersion()));
|
66
|
+
|
67
|
+
registerInterface(type(IPoolService).interfaceId);
|
62
68
|
}
|
63
69
|
|
64
|
-
function
|
65
|
-
return
|
70
|
+
function getDomain() public pure override(Service, IService) returns(ObjectType) {
|
71
|
+
return POOL();
|
66
72
|
}
|
67
73
|
|
74
|
+
/*function register(address poolAddress)
|
75
|
+
external
|
76
|
+
returns(NftId poolNftId)
|
77
|
+
{
|
78
|
+
(
|
79
|
+
IComponent component,
|
80
|
+
address owner,
|
81
|
+
IInstance instance,
|
82
|
+
NftId instanceNftId
|
83
|
+
) = _checkComponentForRegistration(
|
84
|
+
poolAddress,
|
85
|
+
POOL(),
|
86
|
+
POOL_OWNER_ROLE());
|
87
|
+
|
88
|
+
IPoolComponent pool = IPoolComponent(poolAddress);
|
89
|
+
IRegistry.ObjectInfo memory registryInfo = getRegistryService().registerPool(pool, owner);
|
90
|
+
pool.linkToRegisteredNftId();
|
91
|
+
poolNftId = registryInfo.nftId;
|
92
|
+
|
93
|
+
instance.createPoolSetup(poolNftId, pool.getSetupInfo());
|
94
|
+
|
95
|
+
bytes4[][] memory selectors = new bytes4[][](2);
|
96
|
+
selectors[0] = new bytes4[](1);
|
97
|
+
selectors[1] = new bytes4[](1);
|
98
|
+
|
99
|
+
selectors[0][0] = IPoolComponent.setFees.selector;
|
100
|
+
selectors[1][0] = IPoolComponent.verifyApplication.selector;
|
101
|
+
|
102
|
+
RoleId[] memory roles = new RoleId[](2);
|
103
|
+
roles[0] = POOL_OWNER_ROLE();
|
104
|
+
roles[1] = POLICY_SERVICE_ROLE();
|
105
|
+
|
106
|
+
getInstanceService().createGifTarget(
|
107
|
+
instanceNftId,
|
108
|
+
poolAddress,
|
109
|
+
pool.getName(),
|
110
|
+
selectors,
|
111
|
+
roles);
|
112
|
+
}*/
|
113
|
+
|
68
114
|
function register(address poolAddress)
|
69
115
|
external
|
70
116
|
returns(NftId poolNftId)
|
71
117
|
{
|
72
|
-
|
73
|
-
|
118
|
+
(
|
119
|
+
IComponent component,
|
120
|
+
address owner,
|
121
|
+
IInstance instance,
|
122
|
+
NftId instanceNftId
|
123
|
+
) = _checkComponentForRegistration(
|
124
|
+
poolAddress,
|
125
|
+
POOL(),
|
126
|
+
POOL_OWNER_ROLE());
|
74
127
|
|
75
|
-
|
76
|
-
|
77
|
-
|
128
|
+
IPoolComponent pool = IPoolComponent(poolAddress);
|
129
|
+
IRegistry.ObjectInfo memory registryInfo = getRegistryService().registerPool(pool, owner);
|
130
|
+
pool.linkToRegisteredNftId();
|
131
|
+
poolNftId = registryInfo.nftId;
|
78
132
|
|
79
|
-
|
133
|
+
// amend component info with pool specific token handler
|
134
|
+
IComponents.ComponentInfo memory componentInfo = pool.getComponentInfo();
|
135
|
+
componentInfo.tokenHandler = new TokenHandler(address(componentInfo.token));
|
80
136
|
|
81
|
-
|
82
|
-
|
83
|
-
POOL_OWNER_ROLE(),
|
84
|
-
address(instance));
|
137
|
+
// save amended component info with instance
|
138
|
+
instance.createPoolSetup(poolNftId, componentInfo);
|
85
139
|
|
86
|
-
|
87
|
-
|
88
|
-
|
140
|
+
bytes4[][] memory selectors = new bytes4[][](2);
|
141
|
+
selectors[0] = new bytes4[](1);
|
142
|
+
selectors[1] = new bytes4[](1);
|
143
|
+
|
144
|
+
selectors[0][0] = IPoolComponent.setFees.selector;
|
145
|
+
selectors[1][0] = IPoolComponent.verifyApplication.selector;
|
146
|
+
|
147
|
+
RoleId[] memory roles = new RoleId[](2);
|
148
|
+
roles[0] = POOL_OWNER_ROLE();
|
149
|
+
roles[1] = POLICY_SERVICE_ROLE();
|
150
|
+
|
151
|
+
getInstanceService().createGifTarget(
|
152
|
+
instanceNftId,
|
153
|
+
poolAddress,
|
154
|
+
pool.getName(),
|
155
|
+
selectors,
|
156
|
+
roles);
|
157
|
+
}
|
89
158
|
|
90
|
-
|
91
|
-
|
92
|
-
|
159
|
+
|
160
|
+
function setMaxCapitalAmount(uint256 maxCapitalAmount)
|
161
|
+
external
|
162
|
+
virtual
|
163
|
+
{
|
164
|
+
(NftId poolNftId, IRegistry.ObjectInfo memory registryInfo, IInstance instance) = _getAndVerifyComponentInfoAndInstance(POOL());
|
165
|
+
InstanceReader instanceReader = instance.getInstanceReader();
|
166
|
+
|
167
|
+
IComponents.ComponentInfo memory componentInfo = instanceReader.getComponentInfo(poolNftId);
|
168
|
+
IComponents.PoolInfo memory poolInfo = abi.decode(componentInfo.data, (IComponents.PoolInfo));
|
169
|
+
uint256 previousMaxCapitalAmount = poolInfo.maxCapitalAmount;
|
170
|
+
|
171
|
+
poolInfo.maxCapitalAmount = maxCapitalAmount;
|
172
|
+
componentInfo.data = abi.encode(poolInfo);
|
173
|
+
instance.updatePoolSetup(poolNftId, componentInfo, KEEP_STATE());
|
174
|
+
|
175
|
+
emit LogPoolServiceMaxCapitalAmountUpdated(poolNftId, previousMaxCapitalAmount, maxCapitalAmount);
|
93
176
|
}
|
94
177
|
|
95
|
-
function
|
178
|
+
function setBundleOwnerRole(RoleId bundleOwnerRole)
|
179
|
+
external
|
180
|
+
virtual
|
96
181
|
{
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
);
|
182
|
+
(NftId poolNftId, IRegistry.ObjectInfo memory registryInfo, IInstance instance) = _getAndVerifyComponentInfoAndInstance(POOL());
|
183
|
+
InstanceReader instanceReader = instance.getInstanceReader();
|
184
|
+
|
185
|
+
IComponents.ComponentInfo memory componentInfo = instanceReader.getComponentInfo(poolNftId);
|
186
|
+
IComponents.PoolInfo memory poolInfo = abi.decode(componentInfo.data, (IComponents.PoolInfo));
|
101
187
|
|
102
|
-
//
|
188
|
+
// bundle owner role may only be set once per pool
|
189
|
+
if(poolInfo.bundleOwnerRole != PUBLIC_ROLE()) {
|
190
|
+
revert ErrorPoolServiceBundleOwnerRoleAlreadySet(poolNftId);
|
191
|
+
}
|
192
|
+
|
193
|
+
poolInfo.bundleOwnerRole = bundleOwnerRole;
|
194
|
+
componentInfo.data = abi.encode(poolInfo);
|
195
|
+
instance.updatePoolSetup(poolNftId, componentInfo, KEEP_STATE());
|
196
|
+
|
197
|
+
emit LogPoolServiceBundleOwnerRoleSet(poolNftId, bundleOwnerRole);
|
103
198
|
}
|
104
199
|
|
200
|
+
|
105
201
|
function setFees(
|
106
202
|
Fee memory poolFee,
|
107
203
|
Fee memory stakingFee,
|
108
204
|
Fee memory performanceFee
|
109
205
|
)
|
110
206
|
external
|
111
|
-
|
207
|
+
virtual
|
208
|
+
{
|
209
|
+
(NftId poolNftId, IRegistry.ObjectInfo memory registryInfo, IInstance instance) = _getAndVerifyComponentInfoAndInstance(POOL());
|
210
|
+
InstanceReader instanceReader = instance.getInstanceReader();
|
211
|
+
|
212
|
+
IComponents.ComponentInfo memory componentInfo = instanceReader.getComponentInfo(poolNftId);
|
213
|
+
IComponents.PoolInfo memory poolInfo = abi.decode(componentInfo.data, (IComponents.PoolInfo));
|
214
|
+
|
215
|
+
poolInfo.poolFee = poolFee;
|
216
|
+
poolInfo.stakingFee = stakingFee;
|
217
|
+
poolInfo.performanceFee = performanceFee;
|
218
|
+
componentInfo.data = abi.encode(poolInfo);
|
219
|
+
instance.updatePoolSetup(poolNftId, componentInfo, KEEP_STATE());
|
220
|
+
|
221
|
+
// TODO add logging
|
222
|
+
}
|
223
|
+
|
224
|
+
|
225
|
+
function createBundle(
|
226
|
+
address owner, // initial bundle owner
|
227
|
+
Fee memory fee, // fees deducted from premium that go to bundle owner
|
228
|
+
Amount stakingAmount, // staking amount - staking fees result in initial bundle capital
|
229
|
+
Seconds lifetime, // initial duration for which new policies are covered
|
230
|
+
bytes calldata filter // optional use case specific criteria that define if a policy may be covered by this bundle
|
231
|
+
)
|
232
|
+
external
|
233
|
+
virtual
|
234
|
+
returns(NftId bundleNftId)
|
235
|
+
{
|
236
|
+
(NftId poolNftId,, IInstance instance) = _getAndVerifyComponentInfoAndInstance(POOL());
|
237
|
+
InstanceReader instanceReader = instance.getInstanceReader();
|
238
|
+
|
239
|
+
// TODO add implementation that takes care of staking fees
|
240
|
+
Amount stakingAfterFeesAmount = stakingAmount;
|
241
|
+
|
242
|
+
bundleNftId = _bundleService.create(
|
243
|
+
instance,
|
244
|
+
poolNftId,
|
245
|
+
owner,
|
246
|
+
fee,
|
247
|
+
stakingAfterFeesAmount,
|
248
|
+
lifetime,
|
249
|
+
filter);
|
250
|
+
|
251
|
+
emit LogPoolServiceBundleCreated(instance.getNftId(), poolNftId, bundleNftId);
|
252
|
+
}
|
253
|
+
|
254
|
+
|
255
|
+
function closeBundle(NftId bundleNftId)
|
256
|
+
external
|
257
|
+
virtual
|
258
|
+
{
|
259
|
+
(NftId poolNftId,, IInstance instance) = _getAndVerifyComponentInfoAndInstance(POOL());
|
260
|
+
|
261
|
+
// TODO book keeping for pool collateral released outside of retention level
|
262
|
+
|
263
|
+
// releasing collateral in bundle
|
264
|
+
_bundleService.close(instance, bundleNftId);
|
265
|
+
|
266
|
+
// TODO get performance fee for pool, transfer of remaining funds + bundle fees to bundle owner
|
267
|
+
|
268
|
+
emit LogPoolServiceBundleClosed(instance.getNftId(), poolNftId, bundleNftId);
|
269
|
+
}
|
270
|
+
|
271
|
+
|
272
|
+
function lockCollateral(
|
273
|
+
IInstance instance,
|
274
|
+
NftId productNftId,
|
275
|
+
NftId applicationNftId,
|
276
|
+
IPolicy.PolicyInfo memory applicationInfo,
|
277
|
+
uint256 premiumAmount // premium amount after product and distribution fees
|
278
|
+
)
|
279
|
+
external
|
280
|
+
virtual
|
281
|
+
// TODO add restricted and granting for policy service
|
112
282
|
{
|
113
|
-
(IRegistry.ObjectInfo memory poolInfo, IInstance instance) = _getAndVerifyComponentInfoAndInstance(POOL());
|
114
283
|
InstanceReader instanceReader = instance.getInstanceReader();
|
115
|
-
NftId poolNftId =
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
284
|
+
NftId poolNftId = instanceReader.getProductSetupInfo(productNftId).poolNftId;
|
285
|
+
NftId bundleNftId = applicationInfo.bundleNftId;
|
286
|
+
|
287
|
+
// TODO move this check to application creation and don't repeat this here
|
288
|
+
// ensure that pool for bundle from application matches with pool for product of application
|
289
|
+
IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
|
290
|
+
if(bundleInfo.poolNftId != poolNftId) {
|
291
|
+
revert ErrorPoolServiceBundlePoolMismatch(bundleInfo.poolNftId, poolNftId);
|
292
|
+
}
|
293
|
+
|
294
|
+
IComponents.ComponentInfo memory componentInfo = instanceReader.getComponentInfo(poolNftId);
|
295
|
+
IComponents.PoolInfo memory poolInfo = abi.decode(componentInfo.data, (IComponents.PoolInfo));
|
296
|
+
|
297
|
+
// TODO add correct required collateral calculation (collateralization level mibht be != 1, retention level might be < 1)
|
298
|
+
uint256 collateralAmount = applicationInfo.sumInsuredAmount;
|
299
|
+
|
300
|
+
// TODO add correct net premium calculation (pool fee might be > 0)
|
301
|
+
uint256 premiumAfterPoolFeeAmount = premiumAmount;
|
302
|
+
|
303
|
+
// lock collateral amount from involvedd bundle
|
304
|
+
_bundleService.lockCollateral(
|
305
|
+
instance,
|
306
|
+
applicationNftId,
|
307
|
+
bundleNftId,
|
308
|
+
collateralAmount,
|
309
|
+
premiumAfterPoolFeeAmount);
|
310
|
+
|
311
|
+
// also verify/confirm application by pool if necessary
|
312
|
+
if(poolInfo.isVerifyingApplications) {
|
313
|
+
address poolAddress = getRegistry().getObjectInfo(poolNftId).objectAddress;
|
314
|
+
IPoolComponent(poolAddress).verifyApplication(
|
315
|
+
applicationNftId,
|
316
|
+
applicationInfo.applicationData,
|
317
|
+
bundleNftId,
|
318
|
+
bundleInfo.filter,
|
319
|
+
collateralAmount);
|
320
|
+
}
|
123
321
|
}
|
322
|
+
|
323
|
+
|
324
|
+
/// @dev releases the remaining collateral linked to the specified policy
|
325
|
+
/// may only be called by the policy service for unlocked pool components
|
326
|
+
function releaseCollateral(
|
327
|
+
IInstance instance,
|
328
|
+
NftId policyNftId,
|
329
|
+
IPolicy.PolicyInfo memory policyInfo
|
330
|
+
)
|
331
|
+
external
|
332
|
+
virtual
|
333
|
+
// TODO add restricted and granting for policy service
|
334
|
+
{
|
335
|
+
// release collateral from involved bundle
|
336
|
+
_bundleService.releaseCollateral(
|
337
|
+
instance,
|
338
|
+
policyNftId,
|
339
|
+
policyInfo.bundleNftId,
|
340
|
+
policyInfo.sumInsuredAmount);
|
341
|
+
}
|
342
|
+
|
124
343
|
}
|
@@ -6,7 +6,7 @@ import {ProxyManager} from "../../shared/ProxyManager.sol";
|
|
6
6
|
import {PoolService} from "./PoolService.sol";
|
7
7
|
import {Registry} from "../../registry/Registry.sol";
|
8
8
|
import {RegistryService} from "../../registry/RegistryService.sol";
|
9
|
-
import {
|
9
|
+
import {REGISTRY} from "../../types/ObjectType.sol";
|
10
10
|
|
11
11
|
contract PoolServiceManager is ProxyManager {
|
12
12
|
|
@@ -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));
|
@@ -26,10 +26,10 @@ contract PoolServiceManager is ProxyManager {
|
|
26
26
|
|
27
27
|
_poolService = PoolService(address(versionable));
|
28
28
|
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
//
|
29
|
+
// TODO `this` must have a role or own nft to register service
|
30
|
+
//Registry registry = Registry(registryAddress);
|
31
|
+
//address registryServiceAddress = registry.getServiceAddress(REGISTRY(), _poolService.getMajorVersion());
|
32
|
+
//RegistryService registryService = RegistryService(registryServiceAddress);
|
33
33
|
//registryService.registerService(_poolService);
|
34
34
|
|
35
35
|
// TODO no nft to link yet
|
@@ -37,9 +37,6 @@ contract PoolServiceManager is ProxyManager {
|
|
37
37
|
//_linkToNftOwnable(
|
38
38
|
// address(registryAddress),
|
39
39
|
// address(_poolService));
|
40
|
-
|
41
|
-
// implies that after this constructor call only upgrade functionality is available
|
42
|
-
_isDeployed = true;
|
43
40
|
}
|
44
41
|
|
45
42
|
//--- view functions ----------------------------------------------------//
|
@@ -4,7 +4,7 @@ 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 {IComponent} from "../../components/IComponent.sol";
|
8
8
|
import {IPoolComponent} from "../../components/IPoolComponent.sol";
|
9
9
|
import {IDistributionComponent} from "../../components/IDistributionComponent.sol";
|
10
10
|
import {IInstance} from "../IInstance.sol";
|
@@ -23,7 +23,7 @@ import {Versionable} from "../../shared/Versionable.sol";
|
|
23
23
|
import {Timestamp, zeroTimestamp} from "../../types/Timestamp.sol";
|
24
24
|
import {UFixed, UFixedLib} from "../../types/UFixed.sol";
|
25
25
|
import {Blocknumber, blockNumber} from "../../types/Blocknumber.sol";
|
26
|
-
import {ObjectType,
|
26
|
+
import {ObjectType, PRODUCT, POOL, POLICY} from "../../types/ObjectType.sol";
|
27
27
|
import {APPLIED, UNDERWRITTEN, ACTIVE, KEEP_STATE} from "../../types/StateId.sol";
|
28
28
|
import {NftId, NftIdLib, zeroNftId} from "../../types/NftId.sol";
|
29
29
|
import {Fee, FeeLib} from "../../types/Fee.sol";
|
@@ -35,20 +35,15 @@ import {RoleId, PRODUCT_OWNER_ROLE} from "../../types/RoleId.sol";
|
|
35
35
|
|
36
36
|
import {IService} from "../../shared/IService.sol";
|
37
37
|
import {Service} from "../../shared/Service.sol";
|
38
|
-
import {
|
38
|
+
import {ComponentService} from "../base/ComponentService.sol";
|
39
39
|
import {IProductService} from "./IProductService.sol";
|
40
40
|
import {InstanceReader} from "../InstanceReader.sol";
|
41
41
|
import {IPoolService} from "./PoolService.sol";
|
42
|
-
import {POOL_SERVICE_NAME} from "./PoolService.sol";
|
43
|
-
|
44
|
-
string constant PRODUCT_SERVICE_NAME = "ProductService";
|
45
42
|
|
46
43
|
// TODO or name this ProtectionService to have Product be something more generic (loan, savings account, ...)
|
47
|
-
contract ProductService is
|
44
|
+
contract ProductService is ComponentService, IProductService {
|
48
45
|
using NftIdLib for NftId;
|
49
46
|
|
50
|
-
string public constant NAME = "ProductService";
|
51
|
-
|
52
47
|
IPoolService internal _poolService;
|
53
48
|
|
54
49
|
event LogProductServiceSender(address sender);
|
@@ -65,52 +60,93 @@ contract ProductService is ComponentServiceBase, IProductService {
|
|
65
60
|
address initialOwner;
|
66
61
|
(registryAddress, initialOwner) = abi.decode(data, (address, address));
|
67
62
|
|
68
|
-
|
63
|
+
initializeService(registryAddress, owner);
|
69
64
|
|
70
|
-
_poolService = IPoolService(
|
65
|
+
_poolService = IPoolService(getRegistry().getServiceAddress(POOL(), getMajorVersion()));
|
71
66
|
|
72
|
-
|
67
|
+
registerInterface(type(IProductService).interfaceId);
|
73
68
|
}
|
74
69
|
|
75
70
|
|
76
|
-
function getName() public pure override(IService, Service) returns(string memory name) {
|
77
|
-
return NAME;
|
78
|
-
}
|
79
|
-
|
80
71
|
function register(address productAddress)
|
81
72
|
external
|
82
73
|
returns(NftId productNftId)
|
83
74
|
{
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
75
|
+
(
|
76
|
+
IComponent component,
|
77
|
+
address owner,
|
78
|
+
IInstance instance,
|
79
|
+
NftId instanceNftId
|
80
|
+
) = _checkComponentForRegistration(
|
81
|
+
productAddress,
|
82
|
+
PRODUCT(),
|
83
|
+
PRODUCT_OWNER_ROLE());
|
84
|
+
|
85
|
+
IProductComponent product = IProductComponent(productAddress);
|
86
|
+
IRegistry.ObjectInfo memory productInfo = getRegistryService().registerProduct(product, owner);
|
87
|
+
productNftId = productInfo.nftId;
|
88
|
+
_createProductSetup(
|
89
|
+
instance,
|
90
|
+
product,
|
91
|
+
productNftId);
|
92
|
+
}
|
93
|
+
|
94
|
+
|
95
|
+
function _createProductSetup(
|
96
|
+
IInstance instance,
|
97
|
+
IProductComponent product,
|
98
|
+
NftId productNftId
|
99
|
+
)
|
100
|
+
internal
|
101
|
+
returns (string memory name)
|
102
|
+
{
|
103
|
+
// wire distribution and pool components to product component
|
104
|
+
ISetup.ProductSetupInfo memory setup = product.getSetupInfo();
|
105
|
+
IComponent distribution = IComponent(getRegistry().getObjectInfo(setup.distributionNftId).objectAddress);
|
106
|
+
IComponent pool = IComponent(getRegistry().getObjectInfo(setup.poolNftId).objectAddress);
|
107
|
+
|
108
|
+
distribution.setProductNftId(productNftId);
|
109
|
+
pool.setProductNftId(productNftId);
|
110
|
+
product.setProductNftId(productNftId);
|
111
|
+
product.linkToRegisteredNftId();
|
112
|
+
|
113
|
+
// create product setup in instance
|
114
|
+
instance.createProductSetup(productNftId, product.getSetupInfo());
|
115
|
+
|
116
|
+
bytes4[][] memory selectors = new bytes4[][](1);
|
117
|
+
selectors[0] = new bytes4[](1);
|
118
|
+
selectors[0][0] = IProductComponent.setFees.selector;
|
119
|
+
|
120
|
+
RoleId[] memory roles = new RoleId[](1);
|
121
|
+
roles[0] = PRODUCT_OWNER_ROLE();
|
122
|
+
|
123
|
+
// create target for instane access manager
|
124
|
+
getInstanceService().createGifTarget(
|
125
|
+
getRegistry().getNftId(address(instance)),
|
126
|
+
address(product),
|
127
|
+
product.getName(),
|
128
|
+
selectors,
|
129
|
+
roles);
|
104
130
|
}
|
105
131
|
|
106
|
-
function
|
132
|
+
function getDomain() public pure override(IService, Service) returns(ObjectType) {
|
133
|
+
return PRODUCT();
|
134
|
+
}
|
135
|
+
|
136
|
+
|
137
|
+
function _decodeAndVerifyProductData(bytes memory data)
|
138
|
+
internal
|
139
|
+
returns(string memory name, ISetup.ProductSetupInfo memory setup)
|
107
140
|
{
|
108
|
-
setup = abi.decode(
|
141
|
+
(name, setup) = abi.decode(
|
109
142
|
data,
|
110
|
-
(ISetup.ProductSetupInfo)
|
143
|
+
(string, ISetup.ProductSetupInfo)
|
111
144
|
);
|
112
145
|
|
113
|
-
// TODO add checks
|
146
|
+
// TODO add checks
|
147
|
+
// if(wallet == address(0)) {
|
148
|
+
// revert WalletIsZero();
|
149
|
+
// }
|
114
150
|
}
|
115
151
|
|
116
152
|
function setFees(
|
@@ -121,13 +157,9 @@ contract ProductService is ComponentServiceBase, IProductService {
|
|
121
157
|
{
|
122
158
|
// TODO check args
|
123
159
|
|
124
|
-
(
|
125
|
-
IRegistry.ObjectInfo memory productInfo,
|
126
|
-
IInstance instance
|
127
|
-
) = _getAndVerifyComponentInfoAndInstance(PRODUCT());
|
128
|
-
|
160
|
+
(NftId productNftId, IRegistry.ObjectInfo memory productInfo, IInstance instance) = _getAndVerifyComponentInfoAndInstance(PRODUCT());
|
129
161
|
InstanceReader instanceReader = instance.getInstanceReader();
|
130
|
-
|
162
|
+
|
131
163
|
ISetup.ProductSetupInfo memory productSetupInfo = instanceReader.getProductSetupInfo(productNftId);
|
132
164
|
|
133
165
|
productSetupInfo.productFee = productFee;
|
@@ -139,13 +171,13 @@ contract ProductService is ComponentServiceBase, IProductService {
|
|
139
171
|
function createRisk(
|
140
172
|
RiskId riskId,
|
141
173
|
bytes memory data
|
142
|
-
)
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
) = _getAndVerifyComponentInfoAndInstance(PRODUCT());
|
147
|
-
NftId productNftId = productInfo.nftId;
|
174
|
+
)
|
175
|
+
external
|
176
|
+
override
|
177
|
+
{
|
178
|
+
(NftId productNftId, IRegistry.ObjectInfo memory productInfo, IInstance instance) = _getAndVerifyComponentInfoAndInstance(PRODUCT());
|
148
179
|
IRisk.RiskInfo memory riskInfo = IRisk.RiskInfo(productNftId, data);
|
180
|
+
|
149
181
|
instance.createRisk(
|
150
182
|
riskId,
|
151
183
|
riskInfo
|
@@ -155,9 +187,12 @@ contract ProductService is ComponentServiceBase, IProductService {
|
|
155
187
|
function updateRisk(
|
156
188
|
RiskId riskId,
|
157
189
|
bytes memory data
|
158
|
-
)
|
159
|
-
|
190
|
+
)
|
191
|
+
external
|
192
|
+
{
|
193
|
+
(,, IInstance instance) = _getAndVerifyComponentInfoAndInstance(PRODUCT());
|
160
194
|
InstanceReader instanceReader = instance.getInstanceReader();
|
195
|
+
|
161
196
|
IRisk.RiskInfo memory riskInfo = instanceReader.getRiskInfo(riskId);
|
162
197
|
riskInfo.data = data;
|
163
198
|
instance.updateRisk(riskId, riskInfo, KEEP_STATE());
|
@@ -166,8 +201,10 @@ contract ProductService is ComponentServiceBase, IProductService {
|
|
166
201
|
function updateRiskState(
|
167
202
|
RiskId riskId,
|
168
203
|
StateId state
|
169
|
-
)
|
170
|
-
|
204
|
+
)
|
205
|
+
external
|
206
|
+
{
|
207
|
+
(,, IInstance instance) = _getAndVerifyComponentInfoAndInstance(PRODUCT());
|
171
208
|
instance.updateRiskState(riskId, state);
|
172
209
|
}
|
173
210
|
}
|