@etherisc/gif-next 0.0.2-d02cb80-460 → 0.0.2-d086e6d-456
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +78 -1
- package/artifacts/contracts/components/Component.sol/Component.dbg.json +4 -0
- package/artifacts/contracts/components/Component.sol/Component.json +842 -0
- package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/components/Distribution.sol/Distribution.json +853 -296
- package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +4 -0
- package/artifacts/contracts/components/{BaseComponent.sol/BaseComponent.json → IComponent.sol/IComponent.json} +225 -89
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +848 -31
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +846 -57
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +682 -9
- package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/components/Pool.sol/Pool.json +725 -316
- package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/components/Product.sol/Product.json +524 -240
- package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +1 -1
- package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +15 -15
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +1 -1
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +69 -79
- package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +1 -1
- package/artifacts/contracts/instance/Cloneable.sol/Cloneable.json +5 -0
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +1038 -395
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +290 -220
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +1038 -784
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +432 -186
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +137 -270
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +448 -418
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +303 -138
- package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +1 -1
- package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +11 -40
- package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.dbg.json +4 -0
- package/artifacts/contracts/instance/base/{ComponentServiceBase.sol/ComponentServiceBase.json → ComponentService.sol/ComponentService.json} +278 -157
- package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +1 -1
- package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +40 -10
- package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +1 -1
- package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +36 -11
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +61 -67
- package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
- package/artifacts/contracts/instance/module/IComponents.sol/IComponents.json +10 -0
- package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
- package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +1 -1
- package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.json +1058 -0
- package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.json +665 -0
- package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +625 -290
- package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +356 -79
- package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.json +844 -0
- package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.json +637 -0
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +1385 -247
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +450 -73
- package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.json +646 -0
- package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.json +278 -264
- package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/{IComponentOwnerService.sol/IComponentOwnerService.json → IClaimService.sol/IClaimService.json} +227 -194
- package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +791 -134
- package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.json +216 -250
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +502 -133
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +95 -157
- package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +474 -347
- package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +321 -96
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +801 -255
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +307 -78
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +308 -209
- package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +305 -76
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +15 -2
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +244 -133
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +158 -215
- package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
- package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +18 -0
- package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
- package/artifacts/contracts/registry/Registry.sol/Registry.json +257 -235
- package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +4 -0
- package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +285 -0
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +202 -318
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +298 -145
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +4 -0
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +547 -0
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +141 -53
- package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +1 -1
- package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
- package/artifacts/contracts/shared/ERC165.sol/ERC165.json +41 -3
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +40 -29
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +129 -0
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +21 -34
- package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
- package/artifacts/contracts/{experiment/inheritance/IB.sol/IB.json → shared/IRegistryLinked.sol/IRegistryLinked.json} +18 -20
- package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
- package/artifacts/contracts/shared/IService.sol/IService.json +95 -157
- package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
- package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +2 -152
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +120 -27
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +248 -0
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +294 -61
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +129 -51
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +84 -0
- package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
- package/artifacts/contracts/shared/Service.sol/Service.json +195 -148
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +2 -2
- package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
- package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +2 -2
- package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
- package/artifacts/contracts/shared/Versionable.sol/Versionable.json +2 -152
- package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +1 -1
- package/artifacts/contracts/test/TestFee.sol/TestFee.json +2 -2
- package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +1 -1
- package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +129 -51
- package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +1 -1
- package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +6 -6
- package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +1 -1
- package/artifacts/contracts/test/TestService.sol/TestService.json +213 -202
- package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +1 -1
- package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +1 -1
- package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +2 -2
- package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +1 -1
- package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +8 -190
- package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +1 -1
- package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +1 -1
- package/artifacts/contracts/types/Amount.sol/AmountLib.dbg.json +4 -0
- package/artifacts/contracts/types/Amount.sol/AmountLib.json +161 -0
- package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
- package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +2 -2
- package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
- package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.json +100 -0
- package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
- package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +2 -2
- package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +1 -1
- package/artifacts/contracts/types/Fee.sol/FeeLib.json +40 -9
- package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +1 -1
- package/artifacts/contracts/types/Key32.sol/Key32Lib.json +2 -2
- package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/NftId.sol/NftIdLib.json +17 -4
- package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
- package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +2 -2
- package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
- package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +2 -2
- package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
- package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.json +100 -0
- package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +1 -1
- package/artifacts/contracts/types/Referral.sol/ReferralLib.json +23 -4
- package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +2 -2
- package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +2 -2
- package/artifacts/contracts/types/Seconds.sol/SecondsLib.dbg.json +4 -0
- package/artifacts/contracts/types/Seconds.sol/SecondsLib.json +124 -0
- package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/StateId.sol/StateIdLib.json +2 -2
- package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +1 -1
- package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +25 -7
- package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +1 -1
- package/artifacts/contracts/types/UFixed.sol/MathLib.json +2 -2
- package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +1 -1
- package/artifacts/contracts/types/UFixed.sol/UFixedLib.json +2 -2
- package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +1 -1
- package/artifacts/contracts/types/Version.sol/VersionLib.json +2 -2
- package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +1 -1
- package/artifacts/contracts/types/Version.sol/VersionPartLib.json +2 -2
- package/contracts/components/Component.sol +253 -0
- package/contracts/components/Distribution.sol +200 -83
- package/contracts/components/IComponent.sol +76 -0
- package/contracts/components/IDistributionComponent.sol +44 -17
- package/contracts/components/IPoolComponent.sol +88 -41
- package/contracts/components/IProductComponent.sol +10 -5
- package/contracts/components/Pool.sol +217 -185
- package/contracts/components/Product.sol +125 -124
- package/contracts/instance/AccessManagerUpgradeableInitializeable.sol +2 -12
- package/contracts/instance/BundleManager.sol +14 -16
- package/contracts/instance/Cloneable.sol +7 -2
- package/contracts/instance/IInstance.sol +52 -14
- package/contracts/instance/IInstanceService.sol +39 -9
- package/contracts/instance/Instance.sol +126 -75
- package/contracts/instance/InstanceAccessManager.sol +383 -166
- package/contracts/instance/InstanceReader.sol +10 -34
- package/contracts/instance/InstanceService.sol +312 -128
- package/contracts/instance/InstanceServiceManager.sol +6 -9
- package/contracts/instance/ObjectManager.sol +10 -29
- package/contracts/instance/base/ComponentService.sol +136 -0
- package/contracts/instance/base/KeyValueStore.sol +13 -5
- package/contracts/instance/base/Lifecycle.sol +11 -2
- package/contracts/instance/module/IAccess.sol +23 -17
- package/contracts/instance/module/IBundle.sol +8 -5
- package/contracts/instance/module/IComponents.sol +41 -0
- package/contracts/instance/module/IDistribution.sol +2 -0
- package/contracts/instance/module/IPolicy.sol +30 -3
- package/contracts/instance/module/ISetup.sol +7 -20
- package/contracts/instance/service/ApplicationService.sol +350 -0
- package/contracts/instance/service/ApplicationServiceManager.sol +35 -0
- package/contracts/instance/service/BundleService.sol +239 -68
- package/contracts/instance/service/BundleServiceManager.sol +6 -9
- package/contracts/instance/service/ClaimService.sol +151 -0
- package/contracts/instance/service/ClaimServiceManager.sol +35 -0
- package/contracts/instance/service/DistributionService.sol +367 -50
- package/contracts/instance/service/DistributionServiceManager.sol +7 -10
- package/contracts/instance/service/IApplicationService.sol +82 -0
- package/contracts/instance/service/IBundleService.sol +67 -19
- package/contracts/instance/service/IClaimService.sol +61 -0
- package/contracts/instance/service/IDistributionService.sol +86 -0
- package/contracts/instance/service/IPolicyService.sol +34 -49
- package/contracts/instance/service/IPoolService.sol +82 -3
- package/contracts/instance/service/PolicyService.sol +199 -347
- package/contracts/instance/service/PolicyServiceManager.sol +2 -2
- package/contracts/instance/service/PoolService.sol +264 -45
- package/contracts/instance/service/PoolServiceManager.sol +6 -9
- package/contracts/instance/service/ProductService.sol +93 -56
- package/contracts/instance/service/ProductServiceManager.sol +2 -2
- package/contracts/registry/ChainNft.sol +9 -1
- package/contracts/registry/IRegistry.sol +39 -19
- package/contracts/registry/IRegistryService.sol +31 -13
- package/contracts/registry/ITransferInterceptor.sol +1 -0
- package/contracts/registry/Registry.sol +243 -224
- package/contracts/registry/RegistryAccessManager.sol +216 -0
- package/contracts/registry/RegistryService.sol +100 -173
- package/contracts/registry/RegistryServiceManager.sol +21 -39
- package/contracts/registry/ReleaseManager.sol +322 -0
- package/contracts/registry/TokenRegistry.sol +22 -17
- package/contracts/shared/ERC165.sol +14 -12
- package/contracts/shared/INftOwnable.sol +11 -10
- package/contracts/shared/IPolicyHolder.sol +26 -0
- package/contracts/shared/IRegisterable.sol +4 -6
- package/contracts/shared/IRegistryLinked.sol +12 -0
- package/contracts/shared/IService.sol +8 -2
- package/contracts/shared/IVersionable.sol +4 -47
- package/contracts/shared/NftOwnable.sol +66 -80
- package/contracts/shared/PolicyHolder.sol +81 -0
- package/contracts/shared/ProxyManager.sol +100 -25
- package/contracts/shared/Registerable.sol +16 -32
- package/contracts/shared/RegistryLinked.sol +48 -0
- package/contracts/shared/Service.sol +30 -22
- package/contracts/shared/TokenHandler.sol +11 -5
- package/contracts/shared/Versionable.sol +4 -92
- package/contracts/test/TestRegisterable.sol +1 -1
- package/contracts/test/TestService.sol +4 -3
- package/contracts/types/Amount.sol +60 -0
- package/contracts/types/Blocknumber.sol +1 -0
- package/contracts/types/ClaimId.sol +52 -0
- package/contracts/types/DistributorType.sol +2 -2
- package/contracts/types/Fee.sol +13 -5
- package/contracts/types/NftId.sol +8 -0
- package/contracts/types/ObjectType.sol +10 -5
- package/contracts/types/PayoutId.sol +54 -0
- package/contracts/types/Referral.sol +4 -0
- package/contracts/types/RoleId.sol +19 -15
- package/contracts/types/Seconds.sol +54 -0
- package/contracts/types/StateId.sol +1 -0
- package/contracts/types/Timestamp.sol +13 -13
- package/contracts/types/UFixed.sol +1 -0
- package/contracts/types/Version.sol +1 -0
- package/package.json +3 -3
- package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +0 -4
- package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +0 -4
- package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.json +0 -384
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +0 -4
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.json +0 -66
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +0 -4
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.json +0 -24
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +0 -4
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.json +0 -42
- package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
- package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
- package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
- package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
- package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
- package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
- package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
- package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
- package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
- package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.json +0 -37
- package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
- package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
- package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
- package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
- package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.json +0 -124
- package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
- package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
- package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
- package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
- package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
- package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
- package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
- package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
- package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
- package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
- package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.dbg.json +0 -4
- package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.json +0 -1082
- package/artifacts/contracts/instance/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
- package/artifacts/contracts/instance/IInstanceBase.sol/IInstanceBase.json +0 -448
- package/artifacts/contracts/instance/InstanceBase.sol/InstanceBase.dbg.json +0 -4
- package/artifacts/contracts/instance/InstanceBase.sol/InstanceBase.json +0 -763
- package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +0 -4
- package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
- package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +0 -113
- package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +0 -827
- package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +0 -4
- package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.dbg.json +0 -4
- package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.json +0 -442
- package/contracts/components/BaseComponent.sol +0 -145
- package/contracts/components/IBaseComponent.sol +0 -32
- package/contracts/experiment/cloning/Cloner.sol +0 -47
- package/contracts/experiment/errors/Require.sol +0 -38
- package/contracts/experiment/errors/Revert.sol +0 -44
- package/contracts/experiment/inheritance/A.sol +0 -53
- package/contracts/experiment/inheritance/B.sol +0 -28
- package/contracts/experiment/inheritance/C.sol +0 -34
- package/contracts/experiment/inheritance/IA.sol +0 -13
- package/contracts/experiment/inheritance/IB.sol +0 -10
- package/contracts/experiment/inheritance/IC.sol +0 -12
- package/contracts/experiment/statemachine/Dummy.sol +0 -27
- package/contracts/experiment/statemachine/ISM.sol +0 -25
- package/contracts/experiment/statemachine/SM.sol +0 -57
- package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
- package/contracts/experiment/types/TypeA.sol +0 -47
- package/contracts/experiment/types/TypeB.sol +0 -29
- package/contracts/instance/IAccessManagerSimple.sol +0 -391
- package/contracts/instance/IInstanceBase.sol +0 -26
- package/contracts/instance/InstanceBase.sol +0 -41
- package/contracts/instance/base/ComponentServiceBase.sol +0 -72
- package/contracts/instance/base/IInstanceBase.sol +0 -23
- package/contracts/instance/service/ComponentOwnerService.sol +0 -317
- package/contracts/instance/service/IComponentOwnerService.sol +0 -20
- package/contracts/shared/RegisterableUpgradable.sol +0 -16
@@ -4,87 +4,104 @@ 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 {
|
8
|
-
import {IProductService} from "../instance/service/IProductService.sol";
|
7
|
+
import {IApplicationService} from "../instance/service/IApplicationService.sol";
|
9
8
|
import {IPolicyService} from "../instance/service/IPolicyService.sol";
|
9
|
+
import {IProductService} from "../instance/service/IProductService.sol";
|
10
|
+
import {IClaimService} from "../instance/service/IClaimService.sol";
|
10
11
|
import {IProductComponent} from "./IProductComponent.sol";
|
11
|
-
import {NftId,
|
12
|
-
import {
|
12
|
+
import {NftId, NftIdLib} from "../types/NftId.sol";
|
13
|
+
import {PRODUCT, APPLICATION, POLICY, CLAIM } from "../types/ObjectType.sol";
|
13
14
|
import {ReferralId} from "../types/Referral.sol";
|
14
15
|
import {RiskId, RiskIdLib} from "../types/RiskId.sol";
|
16
|
+
import {Seconds} from "../types/Seconds.sol";
|
15
17
|
import {StateId} from "../types/StateId.sol";
|
16
18
|
import {Timestamp} from "../types/Timestamp.sol";
|
17
|
-
import {Fee
|
18
|
-
import {
|
19
|
+
import {Fee} from "../types/Fee.sol";
|
20
|
+
import {Component} from "./Component.sol";
|
19
21
|
|
20
|
-
import {IRegistry} from "../registry/IRegistry.sol";
|
21
|
-
import {IRegisterable} from "../shared/IRegisterable.sol";
|
22
|
-
import {Registerable} from "../shared/Registerable.sol";
|
23
22
|
import {TokenHandler} from "../shared/TokenHandler.sol";
|
24
23
|
|
25
24
|
import {InstanceReader} from "../instance/InstanceReader.sol";
|
25
|
+
import {IPolicy} from "../instance/module/IPolicy.sol";
|
26
26
|
import {ISetup} from "../instance/module/ISetup.sol";
|
27
|
+
import {IComponents} from "../instance/module/IComponents.sol";
|
27
28
|
import {Pool} from "../components/Pool.sol";
|
28
29
|
import {Distribution} from "../components/Distribution.sol";
|
29
30
|
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
31
|
+
abstract contract Product is
|
32
|
+
Component,
|
33
|
+
IProductComponent
|
34
|
+
{
|
35
|
+
// keccak256(abi.encode(uint256(keccak256("etherisc.storage.Product")) - 1)) & ~bytes32(uint256(0xff));
|
36
|
+
bytes32 public constant PRODUCT_STORAGE_LOCATION_V1 = 0x0bb7aafdb8e380f81267337bc5b5dfdf76e6d3a380ecadb51ec665246d9d6800;
|
37
|
+
|
38
|
+
struct ProductStorage {
|
39
|
+
IProductService _productService;
|
40
|
+
IApplicationService _applicationService;
|
41
|
+
IPolicyService _policyService;
|
42
|
+
IClaimService _claimService;
|
43
|
+
Pool _pool;
|
44
|
+
Distribution _distribution;
|
45
|
+
Fee _initialProductFee;
|
46
|
+
Fee _initialProcessingFee;
|
47
|
+
TokenHandler _tokenHandler;
|
48
|
+
NftId _poolNftId;
|
49
|
+
NftId _distributionNftId;
|
50
|
+
}
|
45
51
|
|
46
|
-
|
52
|
+
function initializeProduct(
|
47
53
|
address registry,
|
48
|
-
NftId
|
54
|
+
NftId instanceNftId,
|
55
|
+
string memory name,
|
49
56
|
address token,
|
50
57
|
bool isInterceptor,
|
51
58
|
address pool,
|
52
59
|
address distribution,
|
53
60
|
Fee memory productFee,
|
54
61
|
Fee memory processingFee,
|
55
|
-
address initialOwner
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
_initialProcessingFee = processingFee;
|
64
|
-
|
65
|
-
_tokenHandler = new TokenHandler(token);
|
66
|
-
|
67
|
-
_poolNftId = getRegistry().getNftId(address(_pool));
|
68
|
-
_distributionNftId = getRegistry().getNftId(address(_distribution));
|
62
|
+
address initialOwner,
|
63
|
+
bytes memory registryData // writeonly data that will saved in the object info record of the registry
|
64
|
+
)
|
65
|
+
public
|
66
|
+
virtual
|
67
|
+
onlyInitializing()
|
68
|
+
{
|
69
|
+
initializeComponent(registry, instanceNftId, name, token, PRODUCT(), isInterceptor, initialOwner, registryData);
|
69
70
|
|
70
|
-
|
71
|
+
ProductStorage storage $ = _getProductStorage();
|
72
|
+
// TODO add validation
|
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()));
|
78
|
+
$._pool = Pool(pool);
|
79
|
+
$._distribution = Distribution(distribution);
|
80
|
+
$._initialProductFee = productFee;
|
81
|
+
$._initialProcessingFee = processingFee;
|
82
|
+
$._tokenHandler = new TokenHandler(token);
|
83
|
+
$._poolNftId = getRegistry().getNftId(pool);
|
84
|
+
$._distributionNftId = getRegistry().getNftId(distribution);
|
85
|
+
|
86
|
+
registerInterface(type(IProductComponent).interfaceId);
|
71
87
|
}
|
72
88
|
|
73
89
|
|
74
90
|
function calculatePremium(
|
75
91
|
uint256 sumInsuredAmount,
|
76
92
|
RiskId riskId,
|
77
|
-
|
93
|
+
Seconds lifetime,
|
78
94
|
bytes memory applicationData,
|
79
|
-
|
80
|
-
|
95
|
+
NftId bundleNftId,
|
96
|
+
ReferralId referralId
|
81
97
|
)
|
82
98
|
external
|
83
99
|
view
|
84
100
|
override
|
85
101
|
returns (uint256 premiumAmount)
|
86
102
|
{
|
87
|
-
|
103
|
+
IPolicy.Premium memory premium = _getProductStorage()._applicationService.calculatePremium(
|
104
|
+
getNftId(),
|
88
105
|
riskId,
|
89
106
|
sumInsuredAmount,
|
90
107
|
lifetime,
|
@@ -92,13 +109,14 @@ contract Product is BaseComponent, IProductComponent {
|
|
92
109
|
bundleNftId,
|
93
110
|
referralId
|
94
111
|
);
|
112
|
+
premiumAmount = premium.premiumAmount;
|
95
113
|
}
|
96
114
|
|
97
115
|
|
98
116
|
function calculateNetPremium(
|
99
117
|
uint256 sumInsuredAmount,
|
100
118
|
RiskId riskId,
|
101
|
-
|
119
|
+
Seconds lifetime,
|
102
120
|
bytes memory applicationData
|
103
121
|
)
|
104
122
|
external
|
@@ -118,7 +136,7 @@ contract Product is BaseComponent, IProductComponent {
|
|
118
136
|
RiskId id,
|
119
137
|
bytes memory data
|
120
138
|
) internal {
|
121
|
-
|
139
|
+
_getProductService().createRisk(
|
122
140
|
id,
|
123
141
|
data
|
124
142
|
);
|
@@ -128,7 +146,7 @@ contract Product is BaseComponent, IProductComponent {
|
|
128
146
|
RiskId id,
|
129
147
|
bytes memory data
|
130
148
|
) internal {
|
131
|
-
|
149
|
+
_getProductService().updateRisk(
|
132
150
|
id,
|
133
151
|
data
|
134
152
|
);
|
@@ -138,33 +156,36 @@ contract Product is BaseComponent, IProductComponent {
|
|
138
156
|
RiskId id,
|
139
157
|
StateId state
|
140
158
|
) internal {
|
141
|
-
|
159
|
+
_getProductService().updateRiskState(
|
142
160
|
id,
|
143
161
|
state
|
144
162
|
);
|
145
163
|
}
|
146
164
|
|
147
165
|
function _getRiskInfo(RiskId id) internal view returns (IRisk.RiskInfo memory info) {
|
148
|
-
return
|
166
|
+
return getInstance().getInstanceReader().getRiskInfo(id);
|
149
167
|
}
|
150
168
|
|
151
169
|
function _createApplication(
|
152
170
|
address applicationOwner,
|
153
171
|
RiskId riskId,
|
154
172
|
uint256 sumInsuredAmount,
|
155
|
-
|
156
|
-
bytes memory applicationData,
|
173
|
+
Seconds lifetime,
|
157
174
|
NftId bundleNftId,
|
158
|
-
ReferralId referralId
|
159
|
-
|
160
|
-
|
175
|
+
ReferralId referralId,
|
176
|
+
bytes memory applicationData
|
177
|
+
)
|
178
|
+
internal
|
179
|
+
returns (NftId applicationNftId)
|
180
|
+
{
|
181
|
+
return _getProductStorage()._applicationService.create(
|
161
182
|
applicationOwner,
|
162
183
|
riskId,
|
163
184
|
sumInsuredAmount,
|
164
185
|
lifetime,
|
165
|
-
applicationData,
|
166
186
|
bundleNftId,
|
167
|
-
referralId
|
187
|
+
referralId,
|
188
|
+
applicationData
|
168
189
|
);
|
169
190
|
}
|
170
191
|
|
@@ -175,7 +196,7 @@ contract Product is BaseComponent, IProductComponent {
|
|
175
196
|
)
|
176
197
|
internal
|
177
198
|
{
|
178
|
-
_policyService.underwrite(
|
199
|
+
_getProductStorage()._policyService.underwrite(
|
179
200
|
policyNftId,
|
180
201
|
requirePremiumPayment,
|
181
202
|
activateAt);
|
@@ -187,7 +208,7 @@ contract Product is BaseComponent, IProductComponent {
|
|
187
208
|
)
|
188
209
|
internal
|
189
210
|
{
|
190
|
-
_policyService.collectPremium(
|
211
|
+
_getProductStorage()._policyService.collectPremium(
|
191
212
|
policyNftId,
|
192
213
|
activateAt);
|
193
214
|
}
|
@@ -198,17 +219,25 @@ contract Product is BaseComponent, IProductComponent {
|
|
198
219
|
)
|
199
220
|
internal
|
200
221
|
{
|
201
|
-
_policyService.activate(
|
222
|
+
_getProductStorage()._policyService.activate(
|
202
223
|
policyNftId,
|
203
224
|
activateAt);
|
204
225
|
}
|
205
226
|
|
227
|
+
function _close(
|
228
|
+
NftId policyNftId
|
229
|
+
)
|
230
|
+
internal
|
231
|
+
{
|
232
|
+
_getProductStorage()._policyService.close(policyNftId);
|
233
|
+
}
|
234
|
+
|
206
235
|
function getPoolNftId() external view override returns (NftId poolNftId) {
|
207
|
-
return getRegistry().getNftId(address(_pool));
|
236
|
+
return getRegistry().getNftId(address(_getProductStorage()._pool));
|
208
237
|
}
|
209
238
|
|
210
239
|
function getDistributionNftId() external view override returns (NftId distributionNftId) {
|
211
|
-
return getRegistry().getNftId(address(_distribution));
|
240
|
+
return getRegistry().getNftId(address(_getProductStorage()._distribution));
|
212
241
|
}
|
213
242
|
|
214
243
|
// from product component
|
@@ -218,75 +247,47 @@ contract Product is BaseComponent, IProductComponent {
|
|
218
247
|
)
|
219
248
|
external
|
220
249
|
onlyOwner
|
250
|
+
restricted()
|
221
251
|
override
|
222
252
|
{
|
223
|
-
|
253
|
+
_getProductService().setFees(productFee, processingFee);
|
224
254
|
}
|
225
255
|
|
226
256
|
function getSetupInfo() public view returns (ISetup.ProductSetupInfo memory setupInfo) {
|
227
|
-
InstanceReader reader =
|
228
|
-
|
229
|
-
}
|
257
|
+
InstanceReader reader = getInstance().getInstanceReader();
|
258
|
+
setupInfo = reader.getProductSetupInfo(getNftId());
|
230
259
|
|
231
|
-
|
260
|
+
// fallback to initial setup info (wallet is always != address(0))
|
261
|
+
if(setupInfo.wallet == address(0)) {
|
262
|
+
setupInfo = _getInitialSetupInfo();
|
263
|
+
}
|
264
|
+
}
|
232
265
|
|
233
|
-
function
|
234
|
-
|
235
|
-
|
236
|
-
|
237
|
-
|
238
|
-
|
239
|
-
|
240
|
-
|
241
|
-
|
242
|
-
|
243
|
-
|
244
|
-
|
245
|
-
|
246
|
-
|
247
|
-
|
248
|
-
// checks are done in registryProduct() where THIS function is called
|
249
|
-
//require(getRegistry().getObjectInfo(_poolNftId).objectType == POOL(), "POOL_NOT_REGISTERED");
|
250
|
-
//require(getRegistry().getObjectInfo(_distributionNftId).objectType == DISTRIBUTION(), "DISTRIBUTION_NOT_REGISTERED");
|
251
|
-
|
252
|
-
// from PoolComponent
|
253
|
-
(
|
254
|
-
,
|
255
|
-
bytes memory poolData
|
256
|
-
) = _pool.getInitialInfo();
|
257
|
-
|
258
|
-
(
|
259
|
-
ISetup.PoolSetupInfo memory poolSetupInfo
|
260
|
-
) = abi.decode(poolData, (ISetup.PoolSetupInfo));
|
261
|
-
|
262
|
-
// from DistributionComponent
|
263
|
-
(
|
264
|
-
,
|
265
|
-
bytes memory distributionData
|
266
|
-
) = _distribution.getInitialInfo();
|
267
|
-
|
268
|
-
(
|
269
|
-
ISetup.DistributionSetupInfo memory distributionSetupInfo
|
270
|
-
) = abi.decode(distributionData, (ISetup.DistributionSetupInfo));
|
271
|
-
|
272
|
-
return (
|
273
|
-
productInfo,
|
274
|
-
abi.encode(
|
275
|
-
ISetup.ProductSetupInfo(
|
276
|
-
_token,
|
277
|
-
_tokenHandler,
|
278
|
-
_distributionNftId,
|
279
|
-
_poolNftId,
|
280
|
-
distributionSetupInfo.distributionFee,
|
281
|
-
_initialProductFee,
|
282
|
-
_initialProcessingFee,
|
283
|
-
poolSetupInfo.poolFee,
|
284
|
-
poolSetupInfo.stakingFee,
|
285
|
-
poolSetupInfo.performanceFee,
|
286
|
-
false,
|
287
|
-
_wallet
|
288
|
-
)
|
289
|
-
)
|
266
|
+
function _getInitialSetupInfo() internal view returns (ISetup.ProductSetupInfo memory setupInfo) {
|
267
|
+
ProductStorage storage $ = _getProductStorage();
|
268
|
+
|
269
|
+
ISetup.DistributionSetupInfo memory distributionSetupInfo = $._distribution.getSetupInfo();
|
270
|
+
IComponents.PoolInfo memory poolInfo = $._pool.getPoolInfo();
|
271
|
+
|
272
|
+
return ISetup.ProductSetupInfo(
|
273
|
+
getToken(),
|
274
|
+
$._tokenHandler,
|
275
|
+
$._distributionNftId,
|
276
|
+
$._poolNftId,
|
277
|
+
$._initialProductFee,
|
278
|
+
$._initialProcessingFee,
|
279
|
+
false,
|
280
|
+
getWallet()
|
290
281
|
);
|
291
282
|
}
|
283
|
+
|
284
|
+
function _getProductStorage() private pure returns (ProductStorage storage $) {
|
285
|
+
assembly {
|
286
|
+
$.slot := PRODUCT_STORAGE_LOCATION_V1
|
287
|
+
}
|
288
|
+
}
|
289
|
+
|
290
|
+
function _getProductService() internal view returns (IProductService) {
|
291
|
+
return _getProductStorage()._productService;
|
292
|
+
}
|
292
293
|
}
|
@@ -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,17 @@ 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
|
36
|
+
/// @dev links a policy to its bundle
|
40
37
|
// to link a policy it MUST NOT yet have been activated
|
41
38
|
// the bundle MUST be unlocked (active) for linking (underwriting) and registered with this instance
|
42
39
|
function linkPolicy(NftId policyNftId) external restricted() {
|
43
|
-
NftId bundleNftId =
|
40
|
+
NftId bundleNftId = _instance.getInstanceReader().getPolicyInfo(policyNftId).bundleNftId;
|
44
41
|
// decision will likely depend on the decision what to check here and what in the service
|
45
|
-
NftId poolNftId =
|
42
|
+
NftId poolNftId = _instance.getInstanceReader().getBundleInfo(bundleNftId).poolNftId;
|
46
43
|
|
47
44
|
// ensure bundle is unlocked (in active set) and registered with this instance
|
48
45
|
if (!_isActive(poolNftId, bundleNftId)) {
|
49
|
-
revert
|
46
|
+
revert ErrorBundleManagerBundleLocked(bundleNftId, policyNftId);
|
50
47
|
}
|
51
48
|
|
52
49
|
LibNftIdSet.add(_activePolicies[bundleNftId], policyNftId);
|
@@ -59,11 +56,11 @@ contract BundleManager is
|
|
59
56
|
// - the policy MUST be past its expiry period and it MUST NOT have any open claims
|
60
57
|
// - the policy's payoutAmount MUST be equal to its sumInsuredAmount and MUST NOT have any open claims
|
61
58
|
function unlinkPolicy(NftId policyNftId) external restricted() {
|
62
|
-
IPolicy.PolicyInfo memory policyInfo =
|
59
|
+
IPolicy.PolicyInfo memory policyInfo = _instance.getInstanceReader().getPolicyInfo(policyNftId);
|
63
60
|
|
64
61
|
NftId bundleNftId = policyInfo.bundleNftId;
|
65
62
|
// decision will likely depend on the decision what to check here and what in the service
|
66
|
-
NftId poolNftId =
|
63
|
+
NftId poolNftId = _instance.getInstanceReader().getBundleInfo(bundleNftId).poolNftId;
|
67
64
|
|
68
65
|
// ensure bundle is registered with this instance
|
69
66
|
if (!_contains(poolNftId, bundleNftId)) {
|
@@ -75,10 +72,10 @@ contract BundleManager is
|
|
75
72
|
}
|
76
73
|
|
77
74
|
|
78
|
-
/// @dev add a new bundle to a
|
75
|
+
/// @dev add a new bundle to a pool registerd with this instance
|
79
76
|
// the corresponding pool is fetched via instance reader
|
80
77
|
function add(NftId bundleNftId) external restricted() {
|
81
|
-
NftId poolNftId =
|
78
|
+
NftId poolNftId = _instance.getInstanceReader().getBundleInfo(bundleNftId).poolNftId;
|
82
79
|
|
83
80
|
// ensure pool is registered with instance
|
84
81
|
if(poolNftId.eqz()) {
|
@@ -89,16 +86,17 @@ contract BundleManager is
|
|
89
86
|
emit LogBundleManagerBundleAdded(poolNftId, bundleNftId);
|
90
87
|
}
|
91
88
|
|
89
|
+
|
92
90
|
/// @dev unlocked (active) bundles are available to underwrite new policies
|
93
91
|
function unlock(NftId bundleNftId) external restricted() {
|
94
|
-
NftId poolNftId =
|
92
|
+
NftId poolNftId = _instance.getInstanceReader().getBundleInfo(bundleNftId).poolNftId;
|
95
93
|
_activate(poolNftId, bundleNftId);
|
96
94
|
emit LogBundleManagerBundleUnlocked(poolNftId, bundleNftId);
|
97
95
|
}
|
98
96
|
|
99
97
|
/// @dev locked (deactivated) bundles may not underwrite any new policies
|
100
98
|
function lock(NftId bundleNftId) external restricted() {
|
101
|
-
NftId poolNftId =
|
99
|
+
NftId poolNftId = _instance.getInstanceReader().getBundleInfo(bundleNftId).poolNftId;
|
102
100
|
_deactivate(poolNftId, bundleNftId);
|
103
101
|
emit LogBundleManagerBundleLocked(poolNftId, bundleNftId);
|
104
102
|
}
|
@@ -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
|
@@ -1,30 +1,46 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
2
|
pragma solidity ^0.8.20;
|
3
3
|
|
4
|
-
import {
|
4
|
+
import {IAccessManaged} from "@openzeppelin/contracts/access/manager/IAccessManaged.sol";
|
5
5
|
|
6
|
+
import {NftId} from "../types/NftId.sol";
|
7
|
+
import {StateId} from "../types/StateId.sol";
|
8
|
+
import {RiskId} from "../types/RiskId.sol";
|
9
|
+
import {VersionPart} from "../types/Version.sol";
|
10
|
+
import {Key32} from "../types/Key32.sol";
|
11
|
+
|
12
|
+
import {IRegisterable} from "../shared/IRegisterable.sol";
|
13
|
+
|
14
|
+
import {ITransferInterceptor} from "../registry/ITransferInterceptor.sol";
|
15
|
+
|
16
|
+
import {InstanceAccessManager} from "./InstanceAccessManager.sol";
|
6
17
|
import {BundleManager} from "./BundleManager.sol";
|
7
18
|
import {InstanceReader} from "./InstanceReader.sol";
|
8
19
|
|
9
|
-
import {
|
20
|
+
import {IBundle} from "./module/IBundle.sol";
|
21
|
+
import {IBundleService} from "./service/IBundleService.sol";
|
22
|
+
import {IComponents} from "./module/IComponents.sol";
|
10
23
|
import {IDistributionService} from "./service/IDistributionService.sol";
|
24
|
+
import {InstanceAccessManager} from "./InstanceAccessManager.sol";
|
25
|
+
import {IKeyValueStore} from "./base/IKeyValueStore.sol";
|
26
|
+
import {IPolicy} from "./module/IPolicy.sol";
|
27
|
+
import {IDistribution} from "./module/IDistribution.sol";
|
28
|
+
import {IPolicyService} from "./service/IPolicyService.sol";
|
11
29
|
import {IPoolService} from "./service/IPoolService.sol";
|
12
30
|
import {IProductService} from "./service/IProductService.sol";
|
13
31
|
import {IPolicyService} from "./service/IPolicyService.sol";
|
14
32
|
import {IBundleService} from "./service/IBundleService.sol";
|
15
|
-
import {IBundle} from "./module/IBundle.sol";
|
16
|
-
import {ISetup} from "./module/ISetup.sol";
|
17
|
-
import {NftId} from "../types/NftId.sol";
|
18
|
-
import {StateId} from "../types/StateId.sol";
|
19
|
-
import {RiskId} from "../types/RiskId.sol";
|
20
33
|
import {IRisk} from "./module/IRisk.sol";
|
21
|
-
import {
|
22
|
-
import {IKeyValueStore} from "./base/IKeyValueStore.sol";
|
34
|
+
import {ISetup} from "./module/ISetup.sol";
|
23
35
|
|
24
36
|
|
25
|
-
interface IInstance is IERC165, IKeyValueStore {
|
26
37
|
|
27
|
-
|
38
|
+
interface IInstance is
|
39
|
+
IRegisterable,
|
40
|
+
ITransferInterceptor,
|
41
|
+
IAccessManaged,
|
42
|
+
IKeyValueStore
|
43
|
+
{
|
28
44
|
function getDistributionService() external view returns (IDistributionService);
|
29
45
|
function getProductService() external view returns (IProductService);
|
30
46
|
function getPoolService() external view returns (IPoolService);
|
@@ -35,8 +51,8 @@ interface IInstance is IERC165, IKeyValueStore {
|
|
35
51
|
function updateDistributionSetup(NftId distributionNftId, ISetup.DistributionSetupInfo memory setup, StateId newState) external;
|
36
52
|
function updateDistributionSetupState(NftId distributionNftId, StateId newState) external;
|
37
53
|
|
38
|
-
function createPoolSetup(NftId poolNftId,
|
39
|
-
function updatePoolSetup(NftId poolNftId,
|
54
|
+
function createPoolSetup(NftId poolNftId, IComponents.ComponentInfo memory info) external;
|
55
|
+
function updatePoolSetup(NftId poolNftId, IComponents.ComponentInfo memory info, StateId newState) external;
|
40
56
|
function updatePoolSetupState(NftId poolNftId, StateId newState) external;
|
41
57
|
|
42
58
|
function createBundle(NftId bundleNftId, IBundle.BundleInfo memory bundle) external;
|
@@ -47,14 +63,36 @@ interface IInstance is IERC165, IKeyValueStore {
|
|
47
63
|
function updateProductSetup(NftId productNftId, ISetup.ProductSetupInfo memory setup, StateId newState) external;
|
48
64
|
function updateProductSetupState(NftId productNftId, StateId newState) external;
|
49
65
|
|
66
|
+
function createDistributorType(Key32 distributorKey, IDistribution.DistributorTypeInfo memory info) external;
|
67
|
+
function updateDistributorType(Key32 distributorKey, IDistribution.DistributorTypeInfo memory info, StateId newState) external;
|
68
|
+
function updateDistributorTypeState(Key32 distributorKey, StateId newState) external;
|
69
|
+
|
70
|
+
function createDistributor(NftId nftId, IDistribution.DistributorInfo memory info) external;
|
71
|
+
function updateDistributor(NftId nftId, IDistribution.DistributorInfo memory info, StateId newState) external;
|
72
|
+
function updateDistributorState(NftId nftId, StateId newState) external;
|
73
|
+
|
74
|
+
function createReferral(Key32 referralKey, IDistribution.ReferralInfo memory referralInfo) external;
|
75
|
+
function updateReferral(Key32 referralKey, IDistribution.ReferralInfo memory referralInfo, StateId newState) external;
|
76
|
+
function updateReferralState(Key32 referralKey, StateId newState) external;
|
77
|
+
|
50
78
|
function createRisk(RiskId riskId, IRisk.RiskInfo memory risk) external;
|
51
79
|
function updateRisk(RiskId riskId, IRisk.RiskInfo memory risk, StateId newState) external;
|
52
80
|
function updateRiskState(RiskId riskId, StateId newState) external;
|
53
81
|
|
54
|
-
function
|
82
|
+
function createApplication(NftId applicationNftId, IPolicy.PolicyInfo memory policy) external;
|
83
|
+
function updateApplication(NftId applicationNftId, IPolicy.PolicyInfo memory policy, StateId newState) external;
|
84
|
+
function updateApplicationState(NftId applicationNftId, StateId newState) external;
|
85
|
+
|
55
86
|
function updatePolicy(NftId policyNftId, IPolicy.PolicyInfo memory policy, StateId newState) external;
|
56
87
|
function updatePolicyState(NftId policyNftId, StateId newState) external;
|
57
88
|
|
89
|
+
// TODO add claims/payouts function to instance
|
90
|
+
// function updateClaims(NftId policyNftId, IPolicy.PolicyInfo memory policy, StateId newState) external;
|
91
|
+
|
92
|
+
function getMajorVersion() external pure returns (VersionPart majorVersion);
|
58
93
|
function getInstanceReader() external view returns (InstanceReader);
|
59
94
|
function getBundleManager() external view returns (BundleManager);
|
95
|
+
|
96
|
+
function setInstanceAccessManager(InstanceAccessManager accessManager) external;
|
97
|
+
function getInstanceAccessManager() external view returns (InstanceAccessManager);
|
60
98
|
}
|