@etherisc/gif-next 0.0.2-da06f3b-803 → 0.0.2-da09ec0-359
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 +1 -1
- package/artifacts/contracts/components/Component.sol/Component.json +315 -98
- package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/components/Distribution.sol/Distribution.json +668 -141
- package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IComponent.sol/IComponent.json +241 -60
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +438 -86
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +526 -144
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +257 -144
- package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/components/Pool.sol/Pool.json +676 -183
- package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/components/Product.sol/Product.json +435 -186
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +1 -1
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +64 -50
- 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 +267 -1594
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +232 -208
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +393 -2515
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +359 -92
- package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +124 -0
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +424 -236
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +338 -409
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +291 -108
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +2788 -0
- package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +1 -1
- package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +8 -13
- package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.json +197 -169
- 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 +51 -42
- 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 +918 -0
- package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.json +648 -0
- package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +526 -340
- package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +340 -93
- package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.json +1376 -0
- package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.json +748 -0
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +982 -198
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +430 -87
- package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.json +493 -0
- package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.json +290 -270
- 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 +527 -128
- package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.json +181 -296
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +705 -122
- package/artifacts/contracts/instance/service/IPricingService.sol/IPricingService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/IPricingService.sol/IPricingService.json +510 -0
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +71 -160
- package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +449 -395
- package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +349 -114
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +1018 -202
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +360 -89
- package/artifacts/contracts/instance/service/PricingService.sol/PricingService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/PricingService.sol/PricingService.json +1004 -0
- package/artifacts/contracts/instance/service/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/PricingServiceManager.sol/PricingServiceManager.json +688 -0
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +231 -223
- package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +298 -95
- 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 +15 -2
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +70 -193
- 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 +28 -15
- package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +2 -2
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +182 -232
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +287 -94
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +23 -11
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +128 -37
- package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +4 -0
- package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +1206 -0
- 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 -29
- 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 -160
- 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 +100 -33
- 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 -76
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +115 -58
- 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 +172 -160
- 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 +115 -58
- package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +1 -1
- package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +2 -2
- package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +1 -1
- package/artifacts/contracts/test/TestService.sol/TestService.json +190 -210
- 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 +134 -78
- package/contracts/components/Distribution.sol +189 -57
- package/contracts/components/IComponent.sol +62 -15
- package/contracts/components/IDistributionComponent.sol +39 -15
- package/contracts/components/IPoolComponent.sol +86 -23
- package/contracts/components/IProductComponent.sol +8 -6
- package/contracts/components/Pool.sol +230 -136
- package/contracts/components/Product.sol +227 -118
- package/contracts/instance/BundleManager.sol +10 -9
- package/contracts/instance/Cloneable.sol +7 -2
- package/contracts/instance/IInstance.sol +40 -35
- package/contracts/instance/IInstanceService.sol +44 -13
- package/contracts/instance/Instance.sol +131 -171
- package/contracts/instance/InstanceAccessManager.sol +281 -154
- package/contracts/instance/InstanceAuthorizationsLib.sol +308 -0
- package/contracts/instance/InstanceReader.sol +90 -15
- package/contracts/instance/InstanceService.sol +173 -338
- package/contracts/instance/InstanceServiceManager.sol +1 -1
- package/contracts/instance/InstanceStore.sol +212 -0
- package/contracts/instance/ObjectManager.sol +6 -8
- package/contracts/instance/base/ComponentService.sol +53 -39
- package/contracts/instance/base/KeyValueStore.sol +13 -36
- package/contracts/instance/base/Lifecycle.sol +26 -6
- package/contracts/instance/module/IAccess.sol +18 -12
- 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 +186 -0
- package/contracts/instance/service/ApplicationServiceManager.sol +35 -0
- package/contracts/instance/service/BundleService.sol +225 -136
- package/contracts/instance/service/BundleServiceManager.sol +1 -1
- package/contracts/instance/service/ClaimService.sol +437 -0
- package/contracts/instance/service/ClaimServiceManager.sol +35 -0
- package/contracts/instance/service/DistributionService.sol +264 -22
- package/contracts/instance/service/DistributionServiceManager.sol +1 -1
- package/contracts/instance/service/IApplicationService.sol +62 -0
- package/contracts/instance/service/IBundleService.sol +96 -22
- package/contracts/instance/service/IClaimService.sol +90 -0
- package/contracts/instance/service/IDistributionService.sol +76 -1
- package/contracts/instance/service/IPolicyService.sol +40 -54
- package/contracts/instance/service/IPoolService.sol +97 -3
- package/contracts/instance/service/IPricingService.sol +37 -0
- package/contracts/instance/service/PolicyService.sol +200 -362
- package/contracts/instance/service/PolicyServiceManager.sol +2 -2
- package/contracts/instance/service/PoolService.sol +313 -20
- package/contracts/instance/service/PoolServiceManager.sol +1 -1
- package/contracts/instance/service/PricingService.sol +275 -0
- package/contracts/instance/service/PricingServiceManager.sol +51 -0
- package/contracts/instance/service/ProductService.sol +41 -64
- package/contracts/instance/service/ProductServiceManager.sol +2 -2
- package/contracts/registry/ChainNft.sol +8 -0
- package/contracts/registry/IRegistry.sol +3 -2
- package/contracts/registry/IRegistryService.sol +12 -11
- package/contracts/registry/ITransferInterceptor.sol +1 -0
- package/contracts/registry/Registry.sol +30 -20
- package/contracts/registry/RegistryService.sol +75 -51
- package/contracts/registry/RegistryServiceManager.sol +13 -13
- package/contracts/registry/ReleaseManager.sol +32 -40
- package/contracts/registry/TokenRegistry.sol +16 -12
- package/contracts/shared/AccessManagerUpgradeableInitializeable.sol +13 -0
- 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 +3 -3
- 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 -85
- package/contracts/shared/PolicyHolder.sol +94 -0
- package/contracts/shared/ProxyManager.sol +100 -25
- package/contracts/shared/Registerable.sol +16 -27
- package/contracts/shared/RegistryLinked.sol +43 -0
- package/contracts/shared/Service.sol +32 -20
- 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 +16 -7
- package/contracts/types/PayoutId.sol +82 -0
- package/contracts/types/Referral.sol +4 -0
- package/contracts/types/RoleId.sol +12 -8
- 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 +1 -1
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +0 -4
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.json +0 -66
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +0 -4
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.json +0 -24
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +0 -4
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.json +0 -42
- package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
- package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
- package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
- package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
- package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
- package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
- package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
- package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
- package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
- package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
- package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
- package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
- package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
- package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
- package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.json +0 -124
- package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
- package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
- package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
- package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
- package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
- package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
- package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
- package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
- package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
- package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
- package/contracts/experiment/cloning/Cloner.sol +0 -47
- package/contracts/experiment/errors/Require.sol +0 -38
- package/contracts/experiment/errors/Revert.sol +0 -44
- package/contracts/experiment/inheritance/A.sol +0 -53
- package/contracts/experiment/inheritance/B.sol +0 -28
- package/contracts/experiment/inheritance/C.sol +0 -34
- package/contracts/experiment/inheritance/IA.sol +0 -13
- package/contracts/experiment/inheritance/IB.sol +0 -10
- package/contracts/experiment/inheritance/IC.sol +0 -12
- package/contracts/experiment/statemachine/Dummy.sol +0 -27
- package/contracts/experiment/statemachine/ISM.sol +0 -25
- package/contracts/experiment/statemachine/SM.sol +0 -57
- package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
- package/contracts/experiment/types/TypeA.sol +0 -47
- package/contracts/experiment/types/TypeB.sol +0 -29
@@ -3,41 +3,60 @@ 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";
|
11
|
+
import {IApplicationService} from "../instance/service/IApplicationService.sol";
|
7
12
|
import {IPolicyService} from "../instance/service/IPolicyService.sol";
|
13
|
+
import {IProductService} from "../instance/service/IProductService.sol";
|
14
|
+
import {IClaimService} from "../instance/service/IClaimService.sol";
|
15
|
+
import {IPricingService} from "../instance/service/IPricingService.sol";
|
8
16
|
import {IProductComponent} from "./IProductComponent.sol";
|
9
17
|
import {NftId, NftIdLib} from "../types/NftId.sol";
|
10
|
-
import {
|
18
|
+
import {PayoutId} from "../types/PayoutId.sol";
|
19
|
+
import {PRODUCT, APPLICATION, POLICY, CLAIM, PRICE } from "../types/ObjectType.sol";
|
11
20
|
import {ReferralId} from "../types/Referral.sol";
|
12
21
|
import {RiskId, RiskIdLib} from "../types/RiskId.sol";
|
22
|
+
import {Seconds} from "../types/Seconds.sol";
|
13
23
|
import {StateId} from "../types/StateId.sol";
|
14
24
|
import {Timestamp} from "../types/Timestamp.sol";
|
15
|
-
import {Fee} from "../types/Fee.sol";
|
16
|
-
import {Component} from "./Component.sol";
|
17
25
|
|
18
26
|
import {TokenHandler} from "../shared/TokenHandler.sol";
|
19
27
|
|
20
28
|
import {InstanceReader} from "../instance/InstanceReader.sol";
|
29
|
+
import {IPolicy} from "../instance/module/IPolicy.sol";
|
21
30
|
import {ISetup} from "../instance/module/ISetup.sol";
|
31
|
+
import {IComponents} from "../instance/module/IComponents.sol";
|
22
32
|
import {Pool} from "../components/Pool.sol";
|
23
33
|
import {Distribution} from "../components/Distribution.sol";
|
24
34
|
|
25
|
-
abstract contract Product is
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
35
|
+
abstract contract Product is
|
36
|
+
Component,
|
37
|
+
IProductComponent
|
38
|
+
{
|
39
|
+
// keccak256(abi.encode(uint256(keccak256("etherisc.storage.Product")) - 1)) & ~bytes32(uint256(0xff));
|
40
|
+
bytes32 public constant PRODUCT_STORAGE_LOCATION_V1 = 0x0bb7aafdb8e380f81267337bc5b5dfdf76e6d3a380ecadb51ec665246d9d6800;
|
41
|
+
|
42
|
+
struct ProductStorage {
|
43
|
+
IProductService _productService;
|
44
|
+
IApplicationService _applicationService;
|
45
|
+
IPolicyService _policyService;
|
46
|
+
IClaimService _claimService;
|
47
|
+
IPricingService _pricingService;
|
48
|
+
Pool _pool;
|
49
|
+
Distribution _distribution;
|
50
|
+
Fee _initialProductFee;
|
51
|
+
Fee _initialProcessingFee;
|
52
|
+
TokenHandler _tokenHandler;
|
53
|
+
NftId _poolNftId;
|
54
|
+
NftId _distributionNftId;
|
55
|
+
}
|
37
56
|
|
38
|
-
|
57
|
+
function initializeProduct(
|
39
58
|
address registry,
|
40
|
-
NftId
|
59
|
+
NftId instanceNftId,
|
41
60
|
string memory name,
|
42
61
|
address token,
|
43
62
|
bool isInterceptor,
|
@@ -46,81 +65,51 @@ abstract contract Product is Component, IProductComponent {
|
|
46
65
|
Fee memory productFee,
|
47
66
|
Fee memory processingFee,
|
48
67
|
address initialOwner,
|
49
|
-
bytes memory data
|
50
|
-
) Component (
|
51
|
-
registry,
|
52
|
-
instanceNftid,
|
53
|
-
name,
|
54
|
-
token,
|
55
|
-
PRODUCT(),
|
56
|
-
isInterceptor,
|
57
|
-
initialOwner,
|
58
|
-
data
|
59
|
-
) {
|
60
|
-
// TODO add validation
|
61
|
-
_policyService = getInstance().getPolicyService();
|
62
|
-
_pool = Pool(pool);
|
63
|
-
_distribution = Distribution(distribution);
|
64
|
-
_initialProductFee = productFee;
|
65
|
-
_initialProcessingFee = processingFee;
|
66
|
-
|
67
|
-
_tokenHandler = new TokenHandler(token);
|
68
|
-
|
69
|
-
_poolNftId = getRegistry().getNftId(address(_pool));
|
70
|
-
_distributionNftId = getRegistry().getNftId(address(_distribution));
|
71
|
-
|
72
|
-
_registerInterface(type(IProductComponent).interfaceId);
|
73
|
-
}
|
74
|
-
|
75
|
-
|
76
|
-
function calculatePremium(
|
77
|
-
uint256 sumInsuredAmount,
|
78
|
-
RiskId riskId,
|
79
|
-
uint256 lifetime,
|
80
|
-
bytes memory applicationData,
|
81
|
-
NftId bundleNftId,
|
82
|
-
ReferralId referralId
|
68
|
+
bytes memory registryData // writeonly data that will saved in the object info record of the registry
|
83
69
|
)
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
returns (uint256 premiumAmount)
|
70
|
+
public
|
71
|
+
virtual
|
72
|
+
onlyInitializing()
|
88
73
|
{
|
89
|
-
(
|
90
|
-
riskId,
|
91
|
-
sumInsuredAmount,
|
92
|
-
lifetime,
|
93
|
-
applicationData,
|
94
|
-
bundleNftId,
|
95
|
-
referralId
|
96
|
-
);
|
97
|
-
}
|
74
|
+
initializeComponent(registry, instanceNftId, name, token, PRODUCT(), isInterceptor, initialOwner, registryData);
|
98
75
|
|
76
|
+
ProductStorage storage $ = _getProductStorage();
|
77
|
+
// TODO add validation
|
78
|
+
// TODO refactor to go via registry ?
|
79
|
+
$._productService = IProductService(_getServiceAddress(PRODUCT()));
|
80
|
+
$._applicationService = IApplicationService(_getServiceAddress(APPLICATION()));
|
81
|
+
$._policyService = IPolicyService(_getServiceAddress(POLICY()));
|
82
|
+
$._claimService = IClaimService(_getServiceAddress(CLAIM()));
|
83
|
+
$._pricingService = IPricingService(_getServiceAddress(PRICE()));
|
84
|
+
$._pool = Pool(pool);
|
85
|
+
$._distribution = Distribution(distribution);
|
86
|
+
$._initialProductFee = productFee;
|
87
|
+
$._initialProcessingFee = processingFee;
|
88
|
+
$._tokenHandler = new TokenHandler(token);
|
89
|
+
$._poolNftId = getRegistry().getNftId(pool);
|
90
|
+
$._distributionNftId = getRegistry().getNftId(distribution);
|
91
|
+
|
92
|
+
registerInterface(type(IProductComponent).interfaceId);
|
93
|
+
}
|
99
94
|
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
bytes memory applicationData
|
95
|
+
// from product component
|
96
|
+
function setFees(
|
97
|
+
Fee memory productFee,
|
98
|
+
Fee memory processingFee
|
105
99
|
)
|
106
100
|
external
|
107
|
-
|
108
|
-
|
109
|
-
|
101
|
+
onlyOwner
|
102
|
+
restricted()
|
103
|
+
override
|
110
104
|
{
|
111
|
-
|
112
|
-
return sumInsuredAmount / 10;
|
113
|
-
}
|
114
|
-
|
115
|
-
function _toRiskId(string memory riskName) internal pure returns (RiskId riskId) {
|
116
|
-
return RiskIdLib.toRiskId(riskName);
|
105
|
+
_getProductService().setFees(productFee, processingFee);
|
117
106
|
}
|
118
107
|
|
119
108
|
function _createRisk(
|
120
109
|
RiskId id,
|
121
110
|
bytes memory data
|
122
111
|
) internal {
|
123
|
-
|
112
|
+
_getProductService().createRisk(
|
124
113
|
id,
|
125
114
|
data
|
126
115
|
);
|
@@ -130,7 +119,7 @@ abstract contract Product is Component, IProductComponent {
|
|
130
119
|
RiskId id,
|
131
120
|
bytes memory data
|
132
121
|
) internal {
|
133
|
-
|
122
|
+
_getProductService().updateRisk(
|
134
123
|
id,
|
135
124
|
data
|
136
125
|
);
|
@@ -140,7 +129,7 @@ abstract contract Product is Component, IProductComponent {
|
|
140
129
|
RiskId id,
|
141
130
|
StateId state
|
142
131
|
) internal {
|
143
|
-
|
132
|
+
_getProductService().updateRiskState(
|
144
133
|
id,
|
145
134
|
state
|
146
135
|
);
|
@@ -153,31 +142,34 @@ abstract contract Product is Component, IProductComponent {
|
|
153
142
|
function _createApplication(
|
154
143
|
address applicationOwner,
|
155
144
|
RiskId riskId,
|
156
|
-
|
157
|
-
|
158
|
-
bytes memory applicationData,
|
145
|
+
Amount sumInsuredAmount,
|
146
|
+
Seconds lifetime,
|
159
147
|
NftId bundleNftId,
|
160
|
-
ReferralId referralId
|
161
|
-
|
162
|
-
|
148
|
+
ReferralId referralId,
|
149
|
+
bytes memory applicationData
|
150
|
+
)
|
151
|
+
internal
|
152
|
+
returns (NftId applicationNftId)
|
153
|
+
{
|
154
|
+
return _getProductStorage()._applicationService.create(
|
163
155
|
applicationOwner,
|
164
156
|
riskId,
|
165
157
|
sumInsuredAmount,
|
166
158
|
lifetime,
|
167
|
-
applicationData,
|
168
159
|
bundleNftId,
|
169
|
-
referralId
|
160
|
+
referralId,
|
161
|
+
applicationData
|
170
162
|
);
|
171
163
|
}
|
172
164
|
|
173
|
-
function
|
165
|
+
function _collateralize(
|
174
166
|
NftId policyNftId,
|
175
167
|
bool requirePremiumPayment,
|
176
168
|
Timestamp activateAt
|
177
169
|
)
|
178
170
|
internal
|
179
171
|
{
|
180
|
-
_policyService.
|
172
|
+
_getProductStorage()._policyService.collateralize(
|
181
173
|
policyNftId,
|
182
174
|
requirePremiumPayment,
|
183
175
|
activateAt);
|
@@ -189,7 +181,7 @@ abstract contract Product is Component, IProductComponent {
|
|
189
181
|
)
|
190
182
|
internal
|
191
183
|
{
|
192
|
-
_policyService.collectPremium(
|
184
|
+
_getProductStorage()._policyService.collectPremium(
|
193
185
|
policyNftId,
|
194
186
|
activateAt);
|
195
187
|
}
|
@@ -200,7 +192,7 @@ abstract contract Product is Component, IProductComponent {
|
|
200
192
|
)
|
201
193
|
internal
|
202
194
|
{
|
203
|
-
_policyService.activate(
|
195
|
+
_getProductStorage()._policyService.activate(
|
204
196
|
policyNftId,
|
205
197
|
activateAt);
|
206
198
|
}
|
@@ -210,28 +202,137 @@ abstract contract Product is Component, IProductComponent {
|
|
210
202
|
)
|
211
203
|
internal
|
212
204
|
{
|
213
|
-
_policyService.close(
|
205
|
+
_getProductStorage()._policyService.close(
|
206
|
+
policyNftId);
|
214
207
|
}
|
215
208
|
|
216
|
-
function
|
217
|
-
|
209
|
+
function _submitClaim(
|
210
|
+
NftId policyNftId,
|
211
|
+
Amount claimAmount,
|
212
|
+
bytes memory claimData
|
213
|
+
)
|
214
|
+
internal
|
215
|
+
returns(ClaimId)
|
216
|
+
{
|
217
|
+
return _getProductStorage()._claimService.submit(
|
218
|
+
policyNftId,
|
219
|
+
claimAmount,
|
220
|
+
claimData);
|
218
221
|
}
|
219
222
|
|
220
|
-
function
|
221
|
-
|
223
|
+
function _confirmClaim(
|
224
|
+
NftId policyNftId,
|
225
|
+
ClaimId claimId,
|
226
|
+
Amount confirmedAmount
|
227
|
+
)
|
228
|
+
internal
|
229
|
+
{
|
230
|
+
_getProductStorage()._claimService.confirm(
|
231
|
+
policyNftId,
|
232
|
+
claimId,
|
233
|
+
confirmedAmount);
|
222
234
|
}
|
223
235
|
|
224
|
-
|
225
|
-
|
226
|
-
|
227
|
-
|
236
|
+
function _declineClaim(
|
237
|
+
NftId policyNftId,
|
238
|
+
ClaimId claimId
|
239
|
+
)
|
240
|
+
internal
|
241
|
+
{
|
242
|
+
_getProductStorage()._claimService.decline(
|
243
|
+
policyNftId,
|
244
|
+
claimId);
|
245
|
+
}
|
246
|
+
|
247
|
+
function _closeClaim(
|
248
|
+
NftId policyNftId,
|
249
|
+
ClaimId claimId
|
250
|
+
)
|
251
|
+
internal
|
252
|
+
{
|
253
|
+
_getProductStorage()._claimService.close(
|
254
|
+
policyNftId,
|
255
|
+
claimId);
|
256
|
+
}
|
257
|
+
|
258
|
+
function _createPayout(
|
259
|
+
NftId policyNftId,
|
260
|
+
ClaimId claimId,
|
261
|
+
Amount amount,
|
262
|
+
bytes memory data
|
263
|
+
)
|
264
|
+
internal
|
265
|
+
returns (PayoutId)
|
266
|
+
{
|
267
|
+
return _getProductStorage()._claimService.createPayout(
|
268
|
+
policyNftId,
|
269
|
+
claimId,
|
270
|
+
amount,
|
271
|
+
data);
|
272
|
+
}
|
273
|
+
|
274
|
+
function _processPayout(
|
275
|
+
NftId policyNftId,
|
276
|
+
PayoutId payoutId
|
277
|
+
)
|
278
|
+
internal
|
279
|
+
{
|
280
|
+
_getProductStorage()._claimService.processPayout(
|
281
|
+
policyNftId,
|
282
|
+
payoutId);
|
283
|
+
}
|
284
|
+
|
285
|
+
function calculatePremium(
|
286
|
+
Amount sumInsuredAmount,
|
287
|
+
RiskId riskId,
|
288
|
+
Seconds lifetime,
|
289
|
+
bytes memory applicationData,
|
290
|
+
NftId bundleNftId,
|
291
|
+
ReferralId referralId
|
292
|
+
)
|
293
|
+
external
|
294
|
+
view
|
295
|
+
override
|
296
|
+
returns (Amount premiumAmount)
|
297
|
+
{
|
298
|
+
IPolicy.Premium memory premium = _getProductStorage()._pricingService.calculatePremium(
|
299
|
+
getNftId(),
|
300
|
+
riskId,
|
301
|
+
sumInsuredAmount,
|
302
|
+
lifetime,
|
303
|
+
applicationData,
|
304
|
+
bundleNftId,
|
305
|
+
referralId
|
306
|
+
);
|
307
|
+
|
308
|
+
return AmountLib.toAmount(premium.premiumAmount);
|
309
|
+
}
|
310
|
+
|
311
|
+
function calculateNetPremium(
|
312
|
+
Amount sumInsuredAmount,
|
313
|
+
RiskId riskId,
|
314
|
+
Seconds lifetime,
|
315
|
+
bytes memory applicationData
|
228
316
|
)
|
229
317
|
external
|
230
|
-
|
231
|
-
|
232
|
-
|
318
|
+
view
|
319
|
+
virtual override
|
320
|
+
returns (Amount netPremiumAmount)
|
233
321
|
{
|
234
|
-
|
322
|
+
// default 10% of sum insured
|
323
|
+
return AmountLib.toAmount(sumInsuredAmount.toInt() / 10);
|
324
|
+
}
|
325
|
+
|
326
|
+
function _toRiskId(string memory riskName) internal pure returns (RiskId riskId) {
|
327
|
+
return RiskIdLib.toRiskId(riskName);
|
328
|
+
}
|
329
|
+
|
330
|
+
function getPoolNftId() external view override returns (NftId poolNftId) {
|
331
|
+
return getRegistry().getNftId(address(_getProductStorage()._pool));
|
332
|
+
}
|
333
|
+
|
334
|
+
function getDistributionNftId() external view override returns (NftId distributionNftId) {
|
335
|
+
return getRegistry().getNftId(address(_getProductStorage()._distribution));
|
235
336
|
}
|
236
337
|
|
237
338
|
function getSetupInfo() public view returns (ISetup.ProductSetupInfo memory setupInfo) {
|
@@ -245,22 +346,30 @@ abstract contract Product is Component, IProductComponent {
|
|
245
346
|
}
|
246
347
|
|
247
348
|
function _getInitialSetupInfo() internal view returns (ISetup.ProductSetupInfo memory setupInfo) {
|
248
|
-
|
249
|
-
|
349
|
+
ProductStorage storage $ = _getProductStorage();
|
350
|
+
|
351
|
+
ISetup.DistributionSetupInfo memory distributionSetupInfo = $._distribution.getSetupInfo();
|
352
|
+
IComponents.PoolInfo memory poolInfo = $._pool.getPoolInfo();
|
250
353
|
|
251
354
|
return ISetup.ProductSetupInfo(
|
252
355
|
getToken(),
|
253
|
-
_tokenHandler,
|
254
|
-
_distributionNftId,
|
255
|
-
_poolNftId,
|
256
|
-
|
257
|
-
|
258
|
-
_initialProcessingFee,
|
259
|
-
poolSetupInfo.poolFee,
|
260
|
-
poolSetupInfo.stakingFee,
|
261
|
-
poolSetupInfo.performanceFee,
|
356
|
+
$._tokenHandler,
|
357
|
+
$._distributionNftId,
|
358
|
+
$._poolNftId,
|
359
|
+
$._initialProductFee,
|
360
|
+
$._initialProcessingFee,
|
262
361
|
false,
|
263
362
|
getWallet()
|
264
363
|
);
|
265
364
|
}
|
266
|
-
|
365
|
+
|
366
|
+
function _getProductStorage() private pure returns (ProductStorage storage $) {
|
367
|
+
assembly {
|
368
|
+
$.slot := PRODUCT_STORAGE_LOCATION_V1
|
369
|
+
}
|
370
|
+
}
|
371
|
+
|
372
|
+
function _getProductService() internal view returns (IProductService) {
|
373
|
+
return _getProductStorage()._productService;
|
374
|
+
}
|
375
|
+
}
|
@@ -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,9 +33,8 @@ contract BundleManager is
|
|
32
33
|
|
33
34
|
mapping(NftId bundleNftId => LibNftIdSet.Set policies) internal _activePolicies;
|
34
35
|
|
35
|
-
/// @dev links a policy
|
36
|
-
// to link a policy it MUST NOT yet have been
|
37
|
-
// 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
|
38
38
|
function linkPolicy(NftId policyNftId) external restricted() {
|
39
39
|
NftId bundleNftId = _instance.getInstanceReader().getPolicyInfo(policyNftId).bundleNftId;
|
40
40
|
// decision will likely depend on the decision what to check here and what in the service
|
@@ -42,7 +42,7 @@ contract BundleManager is
|
|
42
42
|
|
43
43
|
// ensure bundle is unlocked (in active set) and registered with this instance
|
44
44
|
if (!_isActive(poolNftId, bundleNftId)) {
|
45
|
-
revert
|
45
|
+
revert ErrorBundleManagerBundleLocked(bundleNftId, policyNftId);
|
46
46
|
}
|
47
47
|
|
48
48
|
LibNftIdSet.add(_activePolicies[bundleNftId], policyNftId);
|
@@ -71,7 +71,7 @@ contract BundleManager is
|
|
71
71
|
}
|
72
72
|
|
73
73
|
|
74
|
-
/// @dev add a new bundle to a
|
74
|
+
/// @dev add a new bundle to a pool registerd with this instance
|
75
75
|
// the corresponding pool is fetched via instance reader
|
76
76
|
function add(NftId bundleNftId) external restricted() {
|
77
77
|
NftId poolNftId = _instance.getInstanceReader().getBundleInfo(bundleNftId).poolNftId;
|
@@ -85,14 +85,15 @@ contract BundleManager is
|
|
85
85
|
emit LogBundleManagerBundleAdded(poolNftId, bundleNftId);
|
86
86
|
}
|
87
87
|
|
88
|
-
|
88
|
+
|
89
|
+
/// @dev unlocked (active) bundles are available to collateralize new policies
|
89
90
|
function unlock(NftId bundleNftId) external restricted() {
|
90
91
|
NftId poolNftId = _instance.getInstanceReader().getBundleInfo(bundleNftId).poolNftId;
|
91
92
|
_activate(poolNftId, bundleNftId);
|
92
93
|
emit LogBundleManagerBundleUnlocked(poolNftId, bundleNftId);
|
93
94
|
}
|
94
95
|
|
95
|
-
/// @dev locked (deactivated) bundles may not
|
96
|
+
/// @dev locked (deactivated) bundles may not collateralize any new policies
|
96
97
|
function lock(NftId bundleNftId) external restricted() {
|
97
98
|
NftId poolNftId = _instance.getInstanceReader().getBundleInfo(bundleNftId).poolNftId;
|
98
99
|
_deactivate(poolNftId, bundleNftId);
|
@@ -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
|
@@ -3,38 +3,65 @@ pragma solidity ^0.8.20;
|
|
3
3
|
|
4
4
|
import {IAccessManaged} from "@openzeppelin/contracts/access/manager/IAccessManaged.sol";
|
5
5
|
|
6
|
+
import {ClaimId} from "../types/ClaimId.sol";
|
7
|
+
import {DistributorType} from "../types/DistributorType.sol";
|
8
|
+
import {PayoutId} from "../types/PayoutId.sol";
|
6
9
|
import {NftId} from "../types/NftId.sol";
|
7
10
|
import {StateId} from "../types/StateId.sol";
|
11
|
+
import {ReferralId} from "../types/Referral.sol";
|
8
12
|
import {RiskId} from "../types/RiskId.sol";
|
13
|
+
import {VersionPart} from "../types/Version.sol";
|
14
|
+
import {Key32} from "../types/Key32.sol";
|
15
|
+
import {RoleId} from "../types/RoleId.sol";
|
9
16
|
|
10
17
|
import {IRegisterable} from "../shared/IRegisterable.sol";
|
11
18
|
|
19
|
+
import {ITransferInterceptor} from "../registry/ITransferInterceptor.sol";
|
20
|
+
|
12
21
|
import {InstanceAccessManager} from "./InstanceAccessManager.sol";
|
13
22
|
import {BundleManager} from "./BundleManager.sol";
|
14
23
|
import {InstanceReader} from "./InstanceReader.sol";
|
24
|
+
import {InstanceStore} from "./InstanceStore.sol";
|
25
|
+
|
26
|
+
import {IKeyValueStore} from "./base/IKeyValueStore.sol";
|
27
|
+
|
28
|
+
import {IAccess} from "./module/IAccess.sol";
|
15
29
|
|
16
|
-
import {IBundle} from "./module/IBundle.sol";
|
17
30
|
import {IBundleService} from "./service/IBundleService.sol";
|
18
31
|
import {IDistributionService} from "./service/IDistributionService.sol";
|
19
|
-
import {InstanceAccessManager} from "./InstanceAccessManager.sol";
|
20
|
-
import {IKeyValueStore} from "./base/IKeyValueStore.sol";
|
21
|
-
import {IPolicy} from "./module/IPolicy.sol";
|
22
32
|
import {IPolicyService} from "./service/IPolicyService.sol";
|
23
33
|
import {IPoolService} from "./service/IPoolService.sol";
|
24
34
|
import {IProductService} from "./service/IProductService.sol";
|
25
35
|
import {IPolicyService} from "./service/IPolicyService.sol";
|
26
36
|
import {IBundleService} from "./service/IBundleService.sol";
|
27
|
-
import {IRisk} from "./module/IRisk.sol";
|
28
|
-
import {ISetup} from "./module/ISetup.sol";
|
29
|
-
import {NftId} from "../types/NftId.sol";
|
30
|
-
import {RiskId} from "../types/RiskId.sol";
|
31
|
-
import {StateId} from "../types/StateId.sol";
|
32
|
-
import {VersionPart} from "../types/Version.sol";
|
33
37
|
|
34
38
|
|
35
39
|
|
40
|
+
interface IInstance is
|
41
|
+
IRegisterable,
|
42
|
+
ITransferInterceptor,
|
43
|
+
IAccessManaged
|
44
|
+
{
|
45
|
+
error ErrorInstanceInstanceAccessManagerZero();
|
46
|
+
error ErrorInstanceInstanceAccessManagerAlreadySet(address instanceAccessManager);
|
47
|
+
error ErrorInstanceInstanceAccessManagerAuthorityMismatch(address instanceAuthority);
|
36
48
|
|
37
|
-
|
49
|
+
error ErrorInstanceBundleManagerAlreadySet(address instanceBundleManager);
|
50
|
+
error ErrorInstanceBundleManagerInstanceMismatch(address instance);
|
51
|
+
error ErrorInstanceBundleManagerAuthorityMismatch(address instanceAuthority);
|
52
|
+
|
53
|
+
error ErrorInstanceInstanceReaderInstanceMismatch(address instanceAuthority);
|
54
|
+
|
55
|
+
error ErrorInstanceInstanceStoreAlreadySet(address instanceStore);
|
56
|
+
error ErrorInstanceInstanceStoreAuthorityMismatch(address instanceAuthority);
|
57
|
+
|
58
|
+
function createRole(string memory roleName, string memory adminName) external returns (RoleId roleId, RoleId admin);
|
59
|
+
function grantRole(RoleId roleId, address account) external;
|
60
|
+
function revokeRole(RoleId roleId, address account) external;
|
61
|
+
|
62
|
+
function createTarget(address target, string memory name) external;
|
63
|
+
function setTargetFunctionRole(string memory targetName, bytes4[] calldata selectors, RoleId roleId) external;
|
64
|
+
function setTargetLocked(address target, bool locked) external;
|
38
65
|
|
39
66
|
function getDistributionService() external view returns (IDistributionService);
|
40
67
|
function getProductService() external view returns (IProductService);
|
@@ -42,31 +69,9 @@ interface IInstance is IRegisterable, IKeyValueStore, IAccessManaged {
|
|
42
69
|
function getPolicyService() external view returns (IPolicyService);
|
43
70
|
function getBundleService() external view returns (IBundleService);
|
44
71
|
|
45
|
-
function createDistributionSetup(NftId distributionNftId, ISetup.DistributionSetupInfo memory setup) external;
|
46
|
-
function updateDistributionSetup(NftId distributionNftId, ISetup.DistributionSetupInfo memory setup, StateId newState) external;
|
47
|
-
function updateDistributionSetupState(NftId distributionNftId, StateId newState) external;
|
48
|
-
|
49
|
-
function createPoolSetup(NftId poolNftId, ISetup.PoolSetupInfo memory setup) external;
|
50
|
-
function updatePoolSetup(NftId poolNftId, ISetup.PoolSetupInfo memory setup, StateId newState) external;
|
51
|
-
function updatePoolSetupState(NftId poolNftId, StateId newState) external;
|
52
|
-
|
53
|
-
function createBundle(NftId bundleNftId, IBundle.BundleInfo memory bundle) external;
|
54
|
-
function updateBundle(NftId bundleNftId, IBundle.BundleInfo memory bundle, StateId newState) external;
|
55
|
-
function updateBundleState(NftId bundleNftId, StateId newState) external;
|
56
|
-
|
57
|
-
function createProductSetup(NftId productNftId, ISetup.ProductSetupInfo memory setup) external;
|
58
|
-
function updateProductSetup(NftId productNftId, ISetup.ProductSetupInfo memory setup, StateId newState) external;
|
59
|
-
function updateProductSetupState(NftId productNftId, StateId newState) external;
|
60
|
-
|
61
|
-
function createRisk(RiskId riskId, IRisk.RiskInfo memory risk) external;
|
62
|
-
function updateRisk(RiskId riskId, IRisk.RiskInfo memory risk, StateId newState) external;
|
63
|
-
function updateRiskState(RiskId riskId, StateId newState) external;
|
64
|
-
|
65
|
-
function createPolicy(NftId policyNftId, IPolicy.PolicyInfo memory policy) external;
|
66
|
-
function updatePolicy(NftId policyNftId, IPolicy.PolicyInfo memory policy, StateId newState) external;
|
67
|
-
function updatePolicyState(NftId policyNftId, StateId newState) external;
|
68
|
-
|
69
72
|
function getMajorVersion() external pure returns (VersionPart majorVersion);
|
70
73
|
function getInstanceReader() external view returns (InstanceReader);
|
71
74
|
function getBundleManager() external view returns (BundleManager);
|
75
|
+
function getInstanceAccessManager() external view returns (InstanceAccessManager);
|
76
|
+
function getInstanceStore() external view returns (InstanceStore);
|
72
77
|
}
|