@etherisc/gif-next 0.0.2-fe88ad7-208 → 0.0.2-ff8087d-237
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 -13
- package/artifacts/contracts/components/Component.sol/Component.dbg.json +4 -0
- package/artifacts/contracts/components/Component.sol/Component.json +873 -0
- package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/components/Distribution.sol/Distribution.json +903 -202
- package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +4 -0
- package/artifacts/contracts/components/{BaseComponent.sol/BaseComponent.json → IComponent.sol/IComponent.json} +237 -83
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +879 -31
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +879 -59
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +720 -16
- package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/components/Pool.sol/Pool.json +760 -195
- package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/components/Product.sol/Product.json +564 -141
- 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 +1474 -483
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +248 -218
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +1152 -794
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +462 -179
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +414 -267
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +482 -346
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +355 -91
- 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} +263 -164
- 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 +58 -75
- 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 +1124 -0
- package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.json +688 -0
- package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +641 -303
- package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +343 -79
- package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.json +1384 -0
- package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.json +752 -0
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +1434 -280
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +469 -73
- package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/{IComponentOwnerService.sol/IComponentOwnerService.json → IApplicationService.sol/IApplicationService.json} +342 -189
- package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.json +310 -249
- package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.json +743 -0
- package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +757 -144
- package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.json +262 -275
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +703 -125
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +71 -165
- package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +632 -344
- package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +367 -91
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +1119 -224
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +361 -73
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +297 -210
- package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +298 -78
- 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 +117 -5
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +99 -217
- 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 +131 -27
- package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +18 -18
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +205 -250
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +287 -81
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +81 -68
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +138 -50
- 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 +27 -29
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +189 -0
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +8 -34
- package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
- package/artifacts/contracts/{experiment/inheritance/IA.sol/ISharedA.json → shared/IRegistryLinked.sol/IRegistryLinked.json} +15 -17
- package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
- package/artifacts/contracts/shared/IService.sol/IService.json +71 -165
- 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 +107 -27
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +302 -0
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +283 -63
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +116 -51
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +71 -0
- package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
- package/artifacts/contracts/shared/Service.sol/Service.json +173 -153
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +24 -6
- 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 +116 -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 +191 -203
- 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 +281 -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 +179 -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 +74 -19
- 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 +209 -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 +38 -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 +272 -0
- package/contracts/components/Distribution.sol +204 -82
- package/contracts/components/IComponent.sol +90 -0
- package/contracts/components/IDistributionComponent.sol +44 -17
- package/contracts/components/IPoolComponent.sol +90 -42
- package/contracts/components/IProductComponent.sol +15 -9
- package/contracts/components/Pool.sol +217 -186
- package/contracts/components/Product.sol +246 -166
- package/contracts/instance/AccessManagerUpgradeableInitializeable.sol +2 -12
- package/contracts/instance/BundleManager.sol +17 -20
- package/contracts/instance/Cloneable.sol +7 -2
- package/contracts/instance/IInstance.sol +67 -25
- package/contracts/instance/IInstanceService.sol +34 -11
- package/contracts/instance/Instance.sol +158 -116
- package/contracts/instance/InstanceAccessManager.sol +389 -165
- package/contracts/instance/InstanceReader.sol +87 -36
- package/contracts/instance/InstanceService.sol +295 -161
- package/contracts/instance/InstanceServiceManager.sol +1 -1
- package/contracts/instance/ObjectManager.sol +10 -29
- package/contracts/instance/base/ComponentService.sol +130 -0
- package/contracts/instance/base/KeyValueStore.sol +13 -36
- package/contracts/instance/base/Lifecycle.sol +26 -6
- package/contracts/instance/module/IAccess.sol +22 -16
- package/contracts/instance/module/IBundle.sol +8 -5
- package/contracts/instance/module/IComponents.sol +41 -0
- package/contracts/instance/module/IDistribution.sol +3 -0
- package/contracts/instance/module/IPolicy.sol +43 -11
- package/contracts/instance/module/ISetup.sol +7 -20
- package/contracts/instance/service/ApplicationService.sol +356 -0
- package/contracts/instance/service/ApplicationServiceManager.sol +35 -0
- package/contracts/instance/service/BundleService.sol +244 -119
- package/contracts/instance/service/BundleServiceManager.sol +1 -1
- package/contracts/instance/service/ClaimService.sol +443 -0
- package/contracts/instance/service/ClaimServiceManager.sol +35 -0
- package/contracts/instance/service/DistributionService.sol +360 -41
- package/contracts/instance/service/DistributionServiceManager.sol +1 -1
- package/contracts/instance/service/IApplicationService.sol +79 -0
- package/contracts/instance/service/IBundleService.sol +93 -20
- package/contracts/instance/service/IClaimService.sol +90 -0
- package/contracts/instance/service/IDistributionService.sol +89 -0
- package/contracts/instance/service/IPolicyService.sol +44 -51
- package/contracts/instance/service/IPoolService.sol +97 -3
- package/contracts/instance/service/PolicyService.sol +233 -364
- package/contracts/instance/service/PolicyServiceManager.sol +2 -2
- package/contracts/instance/service/PoolService.sol +319 -40
- package/contracts/instance/service/PoolServiceManager.sol +1 -1
- package/contracts/instance/service/ProductService.sol +90 -50
- package/contracts/instance/service/ProductServiceManager.sol +2 -2
- package/contracts/registry/ChainNft.sol +8 -0
- package/contracts/registry/IRegistry.sol +18 -8
- package/contracts/registry/IRegistryService.sol +21 -13
- package/contracts/registry/ITransferInterceptor.sol +1 -0
- package/contracts/registry/Registry.sol +142 -71
- package/contracts/registry/RegistryAccessManager.sol +31 -25
- package/contracts/registry/RegistryService.sol +93 -134
- package/contracts/registry/RegistryServiceManager.sol +13 -13
- package/contracts/registry/ReleaseManager.sol +103 -127
- package/contracts/registry/TokenRegistry.sol +19 -13
- package/contracts/shared/ERC165.sol +14 -12
- package/contracts/shared/INftOwnable.sol +11 -10
- package/contracts/shared/IPolicyHolder.sol +40 -0
- package/contracts/shared/IRegisterable.sol +4 -6
- package/contracts/shared/IRegistryLinked.sol +11 -0
- package/contracts/shared/IService.sol +6 -4
- package/contracts/shared/IVersionable.sol +4 -47
- package/contracts/shared/NftOwnable.sol +64 -80
- package/contracts/shared/PolicyHolder.sol +94 -0
- package/contracts/shared/ProxyManager.sol +100 -25
- package/contracts/shared/Registerable.sol +24 -39
- package/contracts/shared/RegistryLinked.sol +43 -0
- package/contracts/shared/Service.sol +36 -22
- package/contracts/shared/TokenHandler.sol +14 -6
- package/contracts/shared/Versionable.sol +4 -92
- package/contracts/test/TestRegisterable.sol +1 -1
- package/contracts/test/TestService.sol +1 -1
- package/contracts/types/Amount.sol +109 -0
- package/contracts/types/Blocknumber.sol +1 -0
- package/contracts/types/ClaimId.sol +75 -0
- package/contracts/types/DistributorType.sol +2 -2
- package/contracts/types/Fee.sol +17 -8
- package/contracts/types/NftId.sol +8 -0
- package/contracts/types/ObjectType.sol +11 -6
- package/contracts/types/PayoutId.sol +82 -0
- package/contracts/types/Referral.sol +4 -0
- package/contracts/types/RoleId.sol +18 -11
- package/contracts/types/Seconds.sol +54 -0
- package/contracts/types/StateId.sol +7 -2
- package/contracts/types/Timestamp.sol +18 -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 -397
- 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/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/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 -814
- 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 -159
- package/contracts/components/IBaseComponent.sol +0 -34
- 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/IInstanceBase.sol +0 -26
- package/contracts/instance/InstanceBase.sol +0 -41
- package/contracts/instance/base/ComponentServiceBase.sol +0 -82
- package/contracts/instance/base/IInstanceBase.sol +0 -23
- package/contracts/instance/service/ComponentOwnerService.sol +0 -315
- package/contracts/instance/service/IComponentOwnerService.sol +0 -20
- package/contracts/shared/RegisterableUpgradable.sol +0 -16
@@ -3,122 +3,110 @@ pragma solidity ^0.8.19;
|
|
3
3
|
|
4
4
|
import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
|
5
5
|
|
6
|
+
import {Amount, AmountLib} from "../types/Amount.sol";
|
7
|
+
import {ClaimId} from "../types/ClaimId.sol";
|
8
|
+
import {Component} from "./Component.sol";
|
9
|
+
import {Fee} from "../types/Fee.sol";
|
6
10
|
import {IRisk} from "../instance/module/IRisk.sol";
|
7
|
-
import {
|
8
|
-
import {IProductService} from "../instance/service/IProductService.sol";
|
11
|
+
import {IApplicationService} from "../instance/service/IApplicationService.sol";
|
9
12
|
import {IPolicyService} from "../instance/service/IPolicyService.sol";
|
13
|
+
import {IProductService} from "../instance/service/IProductService.sol";
|
14
|
+
import {IClaimService} from "../instance/service/IClaimService.sol";
|
10
15
|
import {IProductComponent} from "./IProductComponent.sol";
|
11
|
-
import {NftId,
|
12
|
-
import {
|
16
|
+
import {NftId, NftIdLib} from "../types/NftId.sol";
|
17
|
+
import {PayoutId} from "../types/PayoutId.sol";
|
18
|
+
import {PRODUCT, APPLICATION, POLICY, CLAIM } from "../types/ObjectType.sol";
|
13
19
|
import {ReferralId} from "../types/Referral.sol";
|
14
20
|
import {RiskId, RiskIdLib} from "../types/RiskId.sol";
|
21
|
+
import {Seconds} from "../types/Seconds.sol";
|
15
22
|
import {StateId} from "../types/StateId.sol";
|
16
23
|
import {Timestamp} from "../types/Timestamp.sol";
|
17
|
-
import {Fee, FeeLib} from "../types/Fee.sol";
|
18
|
-
import {BaseComponent} from "./BaseComponent.sol";
|
19
24
|
|
20
|
-
import {IRegistry} from "../registry/IRegistry.sol";
|
21
|
-
import {IRegisterable} from "../shared/IRegisterable.sol";
|
22
|
-
import {Registerable} from "../shared/Registerable.sol";
|
23
25
|
import {TokenHandler} from "../shared/TokenHandler.sol";
|
24
26
|
|
25
27
|
import {InstanceReader} from "../instance/InstanceReader.sol";
|
28
|
+
import {IPolicy} from "../instance/module/IPolicy.sol";
|
26
29
|
import {ISetup} from "../instance/module/ISetup.sol";
|
30
|
+
import {IComponents} from "../instance/module/IComponents.sol";
|
27
31
|
import {Pool} from "../components/Pool.sol";
|
28
32
|
import {Distribution} from "../components/Distribution.sol";
|
29
33
|
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
34
|
+
abstract contract Product is
|
35
|
+
Component,
|
36
|
+
IProductComponent
|
37
|
+
{
|
38
|
+
// keccak256(abi.encode(uint256(keccak256("etherisc.storage.Product")) - 1)) & ~bytes32(uint256(0xff));
|
39
|
+
bytes32 public constant PRODUCT_STORAGE_LOCATION_V1 = 0x0bb7aafdb8e380f81267337bc5b5dfdf76e6d3a380ecadb51ec665246d9d6800;
|
40
|
+
|
41
|
+
struct ProductStorage {
|
42
|
+
IProductService _productService;
|
43
|
+
IApplicationService _applicationService;
|
44
|
+
IPolicyService _policyService;
|
45
|
+
IClaimService _claimService;
|
46
|
+
Pool _pool;
|
47
|
+
Distribution _distribution;
|
48
|
+
Fee _initialProductFee;
|
49
|
+
Fee _initialProcessingFee;
|
50
|
+
TokenHandler _tokenHandler;
|
51
|
+
NftId _poolNftId;
|
52
|
+
NftId _distributionNftId;
|
53
|
+
}
|
45
54
|
|
46
|
-
|
55
|
+
function initializeProduct(
|
47
56
|
address registry,
|
48
|
-
NftId
|
57
|
+
NftId instanceNftId,
|
58
|
+
string memory name,
|
49
59
|
address token,
|
50
60
|
bool isInterceptor,
|
51
61
|
address pool,
|
52
62
|
address distribution,
|
53
63
|
Fee memory productFee,
|
54
64
|
Fee memory processingFee,
|
55
|
-
address initialOwner
|
56
|
-
|
57
|
-
// TODO add validation
|
58
|
-
_productService = _instance.getProductService();
|
59
|
-
_policyService = _instance.getPolicyService();
|
60
|
-
_pool = Pool(pool);
|
61
|
-
_distribution = Distribution(distribution);
|
62
|
-
_initialProductFee = productFee;
|
63
|
-
_initialProcessingFee = processingFee;
|
64
|
-
|
65
|
-
_tokenHandler = new TokenHandler(token);
|
66
|
-
|
67
|
-
_poolNftId = getRegistry().getNftId(address(_pool));
|
68
|
-
_distributionNftId = getRegistry().getNftId(address(_distribution));
|
69
|
-
|
70
|
-
_registerInterface(type(IProductComponent).interfaceId);
|
71
|
-
}
|
72
|
-
|
73
|
-
|
74
|
-
function calculatePremium(
|
75
|
-
uint256 sumInsuredAmount,
|
76
|
-
RiskId riskId,
|
77
|
-
uint256 lifetime,
|
78
|
-
bytes memory applicationData,
|
79
|
-
ReferralId referralId,
|
80
|
-
NftId bundleNftId
|
65
|
+
address initialOwner,
|
66
|
+
bytes memory registryData // writeonly data that will saved in the object info record of the registry
|
81
67
|
)
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
returns (uint256 premiumAmount)
|
68
|
+
public
|
69
|
+
virtual
|
70
|
+
onlyInitializing()
|
86
71
|
{
|
87
|
-
(
|
88
|
-
riskId,
|
89
|
-
sumInsuredAmount,
|
90
|
-
lifetime,
|
91
|
-
applicationData,
|
92
|
-
bundleNftId,
|
93
|
-
referralId
|
94
|
-
);
|
95
|
-
}
|
72
|
+
initializeComponent(registry, instanceNftId, name, token, PRODUCT(), isInterceptor, initialOwner, registryData);
|
96
73
|
|
74
|
+
ProductStorage storage $ = _getProductStorage();
|
75
|
+
// TODO add validation
|
76
|
+
// TODO refactor to go via registry ?
|
77
|
+
$._productService = IProductService(_getServiceAddress(PRODUCT()));
|
78
|
+
$._applicationService = IApplicationService(_getServiceAddress(APPLICATION()));
|
79
|
+
$._policyService = IPolicyService(_getServiceAddress(POLICY()));
|
80
|
+
$._claimService = IClaimService(_getServiceAddress(CLAIM()));
|
81
|
+
$._pool = Pool(pool);
|
82
|
+
$._distribution = Distribution(distribution);
|
83
|
+
$._initialProductFee = productFee;
|
84
|
+
$._initialProcessingFee = processingFee;
|
85
|
+
$._tokenHandler = new TokenHandler(token);
|
86
|
+
$._poolNftId = getRegistry().getNftId(pool);
|
87
|
+
$._distributionNftId = getRegistry().getNftId(distribution);
|
88
|
+
|
89
|
+
registerInterface(type(IProductComponent).interfaceId);
|
90
|
+
}
|
97
91
|
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
bytes memory applicationData
|
92
|
+
// from product component
|
93
|
+
function setFees(
|
94
|
+
Fee memory productFee,
|
95
|
+
Fee memory processingFee
|
103
96
|
)
|
104
97
|
external
|
105
|
-
|
106
|
-
|
107
|
-
|
98
|
+
onlyOwner
|
99
|
+
restricted()
|
100
|
+
override
|
108
101
|
{
|
109
|
-
|
110
|
-
return sumInsuredAmount / 10;
|
111
|
-
}
|
112
|
-
|
113
|
-
function _toRiskId(string memory riskName) internal pure returns (RiskId riskId) {
|
114
|
-
return RiskIdLib.toRiskId(riskName);
|
102
|
+
_getProductService().setFees(productFee, processingFee);
|
115
103
|
}
|
116
104
|
|
117
105
|
function _createRisk(
|
118
106
|
RiskId id,
|
119
107
|
bytes memory data
|
120
108
|
) internal {
|
121
|
-
|
109
|
+
_getProductService().createRisk(
|
122
110
|
id,
|
123
111
|
data
|
124
112
|
);
|
@@ -128,7 +116,7 @@ abstract contract Product is BaseComponent, IProductComponent {
|
|
128
116
|
RiskId id,
|
129
117
|
bytes memory data
|
130
118
|
) internal {
|
131
|
-
|
119
|
+
_getProductService().updateRisk(
|
132
120
|
id,
|
133
121
|
data
|
134
122
|
);
|
@@ -138,44 +126,47 @@ abstract contract Product is BaseComponent, IProductComponent {
|
|
138
126
|
RiskId id,
|
139
127
|
StateId state
|
140
128
|
) internal {
|
141
|
-
|
129
|
+
_getProductService().updateRiskState(
|
142
130
|
id,
|
143
131
|
state
|
144
132
|
);
|
145
133
|
}
|
146
134
|
|
147
135
|
function _getRiskInfo(RiskId id) internal view returns (IRisk.RiskInfo memory info) {
|
148
|
-
return
|
136
|
+
return getInstance().getInstanceReader().getRiskInfo(id);
|
149
137
|
}
|
150
138
|
|
151
139
|
function _createApplication(
|
152
140
|
address applicationOwner,
|
153
141
|
RiskId riskId,
|
154
|
-
|
155
|
-
|
156
|
-
bytes memory applicationData,
|
142
|
+
Amount sumInsuredAmount,
|
143
|
+
Seconds lifetime,
|
157
144
|
NftId bundleNftId,
|
158
|
-
ReferralId referralId
|
159
|
-
|
160
|
-
|
145
|
+
ReferralId referralId,
|
146
|
+
bytes memory applicationData
|
147
|
+
)
|
148
|
+
internal
|
149
|
+
returns (NftId applicationNftId)
|
150
|
+
{
|
151
|
+
return _getProductStorage()._applicationService.create(
|
161
152
|
applicationOwner,
|
162
153
|
riskId,
|
163
154
|
sumInsuredAmount,
|
164
155
|
lifetime,
|
165
|
-
applicationData,
|
166
156
|
bundleNftId,
|
167
|
-
referralId
|
157
|
+
referralId,
|
158
|
+
applicationData
|
168
159
|
);
|
169
160
|
}
|
170
161
|
|
171
|
-
function
|
162
|
+
function _collateralize(
|
172
163
|
NftId policyNftId,
|
173
164
|
bool requirePremiumPayment,
|
174
165
|
Timestamp activateAt
|
175
166
|
)
|
176
167
|
internal
|
177
168
|
{
|
178
|
-
_policyService.
|
169
|
+
_getProductStorage()._policyService.collateralize(
|
179
170
|
policyNftId,
|
180
171
|
requirePremiumPayment,
|
181
172
|
activateAt);
|
@@ -187,7 +178,7 @@ abstract contract Product is BaseComponent, IProductComponent {
|
|
187
178
|
)
|
188
179
|
internal
|
189
180
|
{
|
190
|
-
_policyService.collectPremium(
|
181
|
+
_getProductStorage()._policyService.collectPremium(
|
191
182
|
policyNftId,
|
192
183
|
activateAt);
|
193
184
|
}
|
@@ -198,95 +189,184 @@ abstract contract Product is BaseComponent, IProductComponent {
|
|
198
189
|
)
|
199
190
|
internal
|
200
191
|
{
|
201
|
-
_policyService.activate(
|
192
|
+
_getProductStorage()._policyService.activate(
|
202
193
|
policyNftId,
|
203
194
|
activateAt);
|
204
195
|
}
|
205
196
|
|
206
|
-
function
|
207
|
-
|
197
|
+
function _close(
|
198
|
+
NftId policyNftId
|
199
|
+
)
|
200
|
+
internal
|
201
|
+
{
|
202
|
+
_getProductStorage()._policyService.close(
|
203
|
+
policyNftId);
|
208
204
|
}
|
209
205
|
|
210
|
-
function
|
211
|
-
|
206
|
+
function _submitClaim(
|
207
|
+
NftId policyNftId,
|
208
|
+
Amount claimAmount,
|
209
|
+
bytes memory claimData
|
210
|
+
)
|
211
|
+
internal
|
212
|
+
returns(ClaimId)
|
213
|
+
{
|
214
|
+
return _getProductStorage()._claimService.submit(
|
215
|
+
policyNftId,
|
216
|
+
claimAmount,
|
217
|
+
claimData);
|
212
218
|
}
|
213
219
|
|
214
|
-
|
215
|
-
|
216
|
-
|
217
|
-
|
220
|
+
function _confirmClaim(
|
221
|
+
NftId policyNftId,
|
222
|
+
ClaimId claimId,
|
223
|
+
Amount confirmedAmount
|
218
224
|
)
|
219
|
-
|
220
|
-
onlyOwner
|
221
|
-
override
|
225
|
+
internal
|
222
226
|
{
|
223
|
-
|
227
|
+
_getProductStorage()._claimService.confirm(
|
228
|
+
policyNftId,
|
229
|
+
claimId,
|
230
|
+
confirmedAmount);
|
224
231
|
}
|
225
232
|
|
226
|
-
function
|
227
|
-
|
228
|
-
|
233
|
+
function _declineClaim(
|
234
|
+
NftId policyNftId,
|
235
|
+
ClaimId claimId
|
236
|
+
)
|
237
|
+
internal
|
238
|
+
{
|
239
|
+
_getProductStorage()._claimService.decline(
|
240
|
+
policyNftId,
|
241
|
+
claimId);
|
229
242
|
}
|
230
243
|
|
231
|
-
|
244
|
+
function _closeClaim(
|
245
|
+
NftId policyNftId,
|
246
|
+
ClaimId claimId
|
247
|
+
)
|
248
|
+
internal
|
249
|
+
{
|
250
|
+
_getProductStorage()._claimService.close(
|
251
|
+
policyNftId,
|
252
|
+
claimId);
|
253
|
+
}
|
232
254
|
|
233
|
-
function
|
234
|
-
|
255
|
+
function _createPayout(
|
256
|
+
NftId policyNftId,
|
257
|
+
ClaimId claimId,
|
258
|
+
Amount amount,
|
259
|
+
bytes memory data
|
260
|
+
)
|
261
|
+
internal
|
262
|
+
returns (PayoutId)
|
263
|
+
{
|
264
|
+
return _getProductStorage()._claimService.createPayout(
|
265
|
+
policyNftId,
|
266
|
+
claimId,
|
267
|
+
amount,
|
268
|
+
data);
|
269
|
+
}
|
270
|
+
|
271
|
+
function _processPayout(
|
272
|
+
NftId policyNftId,
|
273
|
+
PayoutId payoutId
|
274
|
+
)
|
275
|
+
internal
|
276
|
+
{
|
277
|
+
_getProductStorage()._claimService.processPayout(
|
278
|
+
policyNftId,
|
279
|
+
payoutId);
|
280
|
+
}
|
281
|
+
|
282
|
+
function calculatePremium(
|
283
|
+
Amount sumInsuredAmount,
|
284
|
+
RiskId riskId,
|
285
|
+
Seconds lifetime,
|
286
|
+
bytes memory applicationData,
|
287
|
+
NftId bundleNftId,
|
288
|
+
ReferralId referralId
|
289
|
+
)
|
290
|
+
external
|
235
291
|
view
|
236
|
-
override
|
237
|
-
returns (
|
292
|
+
override
|
293
|
+
returns (Amount premiumAmount)
|
238
294
|
{
|
239
|
-
|
240
|
-
|
241
|
-
|
242
|
-
|
243
|
-
|
244
|
-
|
245
|
-
|
246
|
-
|
247
|
-
|
248
|
-
|
249
|
-
|
250
|
-
|
251
|
-
|
252
|
-
|
253
|
-
|
254
|
-
|
255
|
-
|
256
|
-
|
257
|
-
|
258
|
-
|
259
|
-
|
260
|
-
|
261
|
-
|
262
|
-
|
263
|
-
|
264
|
-
|
265
|
-
|
266
|
-
|
267
|
-
|
268
|
-
(
|
269
|
-
|
270
|
-
|
271
|
-
|
272
|
-
return (
|
273
|
-
|
274
|
-
|
275
|
-
|
276
|
-
|
277
|
-
|
278
|
-
|
279
|
-
|
280
|
-
|
281
|
-
|
282
|
-
|
283
|
-
|
284
|
-
|
285
|
-
|
286
|
-
|
287
|
-
|
288
|
-
|
289
|
-
|
295
|
+
IPolicy.Premium memory premium = _getProductStorage()._applicationService.calculatePremium(
|
296
|
+
getNftId(),
|
297
|
+
riskId,
|
298
|
+
sumInsuredAmount,
|
299
|
+
lifetime,
|
300
|
+
applicationData,
|
301
|
+
bundleNftId,
|
302
|
+
referralId
|
303
|
+
);
|
304
|
+
|
305
|
+
return AmountLib.toAmount(premium.premiumAmount);
|
306
|
+
}
|
307
|
+
|
308
|
+
function calculateNetPremium(
|
309
|
+
Amount sumInsuredAmount,
|
310
|
+
RiskId riskId,
|
311
|
+
Seconds lifetime,
|
312
|
+
bytes memory applicationData
|
313
|
+
)
|
314
|
+
external
|
315
|
+
view
|
316
|
+
virtual override
|
317
|
+
returns (Amount netPremiumAmount)
|
318
|
+
{
|
319
|
+
// default 10% of sum insured
|
320
|
+
return AmountLib.toAmount(sumInsuredAmount.toInt() / 10);
|
321
|
+
}
|
322
|
+
|
323
|
+
function _toRiskId(string memory riskName) internal pure returns (RiskId riskId) {
|
324
|
+
return RiskIdLib.toRiskId(riskName);
|
325
|
+
}
|
326
|
+
|
327
|
+
function getPoolNftId() external view override returns (NftId poolNftId) {
|
328
|
+
return getRegistry().getNftId(address(_getProductStorage()._pool));
|
329
|
+
}
|
330
|
+
|
331
|
+
function getDistributionNftId() external view override returns (NftId distributionNftId) {
|
332
|
+
return getRegistry().getNftId(address(_getProductStorage()._distribution));
|
333
|
+
}
|
334
|
+
|
335
|
+
function getSetupInfo() public view returns (ISetup.ProductSetupInfo memory setupInfo) {
|
336
|
+
InstanceReader reader = getInstance().getInstanceReader();
|
337
|
+
setupInfo = reader.getProductSetupInfo(getNftId());
|
338
|
+
|
339
|
+
// fallback to initial setup info (wallet is always != address(0))
|
340
|
+
if(setupInfo.wallet == address(0)) {
|
341
|
+
setupInfo = _getInitialSetupInfo();
|
342
|
+
}
|
343
|
+
}
|
344
|
+
|
345
|
+
function _getInitialSetupInfo() internal view returns (ISetup.ProductSetupInfo memory setupInfo) {
|
346
|
+
ProductStorage storage $ = _getProductStorage();
|
347
|
+
|
348
|
+
ISetup.DistributionSetupInfo memory distributionSetupInfo = $._distribution.getSetupInfo();
|
349
|
+
IComponents.PoolInfo memory poolInfo = $._pool.getPoolInfo();
|
350
|
+
|
351
|
+
return ISetup.ProductSetupInfo(
|
352
|
+
getToken(),
|
353
|
+
$._tokenHandler,
|
354
|
+
$._distributionNftId,
|
355
|
+
$._poolNftId,
|
356
|
+
$._initialProductFee,
|
357
|
+
$._initialProcessingFee,
|
358
|
+
false,
|
359
|
+
getWallet()
|
290
360
|
);
|
291
361
|
}
|
362
|
+
|
363
|
+
function _getProductStorage() private pure returns (ProductStorage storage $) {
|
364
|
+
assembly {
|
365
|
+
$.slot := PRODUCT_STORAGE_LOCATION_V1
|
366
|
+
}
|
367
|
+
}
|
368
|
+
|
369
|
+
function _getProductService() internal view returns (IProductService) {
|
370
|
+
return _getProductStorage()._productService;
|
371
|
+
}
|
292
372
|
}
|
@@ -6,18 +6,8 @@ import {AccessManagerUpgradeable} from "@openzeppelin/contracts-upgradeable/acce
|
|
6
6
|
|
7
7
|
contract AccessManagerUpgradeableInitializeable is AccessManagerUpgradeable {
|
8
8
|
|
9
|
-
|
10
|
-
|
11
|
-
function __AccessManagerUpgradeableInitializeable_init(address initialAdmin) public {
|
12
|
-
require(!_initialized, "AccessManager: already initialized");
|
13
|
-
|
14
|
-
if (initialAdmin == address(0)) {
|
15
|
-
revert AccessManagerInvalidInitialAdmin(address(0));
|
16
|
-
}
|
17
|
-
|
18
|
-
// admin is active immediately and without any execution delay.
|
19
|
-
_grantRole(ADMIN_ROLE, initialAdmin, 0, 0);
|
20
|
-
_initialized = true;
|
9
|
+
function initialize(address initialAdmin) initializer public {
|
10
|
+
__AccessManager_init(initialAdmin);
|
21
11
|
}
|
22
12
|
|
23
13
|
}
|
@@ -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,21 +33,16 @@ contract BundleManager is
|
|
32
33
|
|
33
34
|
mapping(NftId bundleNftId => LibNftIdSet.Set policies) internal _activePolicies;
|
34
35
|
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
/// @dev links a policy with its bundle
|
40
|
-
// to link a policy it MUST NOT yet have been activated
|
41
|
-
// the bundle MUST be unlocked (active) for linking (underwriting) and registered with this instance
|
36
|
+
/// @dev links a policy to its bundle
|
37
|
+
// to link a policy it MUST NOT yet have been linked
|
42
38
|
function linkPolicy(NftId policyNftId) external restricted() {
|
43
|
-
NftId bundleNftId =
|
39
|
+
NftId bundleNftId = _instance.getInstanceReader().getPolicyInfo(policyNftId).bundleNftId;
|
44
40
|
// decision will likely depend on the decision what to check here and what in the service
|
45
|
-
NftId poolNftId =
|
41
|
+
NftId poolNftId = _instance.getInstanceReader().getBundleInfo(bundleNftId).poolNftId;
|
46
42
|
|
47
43
|
// ensure bundle is unlocked (in active set) and registered with this instance
|
48
44
|
if (!_isActive(poolNftId, bundleNftId)) {
|
49
|
-
revert
|
45
|
+
revert ErrorBundleManagerBundleLocked(bundleNftId, policyNftId);
|
50
46
|
}
|
51
47
|
|
52
48
|
LibNftIdSet.add(_activePolicies[bundleNftId], policyNftId);
|
@@ -59,11 +55,11 @@ contract BundleManager is
|
|
59
55
|
// - the policy MUST be past its expiry period and it MUST NOT have any open claims
|
60
56
|
// - the policy's payoutAmount MUST be equal to its sumInsuredAmount and MUST NOT have any open claims
|
61
57
|
function unlinkPolicy(NftId policyNftId) external restricted() {
|
62
|
-
IPolicy.PolicyInfo memory policyInfo =
|
58
|
+
IPolicy.PolicyInfo memory policyInfo = _instance.getInstanceReader().getPolicyInfo(policyNftId);
|
63
59
|
|
64
60
|
NftId bundleNftId = policyInfo.bundleNftId;
|
65
61
|
// decision will likely depend on the decision what to check here and what in the service
|
66
|
-
NftId poolNftId =
|
62
|
+
NftId poolNftId = _instance.getInstanceReader().getBundleInfo(bundleNftId).poolNftId;
|
67
63
|
|
68
64
|
// ensure bundle is registered with this instance
|
69
65
|
if (!_contains(poolNftId, bundleNftId)) {
|
@@ -75,10 +71,10 @@ contract BundleManager is
|
|
75
71
|
}
|
76
72
|
|
77
73
|
|
78
|
-
/// @dev add a new bundle to a
|
74
|
+
/// @dev add a new bundle to a pool registerd with this instance
|
79
75
|
// the corresponding pool is fetched via instance reader
|
80
76
|
function add(NftId bundleNftId) external restricted() {
|
81
|
-
NftId poolNftId =
|
77
|
+
NftId poolNftId = _instance.getInstanceReader().getBundleInfo(bundleNftId).poolNftId;
|
82
78
|
|
83
79
|
// ensure pool is registered with instance
|
84
80
|
if(poolNftId.eqz()) {
|
@@ -89,16 +85,17 @@ contract BundleManager is
|
|
89
85
|
emit LogBundleManagerBundleAdded(poolNftId, bundleNftId);
|
90
86
|
}
|
91
87
|
|
92
|
-
|
88
|
+
|
89
|
+
/// @dev unlocked (active) bundles are available to collateralize new policies
|
93
90
|
function unlock(NftId bundleNftId) external restricted() {
|
94
|
-
NftId poolNftId =
|
91
|
+
NftId poolNftId = _instance.getInstanceReader().getBundleInfo(bundleNftId).poolNftId;
|
95
92
|
_activate(poolNftId, bundleNftId);
|
96
93
|
emit LogBundleManagerBundleUnlocked(poolNftId, bundleNftId);
|
97
94
|
}
|
98
95
|
|
99
|
-
/// @dev locked (deactivated) bundles may not
|
96
|
+
/// @dev locked (deactivated) bundles may not collateralize any new policies
|
100
97
|
function lock(NftId bundleNftId) external restricted() {
|
101
|
-
NftId poolNftId =
|
98
|
+
NftId poolNftId = _instance.getInstanceReader().getBundleInfo(bundleNftId).poolNftId;
|
102
99
|
_deactivate(poolNftId, bundleNftId);
|
103
100
|
emit LogBundleManagerBundleLocked(poolNftId, bundleNftId);
|
104
101
|
}
|
@@ -10,7 +10,8 @@ abstract contract Cloneable is
|
|
10
10
|
AccessManagedUpgradeable
|
11
11
|
{
|
12
12
|
event CloneableInitialized(address authority, address registry);
|
13
|
-
|
13
|
+
|
14
|
+
error CloneableAuthorityZero();
|
14
15
|
error CloneableRegistryInvalid(address registry);
|
15
16
|
|
16
17
|
IRegistry internal _registry;
|
@@ -25,9 +26,13 @@ abstract contract Cloneable is
|
|
25
26
|
address registry
|
26
27
|
)
|
27
28
|
public
|
28
|
-
|
29
|
+
onlyInitializing
|
29
30
|
{
|
30
31
|
// check/handle access managed
|
32
|
+
if(authority == address(0)) {
|
33
|
+
revert CloneableAuthorityZero();
|
34
|
+
}
|
35
|
+
|
31
36
|
__AccessManaged_init(authority);
|
32
37
|
|
33
38
|
// check/handle registry
|