@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,12 +4,16 @@ pragma solidity ^0.8.19;
|
|
|
4
4
|
import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
|
|
5
5
|
|
|
6
6
|
import {IRisk} from "../instance/module/IRisk.sol";
|
|
7
|
+
import {IApplicationService} from "../instance/service/IApplicationService.sol";
|
|
7
8
|
import {IPolicyService} from "../instance/service/IPolicyService.sol";
|
|
9
|
+
import {IProductService} from "../instance/service/IProductService.sol";
|
|
10
|
+
import {IClaimService} from "../instance/service/IClaimService.sol";
|
|
8
11
|
import {IProductComponent} from "./IProductComponent.sol";
|
|
9
12
|
import {NftId, NftIdLib} from "../types/NftId.sol";
|
|
10
|
-
import {PRODUCT} from "../types/ObjectType.sol";
|
|
13
|
+
import {PRODUCT, APPLICATION, POLICY, CLAIM } from "../types/ObjectType.sol";
|
|
11
14
|
import {ReferralId} from "../types/Referral.sol";
|
|
12
15
|
import {RiskId, RiskIdLib} from "../types/RiskId.sol";
|
|
16
|
+
import {Seconds} from "../types/Seconds.sol";
|
|
13
17
|
import {StateId} from "../types/StateId.sol";
|
|
14
18
|
import {Timestamp} from "../types/Timestamp.sol";
|
|
15
19
|
import {Fee} from "../types/Fee.sol";
|
|
@@ -18,7 +22,9 @@ import {Component} from "./Component.sol";
|
|
|
18
22
|
import {TokenHandler} from "../shared/TokenHandler.sol";
|
|
19
23
|
|
|
20
24
|
import {InstanceReader} from "../instance/InstanceReader.sol";
|
|
25
|
+
import {IPolicy} from "../instance/module/IPolicy.sol";
|
|
21
26
|
import {ISetup} from "../instance/module/ISetup.sol";
|
|
27
|
+
import {IComponents} from "../instance/module/IComponents.sol";
|
|
22
28
|
import {Pool} from "../components/Pool.sol";
|
|
23
29
|
import {Distribution} from "../components/Distribution.sol";
|
|
24
30
|
|
|
@@ -30,7 +36,10 @@ abstract contract Product is
|
|
|
30
36
|
bytes32 public constant PRODUCT_STORAGE_LOCATION_V1 = 0x0bb7aafdb8e380f81267337bc5b5dfdf76e6d3a380ecadb51ec665246d9d6800;
|
|
31
37
|
|
|
32
38
|
struct ProductStorage {
|
|
39
|
+
IProductService _productService;
|
|
40
|
+
IApplicationService _applicationService;
|
|
33
41
|
IPolicyService _policyService;
|
|
42
|
+
IClaimService _claimService;
|
|
34
43
|
Pool _pool;
|
|
35
44
|
Distribution _distribution;
|
|
36
45
|
Fee _initialProductFee;
|
|
@@ -51,17 +60,21 @@ abstract contract Product is
|
|
|
51
60
|
Fee memory productFee,
|
|
52
61
|
Fee memory processingFee,
|
|
53
62
|
address initialOwner,
|
|
54
|
-
bytes memory data
|
|
63
|
+
bytes memory registryData // writeonly data that will saved in the object info record of the registry
|
|
55
64
|
)
|
|
56
65
|
public
|
|
57
66
|
virtual
|
|
58
67
|
onlyInitializing()
|
|
59
68
|
{
|
|
60
|
-
initializeComponent(registry, instanceNftId, name, token, PRODUCT(), isInterceptor, initialOwner,
|
|
69
|
+
initializeComponent(registry, instanceNftId, name, token, PRODUCT(), isInterceptor, initialOwner, registryData);
|
|
61
70
|
|
|
62
71
|
ProductStorage storage $ = _getProductStorage();
|
|
63
72
|
// TODO add validation
|
|
64
|
-
|
|
73
|
+
// TODO refactor to go via registry
|
|
74
|
+
$._productService = IProductService(_getServiceAddress(PRODUCT()));
|
|
75
|
+
$._applicationService = IApplicationService(_getServiceAddress(APPLICATION()));
|
|
76
|
+
$._policyService = IPolicyService(_getServiceAddress(POLICY()));
|
|
77
|
+
$._claimService = IClaimService(_getServiceAddress(CLAIM()));
|
|
65
78
|
$._pool = Pool(pool);
|
|
66
79
|
$._distribution = Distribution(distribution);
|
|
67
80
|
$._initialProductFee = productFee;
|
|
@@ -77,7 +90,7 @@ abstract contract Product is
|
|
|
77
90
|
function calculatePremium(
|
|
78
91
|
uint256 sumInsuredAmount,
|
|
79
92
|
RiskId riskId,
|
|
80
|
-
|
|
93
|
+
Seconds lifetime,
|
|
81
94
|
bytes memory applicationData,
|
|
82
95
|
NftId bundleNftId,
|
|
83
96
|
ReferralId referralId
|
|
@@ -87,7 +100,8 @@ abstract contract Product is
|
|
|
87
100
|
override
|
|
88
101
|
returns (uint256 premiumAmount)
|
|
89
102
|
{
|
|
90
|
-
|
|
103
|
+
IPolicy.Premium memory premium = _getProductStorage()._applicationService.calculatePremium(
|
|
104
|
+
getNftId(),
|
|
91
105
|
riskId,
|
|
92
106
|
sumInsuredAmount,
|
|
93
107
|
lifetime,
|
|
@@ -95,13 +109,14 @@ abstract contract Product is
|
|
|
95
109
|
bundleNftId,
|
|
96
110
|
referralId
|
|
97
111
|
);
|
|
112
|
+
premiumAmount = premium.premiumAmount;
|
|
98
113
|
}
|
|
99
114
|
|
|
100
115
|
|
|
101
116
|
function calculateNetPremium(
|
|
102
117
|
uint256 sumInsuredAmount,
|
|
103
118
|
RiskId riskId,
|
|
104
|
-
|
|
119
|
+
Seconds lifetime,
|
|
105
120
|
bytes memory applicationData
|
|
106
121
|
)
|
|
107
122
|
external
|
|
@@ -121,7 +136,7 @@ abstract contract Product is
|
|
|
121
136
|
RiskId id,
|
|
122
137
|
bytes memory data
|
|
123
138
|
) internal {
|
|
124
|
-
|
|
139
|
+
_getProductService().createRisk(
|
|
125
140
|
id,
|
|
126
141
|
data
|
|
127
142
|
);
|
|
@@ -131,7 +146,7 @@ abstract contract Product is
|
|
|
131
146
|
RiskId id,
|
|
132
147
|
bytes memory data
|
|
133
148
|
) internal {
|
|
134
|
-
|
|
149
|
+
_getProductService().updateRisk(
|
|
135
150
|
id,
|
|
136
151
|
data
|
|
137
152
|
);
|
|
@@ -141,7 +156,7 @@ abstract contract Product is
|
|
|
141
156
|
RiskId id,
|
|
142
157
|
StateId state
|
|
143
158
|
) internal {
|
|
144
|
-
|
|
159
|
+
_getProductService().updateRiskState(
|
|
145
160
|
id,
|
|
146
161
|
state
|
|
147
162
|
);
|
|
@@ -155,22 +170,22 @@ abstract contract Product is
|
|
|
155
170
|
address applicationOwner,
|
|
156
171
|
RiskId riskId,
|
|
157
172
|
uint256 sumInsuredAmount,
|
|
158
|
-
|
|
159
|
-
bytes memory applicationData,
|
|
173
|
+
Seconds lifetime,
|
|
160
174
|
NftId bundleNftId,
|
|
161
|
-
ReferralId referralId
|
|
175
|
+
ReferralId referralId,
|
|
176
|
+
bytes memory applicationData
|
|
162
177
|
)
|
|
163
178
|
internal
|
|
164
|
-
returns (NftId
|
|
179
|
+
returns (NftId applicationNftId)
|
|
165
180
|
{
|
|
166
|
-
return _getProductStorage().
|
|
181
|
+
return _getProductStorage()._applicationService.create(
|
|
167
182
|
applicationOwner,
|
|
168
183
|
riskId,
|
|
169
184
|
sumInsuredAmount,
|
|
170
185
|
lifetime,
|
|
171
|
-
applicationData,
|
|
172
186
|
bundleNftId,
|
|
173
|
-
referralId
|
|
187
|
+
referralId,
|
|
188
|
+
applicationData
|
|
174
189
|
);
|
|
175
190
|
}
|
|
176
191
|
|
|
@@ -235,7 +250,7 @@ abstract contract Product is
|
|
|
235
250
|
restricted()
|
|
236
251
|
override
|
|
237
252
|
{
|
|
238
|
-
|
|
253
|
+
_getProductService().setFees(productFee, processingFee);
|
|
239
254
|
}
|
|
240
255
|
|
|
241
256
|
function getSetupInfo() public view returns (ISetup.ProductSetupInfo memory setupInfo) {
|
|
@@ -252,19 +267,15 @@ abstract contract Product is
|
|
|
252
267
|
ProductStorage storage $ = _getProductStorage();
|
|
253
268
|
|
|
254
269
|
ISetup.DistributionSetupInfo memory distributionSetupInfo = $._distribution.getSetupInfo();
|
|
255
|
-
|
|
270
|
+
IComponents.PoolInfo memory poolInfo = $._pool.getPoolInfo();
|
|
256
271
|
|
|
257
272
|
return ISetup.ProductSetupInfo(
|
|
258
273
|
getToken(),
|
|
259
274
|
$._tokenHandler,
|
|
260
275
|
$._distributionNftId,
|
|
261
276
|
$._poolNftId,
|
|
262
|
-
distributionSetupInfo.distributionFee,
|
|
263
277
|
$._initialProductFee,
|
|
264
278
|
$._initialProcessingFee,
|
|
265
|
-
poolSetupInfo.poolFee,
|
|
266
|
-
poolSetupInfo.stakingFee,
|
|
267
|
-
poolSetupInfo.performanceFee,
|
|
268
279
|
false,
|
|
269
280
|
getWallet()
|
|
270
281
|
);
|
|
@@ -275,4 +286,8 @@ abstract contract Product is
|
|
|
275
286
|
$.slot := PRODUCT_STORAGE_LOCATION_V1
|
|
276
287
|
}
|
|
277
288
|
}
|
|
289
|
+
|
|
290
|
+
function _getProductService() internal view returns (IProductService) {
|
|
291
|
+
return _getProductStorage()._productService;
|
|
292
|
+
}
|
|
278
293
|
}
|
|
@@ -22,9 +22,10 @@ contract BundleManager is
|
|
|
22
22
|
event LogBundleManagerBundleAdded(NftId poolNftId, NftId bundleNftId);
|
|
23
23
|
event LogBundleManagerBundleUnlocked(NftId poolNftId, NftId bundleNftId);
|
|
24
24
|
event LogBundleManagerBundleLocked(NftId poolNftId, NftId bundleNftId);
|
|
25
|
+
event LogBundleManagerBundleClosed(NftId poolNftId, NftId bundleNftId);
|
|
25
26
|
|
|
26
|
-
error
|
|
27
|
-
error
|
|
27
|
+
error ErrorBundleManagerPolicyAlreadyActivated(NftId policyNftId);
|
|
28
|
+
error ErrorBundleManagerBundleLocked(NftId bundleNftId, NftId policyNftId);
|
|
28
29
|
error ErrorBundleManagerPolicyWithOpenClaims(NftId policyNftId, uint256 openClaimsCount);
|
|
29
30
|
error ErrorBundleManagerPolicyNotCloseable(NftId policyNftId);
|
|
30
31
|
error ErrorBundleManagerBundleUnknown(NftId bundleNftId);
|
|
@@ -32,7 +33,7 @@ contract BundleManager is
|
|
|
32
33
|
|
|
33
34
|
mapping(NftId bundleNftId => LibNftIdSet.Set policies) internal _activePolicies;
|
|
34
35
|
|
|
35
|
-
/// @dev links a policy
|
|
36
|
+
/// @dev links a policy to its bundle
|
|
36
37
|
// to link a policy it MUST NOT yet have been activated
|
|
37
38
|
// the bundle MUST be unlocked (active) for linking (underwriting) and registered with this instance
|
|
38
39
|
function linkPolicy(NftId policyNftId) external restricted() {
|
|
@@ -42,7 +43,7 @@ contract BundleManager is
|
|
|
42
43
|
|
|
43
44
|
// ensure bundle is unlocked (in active set) and registered with this instance
|
|
44
45
|
if (!_isActive(poolNftId, bundleNftId)) {
|
|
45
|
-
revert
|
|
46
|
+
revert ErrorBundleManagerBundleLocked(bundleNftId, policyNftId);
|
|
46
47
|
}
|
|
47
48
|
|
|
48
49
|
LibNftIdSet.add(_activePolicies[bundleNftId], policyNftId);
|
|
@@ -71,7 +72,7 @@ contract BundleManager is
|
|
|
71
72
|
}
|
|
72
73
|
|
|
73
74
|
|
|
74
|
-
/// @dev add a new bundle to a
|
|
75
|
+
/// @dev add a new bundle to a pool registerd with this instance
|
|
75
76
|
// the corresponding pool is fetched via instance reader
|
|
76
77
|
function add(NftId bundleNftId) external restricted() {
|
|
77
78
|
NftId poolNftId = _instance.getInstanceReader().getBundleInfo(bundleNftId).poolNftId;
|
|
@@ -85,6 +86,7 @@ contract BundleManager is
|
|
|
85
86
|
emit LogBundleManagerBundleAdded(poolNftId, bundleNftId);
|
|
86
87
|
}
|
|
87
88
|
|
|
89
|
+
|
|
88
90
|
/// @dev unlocked (active) bundles are available to underwrite new policies
|
|
89
91
|
function unlock(NftId bundleNftId) external restricted() {
|
|
90
92
|
NftId poolNftId = _instance.getInstanceReader().getBundleInfo(bundleNftId).poolNftId;
|
|
@@ -15,6 +15,7 @@ import {InstanceReader} from "./InstanceReader.sol";
|
|
|
15
15
|
|
|
16
16
|
import {IBundle} from "./module/IBundle.sol";
|
|
17
17
|
import {IBundleService} from "./service/IBundleService.sol";
|
|
18
|
+
import {IComponents} from "./module/IComponents.sol";
|
|
18
19
|
import {IDistributionService} from "./service/IDistributionService.sol";
|
|
19
20
|
import {InstanceAccessManager} from "./InstanceAccessManager.sol";
|
|
20
21
|
import {IKeyValueStore} from "./base/IKeyValueStore.sol";
|
|
@@ -48,8 +49,8 @@ interface IInstance is IRegisterable, IKeyValueStore, IAccessManaged {
|
|
|
48
49
|
function updateDistributionSetup(NftId distributionNftId, ISetup.DistributionSetupInfo memory setup, StateId newState) external;
|
|
49
50
|
function updateDistributionSetupState(NftId distributionNftId, StateId newState) external;
|
|
50
51
|
|
|
51
|
-
function createPoolSetup(NftId poolNftId,
|
|
52
|
-
function updatePoolSetup(NftId poolNftId,
|
|
52
|
+
function createPoolSetup(NftId poolNftId, IComponents.ComponentInfo memory info) external;
|
|
53
|
+
function updatePoolSetup(NftId poolNftId, IComponents.ComponentInfo memory info, StateId newState) external;
|
|
53
54
|
function updatePoolSetupState(NftId poolNftId, StateId newState) external;
|
|
54
55
|
|
|
55
56
|
function createBundle(NftId bundleNftId, IBundle.BundleInfo memory bundle) external;
|
|
@@ -76,10 +77,16 @@ interface IInstance is IRegisterable, IKeyValueStore, IAccessManaged {
|
|
|
76
77
|
function updateRisk(RiskId riskId, IRisk.RiskInfo memory risk, StateId newState) external;
|
|
77
78
|
function updateRiskState(RiskId riskId, StateId newState) external;
|
|
78
79
|
|
|
79
|
-
function
|
|
80
|
+
function createApplication(NftId applicationNftId, IPolicy.PolicyInfo memory policy) external;
|
|
81
|
+
function updateApplication(NftId applicationNftId, IPolicy.PolicyInfo memory policy, StateId newState) external;
|
|
82
|
+
function updateApplicationState(NftId applicationNftId, StateId newState) external;
|
|
83
|
+
|
|
80
84
|
function updatePolicy(NftId policyNftId, IPolicy.PolicyInfo memory policy, StateId newState) external;
|
|
81
85
|
function updatePolicyState(NftId policyNftId, StateId newState) external;
|
|
82
86
|
|
|
87
|
+
// TODO add claims/payouts function to instance
|
|
88
|
+
// function updateClaims(NftId policyNftId, IPolicy.PolicyInfo memory policy, StateId newState) external;
|
|
89
|
+
|
|
83
90
|
function getMajorVersion() external pure returns (VersionPart majorVersion);
|
|
84
91
|
function getInstanceReader() external view returns (InstanceReader);
|
|
85
92
|
function getBundleManager() external view returns (BundleManager);
|
|
@@ -52,8 +52,9 @@ interface IInstanceService is IService {
|
|
|
52
52
|
BundleManager clonedBundleManager
|
|
53
53
|
);
|
|
54
54
|
|
|
55
|
-
function hasRole(address account, RoleId role, address instanceAddress) external returns (bool);
|
|
56
55
|
function setTargetLocked(string memory targetName, bool locked) external;
|
|
57
56
|
|
|
57
|
+
function hasRole(address account, RoleId role, address instanceAddress) external returns (bool);
|
|
58
|
+
|
|
58
59
|
}
|
|
59
60
|
|
|
@@ -5,6 +5,7 @@ import {AccessManagedUpgradeable} from "@openzeppelin/contracts-upgradeable/acce
|
|
|
5
5
|
|
|
6
6
|
import {Key32, KeyId, Key32Lib} from "../types/Key32.sol";
|
|
7
7
|
import {NftId} from "../types/NftId.sol";
|
|
8
|
+
import {ClaimId} from "../types/ClaimId.sol";
|
|
8
9
|
import {NumberId} from "../types/NumberId.sol";
|
|
9
10
|
import {ObjectType, BUNDLE, DISTRIBUTION, INSTANCE, POLICY, POOL, ROLE, PRODUCT, TARGET, COMPONENT, DISTRIBUTOR, DISTRIBUTOR_TYPE} from "../types/ObjectType.sol";
|
|
10
11
|
import {RiskId, RiskIdLib} from "../types/RiskId.sol";
|
|
@@ -25,6 +26,7 @@ import {KeyValueStore} from "./base/KeyValueStore.sol";
|
|
|
25
26
|
|
|
26
27
|
import {IAccess} from "./module/IAccess.sol";
|
|
27
28
|
import {IBundle} from "./module/IBundle.sol";
|
|
29
|
+
import {IComponents} from "./module/IComponents.sol";
|
|
28
30
|
import {IDistribution} from "./module/IDistribution.sol";
|
|
29
31
|
import {IPolicy} from "./module/IPolicy.sol";
|
|
30
32
|
import {IRisk} from "./module/IRisk.sol";
|
|
@@ -35,6 +37,7 @@ import {IPoolService} from "./service/IPoolService.sol";
|
|
|
35
37
|
import {IProductService} from "./service/IProductService.sol";
|
|
36
38
|
import {IPolicyService} from "./service/IPolicyService.sol";
|
|
37
39
|
import {IBundleService} from "./service/IBundleService.sol";
|
|
40
|
+
import {TokenHandler} from "../shared/TokenHandler.sol";
|
|
38
41
|
import {VersionPart, VersionPartLib} from "../types/Version.sol";
|
|
39
42
|
|
|
40
43
|
contract Instance is
|
|
@@ -65,6 +68,8 @@ contract Instance is
|
|
|
65
68
|
__AccessManaged_init(accessManagerAddress);
|
|
66
69
|
|
|
67
70
|
initializeRegisterable(registryAddress, registryNftId, INSTANCE(), false, initialOwner, "");
|
|
71
|
+
initializeLifecycle();
|
|
72
|
+
|
|
68
73
|
registerInterface(type(IInstance).interfaceId);
|
|
69
74
|
}
|
|
70
75
|
|
|
@@ -95,12 +100,12 @@ contract Instance is
|
|
|
95
100
|
}
|
|
96
101
|
|
|
97
102
|
//--- PoolSetup ------------------------------------------------------//
|
|
98
|
-
function createPoolSetup(NftId poolNftId,
|
|
99
|
-
create(_toNftKey32(poolNftId, POOL()), abi.encode(
|
|
103
|
+
function createPoolSetup(NftId poolNftId, IComponents.ComponentInfo memory info) external restricted() {
|
|
104
|
+
create(_toNftKey32(poolNftId, POOL()), abi.encode(info));
|
|
100
105
|
}
|
|
101
106
|
|
|
102
|
-
function updatePoolSetup(NftId poolNftId,
|
|
103
|
-
update(_toNftKey32(poolNftId, POOL()), abi.encode(
|
|
107
|
+
function updatePoolSetup(NftId poolNftId, IComponents.ComponentInfo memory info, StateId newState) external restricted() {
|
|
108
|
+
update(_toNftKey32(poolNftId, POOL()), abi.encode(info), newState);
|
|
104
109
|
}
|
|
105
110
|
|
|
106
111
|
function updatePoolSetupState(NftId poolNftId, StateId newState) external restricted() {
|
|
@@ -172,11 +177,20 @@ contract Instance is
|
|
|
172
177
|
updateState(riskId.toKey32(), newState);
|
|
173
178
|
}
|
|
174
179
|
|
|
175
|
-
//--- Policy
|
|
176
|
-
function
|
|
177
|
-
create(toPolicyKey32(
|
|
180
|
+
//--- Application (Policy) ----------------------------------------------//
|
|
181
|
+
function createApplication(NftId applicationNftId, IPolicy.PolicyInfo memory policy) external restricted() {
|
|
182
|
+
create(toPolicyKey32(applicationNftId), abi.encode(policy));
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
function updateApplication(NftId applicationNftId, IPolicy.PolicyInfo memory policy, StateId newState) external restricted() {
|
|
186
|
+
update(toPolicyKey32(applicationNftId), abi.encode(policy), newState);
|
|
178
187
|
}
|
|
179
188
|
|
|
189
|
+
function updateApplicationState(NftId applicationNftId, StateId newState) external restricted() {
|
|
190
|
+
updateState(toPolicyKey32(applicationNftId), newState);
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
//--- Policy ------------------------------------------------------------//
|
|
180
194
|
function updatePolicy(NftId policyNftId, IPolicy.PolicyInfo memory policy, StateId newState) external restricted() {
|
|
181
195
|
update(toPolicyKey32(policyNftId), abi.encode(policy), newState);
|
|
182
196
|
}
|
|
@@ -186,15 +200,15 @@ contract Instance is
|
|
|
186
200
|
}
|
|
187
201
|
|
|
188
202
|
//--- Claim -------------------------------------------------------------//
|
|
189
|
-
function createClaim(NftId policyNftId,
|
|
203
|
+
function createClaim(NftId policyNftId, ClaimId claimId, IPolicy.ClaimInfo memory claim) external restricted() {
|
|
190
204
|
create(toPolicyKey32(policyNftId), abi.encode(claim));
|
|
191
205
|
}
|
|
192
206
|
|
|
193
|
-
function updateClaim(NftId policyNftId,
|
|
207
|
+
function updateClaim(NftId policyNftId, ClaimId claimId, IPolicy.ClaimInfo memory claim, StateId newState) external restricted() {
|
|
194
208
|
update(toPolicyKey32(policyNftId), abi.encode(claim), newState);
|
|
195
209
|
}
|
|
196
210
|
|
|
197
|
-
function updateClaimState(NftId policyNftId, StateId newState) external restricted() {
|
|
211
|
+
function updateClaimState(NftId policyNftId, ClaimId claimId, StateId newState) external restricted() {
|
|
198
212
|
updateState(toPolicyKey32(policyNftId), newState);
|
|
199
213
|
}
|
|
200
214
|
|
|
@@ -203,7 +217,7 @@ contract Instance is
|
|
|
203
217
|
create(toPolicyKey32(policyNftId), abi.encode(payout));
|
|
204
218
|
}
|
|
205
219
|
|
|
206
|
-
function
|
|
220
|
+
function updatePayout(NftId policyNftId, NumberId payoutId, IPolicy.PayoutInfo memory payout, StateId newState) external restricted() {
|
|
207
221
|
update(toPolicyKey32(policyNftId), abi.encode(payout), newState);
|
|
208
222
|
}
|
|
209
223
|
|
|
@@ -17,6 +17,7 @@ import {StateId} from "../types/StateId.sol";
|
|
|
17
17
|
|
|
18
18
|
import {IRegistry} from "../registry/IRegistry.sol";
|
|
19
19
|
import {IBundle} from "../instance/module/IBundle.sol";
|
|
20
|
+
import {IComponents} from "../instance/module/IComponents.sol";
|
|
20
21
|
import {IDistribution} from "../instance/module/IDistribution.sol";
|
|
21
22
|
import {IInstance} from "./IInstance.sol";
|
|
22
23
|
import {IKeyValueStore} from "../instance/base/IKeyValueStore.sol";
|
|
@@ -151,14 +152,14 @@ contract InstanceReader {
|
|
|
151
152
|
}
|
|
152
153
|
}
|
|
153
154
|
|
|
154
|
-
function
|
|
155
|
+
function getComponentInfo(NftId poolNftId)
|
|
155
156
|
public
|
|
156
157
|
view
|
|
157
|
-
returns (
|
|
158
|
+
returns (IComponents.ComponentInfo memory info)
|
|
158
159
|
{
|
|
159
160
|
bytes memory data = _store.getData(toPoolKey(poolNftId));
|
|
160
161
|
if (data.length > 0) {
|
|
161
|
-
return abi.decode(data, (
|
|
162
|
+
return abi.decode(data, (IComponents.ComponentInfo));
|
|
162
163
|
}
|
|
163
164
|
}
|
|
164
165
|
|
|
@@ -16,13 +16,16 @@ import {Service} from "../../contracts/shared/Service.sol";
|
|
|
16
16
|
import {IService} from "../shared/IService.sol";
|
|
17
17
|
import {NftId} from "../../contracts/types/NftId.sol";
|
|
18
18
|
import {RoleId} from "../types/RoleId.sol";
|
|
19
|
-
import {ADMIN_ROLE, DISTRIBUTION_OWNER_ROLE, POOL_OWNER_ROLE, PRODUCT_OWNER_ROLE, INSTANCE_SERVICE_ROLE, DISTRIBUTION_SERVICE_ROLE, POOL_SERVICE_ROLE, PRODUCT_SERVICE_ROLE, POLICY_SERVICE_ROLE, BUNDLE_SERVICE_ROLE} from "../types/RoleId.sol";
|
|
20
|
-
import {ObjectType, INSTANCE, BUNDLE, POLICY, PRODUCT, DISTRIBUTION, REGISTRY, POOL} from "../types/ObjectType.sol";
|
|
19
|
+
import {ADMIN_ROLE, DISTRIBUTION_OWNER_ROLE, POOL_OWNER_ROLE, PRODUCT_OWNER_ROLE, PUBLIC_ROLE, INSTANCE_SERVICE_ROLE, DISTRIBUTION_SERVICE_ROLE, POOL_SERVICE_ROLE, PRODUCT_SERVICE_ROLE, APPLICATION_SERVICE_ROLE, POLICY_SERVICE_ROLE, CLAIM_SERVICE_ROLE, BUNDLE_SERVICE_ROLE} from "../types/RoleId.sol";
|
|
20
|
+
import {ObjectType, INSTANCE, BUNDLE, APPLICATION, POLICY, CLAIM, PRODUCT, DISTRIBUTION, REGISTRY, POOL} from "../types/ObjectType.sol";
|
|
21
21
|
import {IDistributionComponent} from "../components/IDistributionComponent.sol";
|
|
22
22
|
import {IPoolComponent} from "../components/IPoolComponent.sol";
|
|
23
23
|
import {IProductComponent} from "../components/IProductComponent.sol";
|
|
24
24
|
|
|
25
|
-
contract InstanceService is
|
|
25
|
+
contract InstanceService is
|
|
26
|
+
Service,
|
|
27
|
+
IInstanceService
|
|
28
|
+
{
|
|
26
29
|
|
|
27
30
|
address internal _masterInstanceAccessManager;
|
|
28
31
|
address internal _masterInstance;
|
|
@@ -106,7 +109,9 @@ contract InstanceService is Service, IInstanceService {
|
|
|
106
109
|
_grantDistributionServiceAuthorizations(clonedAccessManager, clonedInstance);
|
|
107
110
|
_grantPoolServiceAuthorizations(clonedAccessManager, clonedInstance);
|
|
108
111
|
_grantProductServiceAuthorizations(clonedAccessManager, clonedInstance);
|
|
112
|
+
_grantApplicationServiceAuthorizations(clonedAccessManager, clonedInstance);
|
|
109
113
|
_grantPolicyServiceAuthorizations(clonedAccessManager, clonedInstance);
|
|
114
|
+
_grantClaimServiceAuthorizations(clonedAccessManager, clonedInstance);
|
|
110
115
|
_grantBundleServiceAuthorizations(clonedAccessManager, clonedInstance, clonedBundleManager);
|
|
111
116
|
_grantInstanceServiceAuthorizations(clonedAccessManager, clonedInstance);
|
|
112
117
|
}
|
|
@@ -119,7 +124,9 @@ contract InstanceService is Service, IInstanceService {
|
|
|
119
124
|
clonedAccessManager.createGifRole(DISTRIBUTION_SERVICE_ROLE(), "DistributionServiceRole");
|
|
120
125
|
clonedAccessManager.createGifRole(POOL_SERVICE_ROLE(), "PoolServiceRole");
|
|
121
126
|
clonedAccessManager.createGifRole(PRODUCT_SERVICE_ROLE(), "ProductServiceRole");
|
|
127
|
+
clonedAccessManager.createGifRole(APPLICATION_SERVICE_ROLE(), "ApplicationServiceRole");
|
|
122
128
|
clonedAccessManager.createGifRole(POLICY_SERVICE_ROLE(), "PolicyServiceRole");
|
|
129
|
+
clonedAccessManager.createGifRole(CLAIM_SERVICE_ROLE(), "ClaimServiceRole");
|
|
123
130
|
clonedAccessManager.createGifRole(BUNDLE_SERVICE_ROLE(), "BundleServiceRole");
|
|
124
131
|
clonedAccessManager.createGifRole(INSTANCE_SERVICE_ROLE(), "InstanceServiceRole");
|
|
125
132
|
}
|
|
@@ -182,27 +189,55 @@ contract InstanceService is Service, IInstanceService {
|
|
|
182
189
|
PRODUCT_SERVICE_ROLE());
|
|
183
190
|
}
|
|
184
191
|
|
|
192
|
+
function _grantApplicationServiceAuthorizations(InstanceAccessManager clonedAccessManager, Instance clonedInstance) internal {
|
|
193
|
+
// configure authorization for application services on instance
|
|
194
|
+
address applicationServiceAddress = getRegistry().getServiceAddress(APPLICATION(), getMajorVersion());
|
|
195
|
+
clonedAccessManager.grantRole(APPLICATION_SERVICE_ROLE(), applicationServiceAddress);
|
|
196
|
+
bytes4[] memory instanceApplicationServiceSelectors = new bytes4[](3);
|
|
197
|
+
instanceApplicationServiceSelectors[0] = clonedInstance.createApplication.selector;
|
|
198
|
+
instanceApplicationServiceSelectors[1] = clonedInstance.updateApplication.selector;
|
|
199
|
+
instanceApplicationServiceSelectors[2] = clonedInstance.updateApplicationState.selector;
|
|
200
|
+
clonedAccessManager.setTargetFunctionRole(
|
|
201
|
+
"Instance",
|
|
202
|
+
instanceApplicationServiceSelectors,
|
|
203
|
+
APPLICATION_SERVICE_ROLE());
|
|
204
|
+
}
|
|
205
|
+
|
|
185
206
|
function _grantPolicyServiceAuthorizations(InstanceAccessManager clonedAccessManager, Instance clonedInstance) internal {
|
|
186
|
-
// configure authorization for policy
|
|
207
|
+
// configure authorization for policy services on instance
|
|
187
208
|
address policyServiceAddress = getRegistry().getServiceAddress(POLICY(), getMajorVersion());
|
|
188
|
-
clonedAccessManager.grantRole(POLICY_SERVICE_ROLE(),
|
|
189
|
-
bytes4[] memory instancePolicyServiceSelectors = new bytes4[](
|
|
190
|
-
instancePolicyServiceSelectors[0] = clonedInstance.
|
|
191
|
-
instancePolicyServiceSelectors[1] = clonedInstance.
|
|
192
|
-
instancePolicyServiceSelectors[2] = clonedInstance.updatePolicyState.selector;
|
|
209
|
+
clonedAccessManager.grantRole(POLICY_SERVICE_ROLE(), policyServiceAddress);
|
|
210
|
+
bytes4[] memory instancePolicyServiceSelectors = new bytes4[](2);
|
|
211
|
+
instancePolicyServiceSelectors[0] = clonedInstance.updatePolicy.selector;
|
|
212
|
+
instancePolicyServiceSelectors[1] = clonedInstance.updatePolicyState.selector;
|
|
193
213
|
clonedAccessManager.setTargetFunctionRole(
|
|
194
214
|
"Instance",
|
|
195
215
|
instancePolicyServiceSelectors,
|
|
196
216
|
POLICY_SERVICE_ROLE());
|
|
197
217
|
}
|
|
198
218
|
|
|
219
|
+
function _grantClaimServiceAuthorizations(InstanceAccessManager clonedAccessManager, Instance clonedInstance) internal {
|
|
220
|
+
// configure authorization for claim/payout services on instance
|
|
221
|
+
address claimServiceAddress = getRegistry().getServiceAddress(CLAIM(), getMajorVersion());
|
|
222
|
+
clonedAccessManager.grantRole(POLICY_SERVICE_ROLE(), claimServiceAddress);
|
|
223
|
+
// TODO add claims function authz
|
|
224
|
+
bytes4[] memory instanceClaimServiceSelectors = new bytes4[](0);
|
|
225
|
+
// instanceClaimServiceSelectors[0] = clonedInstance.updatePolicy.selector;
|
|
226
|
+
// instanceClaimServiceSelectors[1] = clonedInstance.updatePolicyState.selector;
|
|
227
|
+
clonedAccessManager.setTargetFunctionRole(
|
|
228
|
+
"Instance",
|
|
229
|
+
instanceClaimServiceSelectors,
|
|
230
|
+
CLAIM_SERVICE_ROLE());
|
|
231
|
+
}
|
|
232
|
+
|
|
199
233
|
function _grantBundleServiceAuthorizations(InstanceAccessManager clonedAccessManager, Instance clonedInstance, BundleManager clonedBundleManager) internal {
|
|
200
234
|
// configure authorization for bundle service on instance
|
|
201
235
|
address bundleServiceAddress = getRegistry().getServiceAddress(BUNDLE(), getMajorVersion());
|
|
202
236
|
clonedAccessManager.grantRole(BUNDLE_SERVICE_ROLE(), address(bundleServiceAddress));
|
|
203
|
-
bytes4[] memory instanceBundleServiceSelectors = new bytes4[](
|
|
237
|
+
bytes4[] memory instanceBundleServiceSelectors = new bytes4[](3);
|
|
204
238
|
instanceBundleServiceSelectors[0] = clonedInstance.createBundle.selector;
|
|
205
239
|
instanceBundleServiceSelectors[1] = clonedInstance.updateBundle.selector;
|
|
240
|
+
instanceBundleServiceSelectors[2] = clonedInstance.updateBundleState.selector;
|
|
206
241
|
clonedAccessManager.setTargetFunctionRole(
|
|
207
242
|
"Instance",
|
|
208
243
|
instanceBundleServiceSelectors,
|
|
@@ -401,6 +436,20 @@ contract InstanceService is Service, IInstanceService {
|
|
|
401
436
|
bytes4[] memory fctSelectors2 = new bytes4[](1);
|
|
402
437
|
fctSelectors2[0] = IPoolComponent.verifyApplication.selector;
|
|
403
438
|
instanceAccessManager.setTargetFunctionRole(poolName, fctSelectors2, POLICY_SERVICE_ROLE());
|
|
439
|
+
|
|
440
|
+
// bundle owner specific functions
|
|
441
|
+
bytes4[] memory fctSelectors3 = new bytes4[](7);
|
|
442
|
+
fctSelectors3[0] = IPoolComponent.stake.selector;
|
|
443
|
+
fctSelectors3[1] = IPoolComponent.unstake.selector;
|
|
444
|
+
fctSelectors3[2] = IPoolComponent.extend.selector;
|
|
445
|
+
fctSelectors3[3] = IPoolComponent.lockBundle.selector;
|
|
446
|
+
fctSelectors3[4] = IPoolComponent.unlockBundle.selector;
|
|
447
|
+
fctSelectors3[5] = IPoolComponent.close.selector;
|
|
448
|
+
fctSelectors3[6] = IPoolComponent.setBundleFee.selector;
|
|
449
|
+
instanceAccessManager.setTargetFunctionRole(
|
|
450
|
+
poolName,
|
|
451
|
+
fctSelectors3,
|
|
452
|
+
IPoolComponent(poolAddress).getPoolInfo().bundleOwnerRole);
|
|
404
453
|
}
|
|
405
454
|
|
|
406
455
|
function grantProductDefaultPermissions(NftId instanceNftId, address productAddress, string memory productName) external onlyRegisteredService {
|
|
@@ -437,6 +486,5 @@ contract InstanceService is Service, IInstanceService {
|
|
|
437
486
|
InstanceAccessManager accessManager = InstanceAccessManager(instance.authority());
|
|
438
487
|
accessManager.setTargetClosed(targetName, locked);
|
|
439
488
|
}
|
|
440
|
-
|
|
441
489
|
}
|
|
442
490
|
|
|
@@ -17,7 +17,7 @@ contract InstanceServiceManager is ProxyManager {
|
|
|
17
17
|
constructor(
|
|
18
18
|
address registryAddress
|
|
19
19
|
)
|
|
20
|
-
ProxyManager()
|
|
20
|
+
ProxyManager(registryAddress)
|
|
21
21
|
{
|
|
22
22
|
InstanceService instSrv = new InstanceService();
|
|
23
23
|
// bytes memory initCode = type(InstanceService).creationCode;
|
|
@@ -88,7 +88,7 @@ contract KeyValueStore is Lifecycle, IKeyValueStore {
|
|
|
88
88
|
|
|
89
89
|
// create log entries
|
|
90
90
|
// solhint-disable avoid-tx-origin
|
|
91
|
-
emit LogStateUpdated(key32.toObjectType(), key32.toKeyId(),
|
|
91
|
+
emit LogStateUpdated(key32.toObjectType(), key32.toKeyId(), stateOld, state, updatedBy, tx.origin, lastUpdatedIn);
|
|
92
92
|
emit LogInfoUpdated(key32.toObjectType(), key32.toKeyId(), state, updatedBy, tx.origin, lastUpdatedIn);
|
|
93
93
|
// solhing-enable
|
|
94
94
|
}
|
|
@@ -134,6 +134,9 @@ contract KeyValueStore is Lifecycle, IKeyValueStore {
|
|
|
134
134
|
StateId stateOld = metadata.state;
|
|
135
135
|
require(stateOld.gtz(), "ERROR:KVS-041:NOT_EXISTING");
|
|
136
136
|
|
|
137
|
+
// ensure state transistion is valid
|
|
138
|
+
checkTransition(metadata.objectType, stateOld, state);
|
|
139
|
+
|
|
137
140
|
// update metadata (and state)
|
|
138
141
|
address updatedBy = msg.sender;
|
|
139
142
|
Blocknumber lastUpdatedIn = metadata.updatedIn;
|
|
@@ -143,7 +146,7 @@ contract KeyValueStore is Lifecycle, IKeyValueStore {
|
|
|
143
146
|
|
|
144
147
|
// create log entry
|
|
145
148
|
// solhint-disable-next-line avoid-tx-origin
|
|
146
|
-
emit LogStateUpdated(key32.toObjectType(), key32.toKeyId(),
|
|
149
|
+
emit LogStateUpdated(key32.toObjectType(), key32.toKeyId(), stateOld, state, updatedBy, tx.origin, lastUpdatedIn);
|
|
147
150
|
}
|
|
148
151
|
|
|
149
152
|
function exists(Key32 key32) public view returns (bool) {
|
|
@@ -1,19 +1,27 @@
|
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
|
2
2
|
pragma solidity ^0.8.20;
|
|
3
3
|
|
|
4
|
+
import {Initializable} from "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol";
|
|
5
|
+
|
|
4
6
|
import {NftId} from "../../types/NftId.sol";
|
|
5
7
|
import {ObjectType, COMPONENT, BUNDLE, POLICY, RISK} from "../../types/ObjectType.sol";
|
|
6
8
|
import {StateId, ACTIVE, PAUSED, ARCHIVED, CLOSED, APPLIED, UNDERWRITTEN, REVOKED, DECLINED} from "../../types/StateId.sol";
|
|
7
9
|
import {ILifecycle} from "./ILifecycle.sol";
|
|
8
10
|
|
|
9
|
-
contract Lifecycle is
|
|
11
|
+
contract Lifecycle is
|
|
12
|
+
Initializable,
|
|
13
|
+
ILifecycle
|
|
14
|
+
{
|
|
10
15
|
mapping(ObjectType objectType => StateId initialState)
|
|
11
16
|
private _initialState;
|
|
12
17
|
|
|
13
18
|
mapping(ObjectType objectType => mapping(StateId stateFrom => mapping(StateId stateTo => bool isValid)))
|
|
14
19
|
private _isValidTransition;
|
|
15
20
|
|
|
16
|
-
|
|
21
|
+
function initializeLifecycle()
|
|
22
|
+
public
|
|
23
|
+
onlyInitializing
|
|
24
|
+
{
|
|
17
25
|
_setupBundleLifecycle();
|
|
18
26
|
_setupComponentLifecycle();
|
|
19
27
|
_setupPolicyLifecycle();
|
|
@@ -78,6 +86,7 @@ contract Lifecycle is ILifecycle {
|
|
|
78
86
|
function _setupBundleLifecycle() internal {
|
|
79
87
|
_initialState[BUNDLE()] = ACTIVE();
|
|
80
88
|
_isValidTransition[BUNDLE()][ACTIVE()][PAUSED()] = true;
|
|
89
|
+
_isValidTransition[BUNDLE()][ACTIVE()][CLOSED()] = true;
|
|
81
90
|
_isValidTransition[BUNDLE()][PAUSED()][ACTIVE()] = true;
|
|
82
91
|
_isValidTransition[BUNDLE()][PAUSED()][CLOSED()] = true;
|
|
83
92
|
}
|
|
@@ -3,6 +3,7 @@ pragma solidity ^0.8.20;
|
|
|
3
3
|
|
|
4
4
|
import {NftId} from "../../types/NftId.sol";
|
|
5
5
|
import {Fee} from "../../types/Fee.sol";
|
|
6
|
+
import {Seconds} from "../../types/Seconds.sol";
|
|
6
7
|
import {Timestamp} from "../../types/Timestamp.sol";
|
|
7
8
|
|
|
8
9
|
interface IBundle {
|
|
@@ -13,7 +14,7 @@ interface IBundle {
|
|
|
13
14
|
uint256 capitalAmount; // net investment capital + net premiums - payouts
|
|
14
15
|
uint256 lockedAmount; // capital amount linked to collateralizaion of non-closed policies (<= balance)
|
|
15
16
|
uint256 balanceAmount; // total amount of funds: capitalAmount + fees (balance >= captial)
|
|
16
|
-
|
|
17
|
+
Seconds lifetime;
|
|
17
18
|
Timestamp expiredAt; // no new policies
|
|
18
19
|
Timestamp closedAt; // no open policies, locked amount = 0
|
|
19
20
|
}
|