@etherisc/gif-next 0.0.2-eb1b869-461 → 0.0.2-eb98db7-932
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 +403 -8
- package/artifacts/contracts/components/Component.sol/Component.dbg.json +1 -1
- package/artifacts/contracts/components/Component.sol/Component.json +683 -35
- package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +4 -0
- package/artifacts/contracts/components/Distribution.sol/Distribution.json +1346 -0
- package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +4 -0
- package/artifacts/contracts/{registry/IChainNft.sol/IChainNft.json → components/IComponent.sol/IComponent.json} +284 -223
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +900 -0
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +887 -0
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +4 -0
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +806 -0
- package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/components/Pool.sol/Pool.json +1140 -146
- package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/components/Product.sol/Product.json +1056 -156
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +4 -0
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +764 -0
- package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +4 -0
- package/artifacts/contracts/instance/Cloneable.sol/Cloneable.json +185 -0
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +1779 -774
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +4 -0
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +498 -0
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +2514 -851
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +984 -0
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1386 -0
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +1035 -0
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +693 -0
- package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +4 -0
- package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +261 -0
- package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.dbg.json +4 -0
- package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.json +541 -0
- package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
- package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.json +429 -0
- package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +4 -0
- package/artifacts/contracts/instance/{lifecycle/ILifecycle.sol/ILifecycleModule.json → base/ILifecycle.sol/ILifecycle.json} +10 -77
- package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
- package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +502 -0
- package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +4 -0
- package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +169 -0
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +4 -0
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +254 -0
- package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +4 -0
- package/artifacts/contracts/instance/{access/IAccess.sol/IAccess.json → module/IBundle.sol/IBundle.json} +2 -2
- package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +4 -0
- package/artifacts/contracts/instance/{component/IComponent.sol/IComponent.json → module/IDistribution.sol/IDistribution.json} +2 -2
- package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +4 -0
- package/artifacts/contracts/instance/{policy → module}/IPolicy.sol/IPolicy.json +1 -1
- package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +4 -0
- package/artifacts/contracts/instance/{pool/IPoolModule.sol/IPool.json → module/IRisk.sol/IRisk.json} +2 -2
- package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +4 -0
- package/artifacts/contracts/instance/module/ISetup.sol/ISetup.json +10 -0
- package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +4 -0
- package/artifacts/contracts/instance/{treasury → module}/ITreasury.sol/ITreasury.json +1 -1
- package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.json +858 -0
- package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.json +657 -0
- package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +1085 -0
- package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +661 -0
- package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.json +743 -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 +4 -0
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +1087 -0
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +729 -0
- package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.json +462 -0
- package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.json +622 -0
- package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.json +398 -0
- package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +520 -0
- package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.json +572 -0
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +336 -0
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +373 -0
- package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +1109 -0
- package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +717 -0
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +716 -0
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +649 -0
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +766 -0
- package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +649 -0
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +239 -2
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +578 -29
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +4 -0
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +879 -0
- package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +4 -0
- package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +34 -0
- package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
- package/artifacts/contracts/registry/Registry.sol/Registry.json +651 -68
- 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 +4 -0
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +1166 -0
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +4 -0
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +670 -0
- 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 +4 -0
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +498 -0
- package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +4 -0
- package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +107 -0
- package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +4 -0
- package/artifacts/contracts/shared/ERC165.sol/ERC165.json +73 -0
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +4 -0
- package/artifacts/contracts/{registry/Registry.sol/Registerable.json → shared/INftOwnable.sol/INftOwnable.json} +46 -74
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
- package/artifacts/contracts/{instance/product/IProductService.sol/IProductService.json → shared/IPolicyHolder.sol/IPolicyHolder.json} +68 -66
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +4 -0
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +188 -0
- package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
- package/artifacts/contracts/{registry/IRegistry.sol → shared/IRegistryLinked.sol}/IRegistryLinked.json +18 -19
- package/artifacts/contracts/shared/IService.sol/IService.dbg.json +4 -0
- package/artifacts/contracts/{components/IPool.sol/IPoolComponent.json → shared/IService.sol/IService.json} +120 -117
- package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +4 -0
- package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +55 -0
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +4 -0
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +251 -0
- 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 +4 -0
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +582 -0
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +4 -0
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +352 -0
- 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 +4 -0
- package/artifacts/contracts/shared/Service.sol/Service.json +414 -0
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +4 -0
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +96 -0
- package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
- package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
- package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +4 -0
- package/artifacts/contracts/shared/Versionable.sol/Versionable.json +78 -0
- package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +4 -0
- package/artifacts/contracts/test/TestFee.sol/TestFee.json +119 -0
- package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +4 -0
- package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +383 -0
- package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +4 -0
- package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +116 -0
- package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +4 -0
- package/artifacts/contracts/test/TestService.sol/TestService.json +510 -0
- package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +4 -0
- package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +376 -0
- package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +4 -0
- package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +218 -0
- package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +4 -0
- package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +104 -0
- package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +4 -0
- package/artifacts/contracts/test/Usdc.sol/USDC.json +376 -0
- package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +4 -0
- package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.json +10 -0
- package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
- 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 +4 -0
- package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +104 -0
- package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +4 -0
- package/artifacts/contracts/types/Fee.sol/FeeLib.json +257 -0
- package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +4 -0
- package/artifacts/contracts/types/Key32.sol/Key32Lib.json +125 -0
- package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/NftId.sol/NftIdLib.json +65 -4
- package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
- package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +33 -0
- package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +4 -0
- package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +100 -0
- 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 +4 -0
- package/artifacts/contracts/types/Referral.sol/ReferralLib.json +123 -0
- package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +4 -0
- package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +86 -0
- package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +4 -0
- package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +156 -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 +77 -2
- package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +4 -0
- package/artifacts/contracts/{experiment/types/TypeB.sol/TypeBLib.json → types/UFixed.sol/MathLib.json} +4 -4
- package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +4 -0
- package/artifacts/contracts/types/UFixed.sol/UFixedLib.json +479 -0
- package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +4 -0
- package/artifacts/contracts/types/Version.sol/VersionLib.json +177 -0
- package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +4 -0
- package/artifacts/contracts/types/Version.sol/VersionPartLib.json +49 -0
- package/contracts/components/Component.sol +211 -47
- package/contracts/components/Distribution.sol +287 -0
- package/contracts/components/IComponent.sol +54 -0
- package/contracts/components/IDistributionComponent.sol +92 -0
- package/contracts/components/IPoolComponent.sol +87 -0
- package/contracts/components/IProductComponent.sol +39 -0
- package/contracts/components/Pool.sol +229 -27
- package/contracts/components/Product.sol +243 -47
- package/contracts/instance/BundleManager.sol +125 -0
- package/contracts/instance/Cloneable.sol +46 -0
- package/contracts/instance/IInstance.sol +91 -24
- package/contracts/instance/IInstanceService.sol +59 -0
- package/contracts/instance/Instance.sol +270 -51
- package/contracts/instance/InstanceAccessManager.sol +297 -0
- package/contracts/instance/InstanceReader.sol +293 -0
- package/contracts/instance/InstanceService.sol +476 -0
- package/contracts/instance/InstanceServiceManager.sol +54 -0
- package/contracts/instance/ObjectManager.sol +84 -0
- package/contracts/instance/base/ComponentService.sol +134 -0
- package/contracts/instance/base/IKeyValueStore.sol +49 -0
- package/contracts/instance/base/ILifecycle.sol +30 -0
- package/contracts/instance/base/KeyValueStore.sol +172 -0
- package/contracts/instance/base/Lifecycle.sol +100 -0
- package/contracts/instance/module/IAccess.sol +47 -0
- package/contracts/instance/module/IBundle.sol +20 -0
- package/contracts/instance/module/IDistribution.sol +40 -0
- package/contracts/instance/module/IPolicy.sol +47 -0
- package/contracts/instance/module/IRisk.sol +11 -0
- package/contracts/instance/module/ISetup.sol +48 -0
- package/contracts/instance/module/ITreasury.sol +23 -0
- package/contracts/instance/service/ApplicationService.sol +268 -0
- package/contracts/instance/service/ApplicationServiceManager.sol +35 -0
- package/contracts/instance/service/BundleService.sol +298 -0
- package/contracts/instance/service/BundleServiceManager.sol +51 -0
- package/contracts/instance/service/ClaimService.sol +151 -0
- package/contracts/instance/service/ClaimServiceManager.sol +35 -0
- package/contracts/instance/service/DistributionService.sol +346 -0
- package/contracts/instance/service/DistributionServiceManager.sol +51 -0
- package/contracts/instance/service/IApplicationService.sol +82 -0
- package/contracts/instance/service/IBundleService.sol +54 -0
- package/contracts/instance/service/IClaimService.sol +61 -0
- package/contracts/instance/service/IDistributionService.sol +73 -0
- package/contracts/instance/service/IPolicyService.sol +89 -0
- package/contracts/instance/service/IPoolService.sol +20 -0
- package/contracts/instance/service/IProductService.sol +40 -0
- package/contracts/instance/service/PolicyService.sol +476 -0
- package/contracts/instance/service/PolicyServiceManager.sol +54 -0
- package/contracts/instance/service/PoolService.sol +109 -0
- package/contracts/instance/service/PoolServiceManager.sol +51 -0
- package/contracts/instance/service/ProductService.sol +233 -0
- package/contracts/instance/service/ProductServiceManager.sol +54 -0
- package/contracts/registry/ChainNft.sol +129 -62
- package/contracts/registry/IRegistry.sol +73 -41
- package/contracts/registry/IRegistryService.sol +67 -0
- package/contracts/registry/ITransferInterceptor.sol +6 -0
- package/contracts/registry/Registry.sol +408 -126
- package/contracts/registry/RegistryAccessManager.sol +216 -0
- package/contracts/registry/RegistryService.sol +283 -0
- package/contracts/registry/RegistryServiceManager.sol +62 -0
- package/contracts/registry/ReleaseManager.sol +322 -0
- package/contracts/registry/TokenRegistry.sol +116 -0
- package/contracts/shared/ContractDeployerLib.sol +72 -0
- package/contracts/shared/ERC165.sol +27 -0
- package/contracts/shared/INftOwnable.sol +23 -0
- package/contracts/shared/IPolicyHolder.sol +26 -0
- package/contracts/shared/IRegisterable.sol +15 -0
- package/contracts/shared/IRegistryLinked.sol +12 -0
- package/contracts/shared/IService.sol +16 -0
- package/contracts/shared/IVersionable.sol +53 -0
- package/contracts/shared/NftOwnable.sol +120 -0
- package/contracts/shared/PolicyHolder.sol +81 -0
- package/contracts/shared/ProxyManager.sol +169 -0
- package/contracts/shared/Registerable.sol +74 -0
- package/contracts/shared/RegistryLinked.sol +48 -0
- package/contracts/shared/Service.sol +58 -0
- package/contracts/shared/TokenHandler.sol +27 -0
- package/contracts/shared/UpgradableProxyWithAdmin.sol +16 -0
- package/contracts/shared/Versionable.sol +59 -0
- package/contracts/test/TestFee.sol +25 -0
- package/contracts/test/TestRegisterable.sol +18 -0
- package/contracts/test/TestRoleId.sol +14 -0
- package/contracts/test/TestService.sol +25 -0
- package/contracts/{mock/Dip.sol → test/TestToken.sol} +5 -5
- package/contracts/test/TestVersion.sol +44 -0
- package/contracts/test/TestVersionable.sol +17 -0
- package/contracts/{mock → test}/Usdc.sol +1 -1
- package/contracts/types/AddressSet.sol +58 -0
- package/contracts/types/ClaimId.sol +52 -0
- package/contracts/types/DistributorType.sol +55 -0
- package/contracts/types/Fee.sol +44 -20
- package/contracts/types/Key32.sol +50 -0
- package/contracts/types/NftId.sol +22 -1
- package/contracts/types/NftIdSet.sol +62 -0
- package/contracts/types/NumberId.sol +52 -0
- package/contracts/types/ObjectType.sol +64 -15
- package/contracts/types/PayoutId.sol +54 -0
- package/contracts/types/Referral.sol +85 -0
- package/contracts/types/RiskId.sol +43 -0
- package/contracts/types/RoleId.sol +90 -0
- package/contracts/types/StateId.sol +18 -4
- package/contracts/types/Timestamp.sol +29 -4
- package/contracts/types/UFixed.sol +138 -23
- package/contracts/types/Version.sol +107 -0
- package/package.json +11 -5
- package/artifacts/contracts/components/Component.sol/InstanceLinked.dbg.json +0 -4
- package/artifacts/contracts/components/Component.sol/InstanceLinked.json +0 -35
- package/artifacts/contracts/components/IPool.sol/IPoolComponent.dbg.json +0 -4
- package/artifacts/contracts/components/IProduct.sol/IProductComponent.dbg.json +0 -4
- package/artifacts/contracts/components/IProduct.sol/IProductComponent.json +0 -74
- package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
- package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
- package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
- package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
- package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
- package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
- package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
- package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
- package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
- package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.json +0 -37
- package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
- package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
- package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
- package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
- package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
- package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.json +0 -124
- package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
- package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
- package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
- package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
- package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
- package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
- package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
- package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
- package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
- package/artifacts/contracts/instance/access/Access.sol/AccessModule.dbg.json +0 -4
- package/artifacts/contracts/instance/access/Access.sol/AccessModule.json +0 -400
- package/artifacts/contracts/instance/access/IAccess.sol/IAccess.dbg.json +0 -4
- package/artifacts/contracts/instance/access/IAccess.sol/IAccessCheckRole.dbg.json +0 -4
- package/artifacts/contracts/instance/access/IAccess.sol/IAccessCheckRole.json +0 -35
- package/artifacts/contracts/instance/access/IAccess.sol/IAccessComponentTypeRoles.dbg.json +0 -4
- package/artifacts/contracts/instance/access/IAccess.sol/IAccessComponentTypeRoles.json +0 -50
- package/artifacts/contracts/instance/access/IAccess.sol/IAccessModule.dbg.json +0 -4
- package/artifacts/contracts/instance/access/IAccess.sol/IAccessModule.json +0 -336
- package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentModule.dbg.json +0 -4
- package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentModule.json +0 -299
- package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentOwnerService.dbg.json +0 -4
- package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentOwnerService.json +0 -202
- package/artifacts/contracts/instance/component/IComponent.sol/IComponent.dbg.json +0 -4
- package/artifacts/contracts/instance/component/IComponent.sol/IComponentContract.dbg.json +0 -4
- package/artifacts/contracts/instance/component/IComponent.sol/IComponentContract.json +0 -205
- package/artifacts/contracts/instance/component/IComponent.sol/IComponentModule.dbg.json +0 -4
- package/artifacts/contracts/instance/component/IComponent.sol/IComponentModule.json +0 -217
- package/artifacts/contracts/instance/component/IComponent.sol/IComponentOwnerService.dbg.json +0 -4
- package/artifacts/contracts/instance/component/IComponent.sol/IComponentOwnerService.json +0 -141
- package/artifacts/contracts/instance/component/IComponent.sol/IInstanceLinked.dbg.json +0 -4
- package/artifacts/contracts/instance/component/IComponent.sol/IInstanceLinked.json +0 -24
- package/artifacts/contracts/instance/lifecycle/ILifecycle.sol/ILifecycle.dbg.json +0 -4
- package/artifacts/contracts/instance/lifecycle/ILifecycle.sol/ILifecycle.json +0 -134
- package/artifacts/contracts/instance/lifecycle/ILifecycle.sol/ILifecycleModule.dbg.json +0 -4
- package/artifacts/contracts/instance/lifecycle/LifecycleModule.sol/LifecycleModule.dbg.json +0 -4
- package/artifacts/contracts/instance/lifecycle/LifecycleModule.sol/LifecycleModule.json +0 -221
- package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicy.dbg.json +0 -4
- package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicyModule.dbg.json +0 -4
- package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicyModule.json +0 -254
- package/artifacts/contracts/instance/policy/PolicyModule.sol/PolicyModule.dbg.json +0 -4
- package/artifacts/contracts/instance/policy/PolicyModule.sol/PolicyModule.json +0 -254
- package/artifacts/contracts/instance/pool/IPoolModule.sol/IPool.dbg.json +0 -4
- package/artifacts/contracts/instance/pool/IPoolModule.sol/IPoolModule.dbg.json +0 -4
- package/artifacts/contracts/instance/pool/IPoolModule.sol/IPoolModule.json +0 -129
- package/artifacts/contracts/instance/pool/PoolModule.sol/PoolModule.dbg.json +0 -4
- package/artifacts/contracts/instance/pool/PoolModule.sol/PoolModule.json +0 -155
- package/artifacts/contracts/instance/product/IProductService.sol/IProductModule.dbg.json +0 -4
- package/artifacts/contracts/instance/product/IProductService.sol/IProductModule.json +0 -75
- package/artifacts/contracts/instance/product/IProductService.sol/IProductService.dbg.json +0 -4
- package/artifacts/contracts/instance/product/ProductService.sol/ProductModule.dbg.json +0 -4
- package/artifacts/contracts/instance/product/ProductService.sol/ProductModule.json +0 -75
- package/artifacts/contracts/instance/product/ProductService.sol/ProductService.dbg.json +0 -4
- package/artifacts/contracts/instance/product/ProductService.sol/ProductService.json +0 -196
- package/artifacts/contracts/instance/treasury/ITreasury.sol/ITreasury.dbg.json +0 -4
- package/artifacts/contracts/instance/treasury/ITreasury.sol/ITreasuryModule.dbg.json +0 -4
- package/artifacts/contracts/instance/treasury/ITreasury.sol/ITreasuryModule.json +0 -490
- package/artifacts/contracts/instance/treasury/TokenHandler.sol/TokenHandler.dbg.json +0 -4
- package/artifacts/contracts/instance/treasury/TokenHandler.sol/TokenHandler.json +0 -45
- package/artifacts/contracts/instance/treasury/TreasuryModule.sol/TreasuryModule.dbg.json +0 -4
- package/artifacts/contracts/instance/treasury/TreasuryModule.sol/TreasuryModule.json +0 -490
- package/artifacts/contracts/mock/Dip.sol/DIP.dbg.json +0 -4
- package/artifacts/contracts/mock/Dip.sol/DIP.json +0 -338
- package/artifacts/contracts/mock/TestPool.sol/TestPool.dbg.json +0 -4
- package/artifacts/contracts/mock/TestPool.sol/TestPool.json +0 -294
- package/artifacts/contracts/mock/TestProduct.sol/TestProduct.dbg.json +0 -4
- package/artifacts/contracts/mock/TestProduct.sol/TestProduct.json +0 -384
- package/artifacts/contracts/mock/Usdc.sol/USDC.dbg.json +0 -4
- package/artifacts/contracts/mock/Usdc.sol/USDC.json +0 -338
- package/artifacts/contracts/registry/IChainNft.sol/IChainNft.dbg.json +0 -4
- package/artifacts/contracts/registry/IRegistry.sol/IOwnable.dbg.json +0 -4
- package/artifacts/contracts/registry/IRegistry.sol/IOwnable.json +0 -24
- package/artifacts/contracts/registry/IRegistry.sol/IRegisterable.dbg.json +0 -4
- package/artifacts/contracts/registry/IRegistry.sol/IRegisterable.json +0 -166
- package/artifacts/contracts/registry/IRegistry.sol/IRegistryLinked.dbg.json +0 -4
- package/artifacts/contracts/registry/Registry.sol/Registerable.dbg.json +0 -4
- package/artifacts/contracts/registry/Registry.sol/RegistryLinked.dbg.json +0 -4
- package/artifacts/contracts/registry/Registry.sol/RegistryLinked.json +0 -60
- package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.dbg.json +0 -4
- package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.json +0 -479
- package/contracts/components/IPool.sol +0 -15
- package/contracts/components/IProduct.sol +0 -16
- 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/README.md +0 -112
- 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/access/Access.sol +0 -165
- package/contracts/instance/access/IAccess.sol +0 -63
- package/contracts/instance/component/ComponentModule.sol +0 -274
- package/contracts/instance/component/IComponent.sol +0 -74
- package/contracts/instance/lifecycle/ILifecycle.sol +0 -47
- package/contracts/instance/lifecycle/LifecycleModule.sol +0 -88
- package/contracts/instance/policy/IPolicy.sol +0 -50
- package/contracts/instance/policy/PolicyModule.sol +0 -114
- package/contracts/instance/pool/IPoolModule.sol +0 -23
- package/contracts/instance/pool/PoolModule.sol +0 -81
- package/contracts/instance/product/IProductService.sol +0 -36
- package/contracts/instance/product/ProductService.sol +0 -136
- package/contracts/instance/treasury/ITreasury.sol +0 -91
- package/contracts/instance/treasury/TokenHandler.sol +0 -24
- package/contracts/instance/treasury/TreasuryModule.sol +0 -168
- package/contracts/mock/TestPool.sol +0 -16
- package/contracts/mock/TestProduct.sol +0 -39
- package/contracts/registry/IChainNft.sol +0 -21
@@ -1,52 +1,254 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
|
-
pragma solidity ^0.8.
|
2
|
+
pragma solidity ^0.8.20;
|
3
3
|
|
4
|
-
import {
|
5
|
-
import {
|
6
|
-
import {
|
4
|
+
import {POOL} from "../types/ObjectType.sol";
|
5
|
+
import {IPoolService} from "../instance/service/IPoolService.sol";
|
6
|
+
import {IBundleService} from "../instance/service/IBundleService.sol";
|
7
|
+
import {NftId, NftIdLib} from "../types/NftId.sol";
|
8
|
+
import {Fee, FeeLib} from "../types/Fee.sol";
|
9
|
+
import {UFixed} from "../types/UFixed.sol";
|
10
|
+
import {IPoolComponent} from "./IPoolComponent.sol";
|
7
11
|
import {Component} from "./Component.sol";
|
12
|
+
import {TokenHandler} from "../shared/TokenHandler.sol";
|
13
|
+
import {ISetup} from "../instance/module/ISetup.sol";
|
8
14
|
|
9
|
-
|
10
|
-
|
11
|
-
Fee private _performanceFee;
|
15
|
+
import {ISetup} from "../instance/module/ISetup.sol";
|
16
|
+
import {InstanceReader} from "../instance/InstanceReader.sol";
|
12
17
|
|
13
|
-
|
18
|
+
|
19
|
+
abstract contract Pool is
|
20
|
+
Component,
|
21
|
+
IPoolComponent
|
22
|
+
{
|
23
|
+
// keccak256(abi.encode(uint256(keccak256("etherisc.storage.Pool")) - 1)) & ~bytes32(uint256(0xff));
|
24
|
+
bytes32 public constant POOL_STORAGE_LOCATION_V1 = 0x25e3e51823fbfffb988e0a2744bb93722d9f3e906c07cc0a9e77884c46c58300;
|
25
|
+
|
26
|
+
struct PoolStorage {
|
27
|
+
UFixed _collateralizationLevel;
|
28
|
+
UFixed _retentionLevel;
|
29
|
+
|
30
|
+
bool _isExternallyManaged;
|
31
|
+
bool _isInterceptingBundleTransfers;
|
32
|
+
bool _isVerifyingApplications;
|
33
|
+
|
34
|
+
Fee _initialPoolFee;
|
35
|
+
Fee _initialStakingFee;
|
36
|
+
Fee _initialPerformanceFee;
|
37
|
+
|
38
|
+
TokenHandler _tokenHandler;
|
39
|
+
|
40
|
+
// may be used to interact with instance by derived contracts
|
41
|
+
IPoolService _poolService;
|
42
|
+
IBundleService _bundleService;
|
43
|
+
}
|
44
|
+
|
45
|
+
modifier onlyPoolService() {
|
46
|
+
if(msg.sender != address(_getPoolStorage()._poolService)) {
|
47
|
+
revert ErrorPoolNotPoolService(msg.sender);
|
48
|
+
}
|
49
|
+
_;
|
50
|
+
}
|
51
|
+
|
52
|
+
|
53
|
+
function initializePool(
|
14
54
|
address registry,
|
15
|
-
|
55
|
+
NftId instanceNftId,
|
56
|
+
string memory name,
|
57
|
+
// TODO refactor into tokenNftId
|
16
58
|
address token,
|
59
|
+
bool isInterceptingNftTransfers,
|
60
|
+
bool isExternallyManaging,
|
61
|
+
bool isVerifying,
|
62
|
+
UFixed collateralizationLevel,
|
63
|
+
UFixed retentionLevel,
|
64
|
+
address initialOwner,
|
65
|
+
bytes memory data
|
66
|
+
)
|
67
|
+
public
|
68
|
+
virtual
|
69
|
+
onlyInitializing()
|
70
|
+
{
|
71
|
+
initializeComponent(registry, instanceNftId, name, token, POOL(), isInterceptingNftTransfers, initialOwner, data);
|
72
|
+
|
73
|
+
PoolStorage storage $ = _getPoolStorage();
|
74
|
+
// TODO add validation
|
75
|
+
$._tokenHandler = new TokenHandler(token);
|
76
|
+
$._isExternallyManaged = isExternallyManaging;
|
77
|
+
$._isVerifyingApplications = isVerifying;
|
78
|
+
$._collateralizationLevel = collateralizationLevel;
|
79
|
+
$._retentionLevel = retentionLevel;
|
80
|
+
$._initialPoolFee = FeeLib.zeroFee();
|
81
|
+
$._initialStakingFee = FeeLib.zeroFee();
|
82
|
+
$._initialPerformanceFee = FeeLib.zeroFee();
|
83
|
+
$._poolService = getInstance().getPoolService();
|
84
|
+
$._bundleService = getInstance().getBundleService();
|
85
|
+
|
86
|
+
registerInterface(type(IPoolComponent).interfaceId);
|
87
|
+
}
|
88
|
+
|
89
|
+
/**
|
90
|
+
* @dev see {IPool.verifyApplication}.
|
91
|
+
* Default implementation that only writes a {LogUnderwrittenByPool} entry.
|
92
|
+
*/
|
93
|
+
function verifyApplication(
|
94
|
+
NftId applicationNftId,
|
95
|
+
bytes memory applicationData,
|
96
|
+
bytes memory bundleFilter,
|
97
|
+
uint256 collateralizationAmount
|
98
|
+
)
|
99
|
+
external
|
100
|
+
restricted()
|
101
|
+
virtual override
|
102
|
+
{
|
103
|
+
require(
|
104
|
+
policyMatchesBundle(applicationData, bundleFilter),
|
105
|
+
"ERROR:POL-020:POLICY_BUNDLE_MISMATCH"
|
106
|
+
);
|
107
|
+
|
108
|
+
emit LogUnderwrittenByPool(applicationNftId, collateralizationAmount, address(this));
|
109
|
+
}
|
110
|
+
|
111
|
+
|
112
|
+
function isInterceptingBundleTransfers() external view override returns (bool) {
|
113
|
+
return isNftInterceptor();
|
114
|
+
}
|
115
|
+
|
116
|
+
|
117
|
+
function isExternallyManaged() external view override returns (bool) {
|
118
|
+
return _getPoolStorage()._isExternallyManaged;
|
119
|
+
}
|
120
|
+
|
121
|
+
|
122
|
+
function getRetentionLevel() external view override returns (UFixed retentionLevel) {
|
123
|
+
return _getPoolStorage()._retentionLevel;
|
124
|
+
}
|
125
|
+
|
126
|
+
|
127
|
+
function getCollateralizationLevel() external view override returns (UFixed collateralizationLevel) {
|
128
|
+
return _getPoolStorage()._collateralizationLevel;
|
129
|
+
}
|
130
|
+
|
131
|
+
|
132
|
+
function isVerifyingApplications() external view override returns (bool isConfirmingApplication) {
|
133
|
+
return _getPoolStorage()._isVerifyingApplications;
|
134
|
+
}
|
135
|
+
|
136
|
+
|
137
|
+
/// @dev see {IPoolComponent.policyMatchesBundle}.
|
138
|
+
/// Default implementation always returns true
|
139
|
+
function policyMatchesBundle(
|
140
|
+
bytes memory, // policyData
|
141
|
+
bytes memory // bundleFilter
|
142
|
+
)
|
143
|
+
public
|
144
|
+
pure
|
145
|
+
virtual override
|
146
|
+
returns (bool isMatching)
|
147
|
+
{
|
148
|
+
return true;
|
149
|
+
}
|
150
|
+
|
151
|
+
|
152
|
+
function setFees(
|
153
|
+
Fee memory poolFee,
|
17
154
|
Fee memory stakingFee,
|
18
155
|
Fee memory performanceFee
|
19
|
-
)
|
20
|
-
|
21
|
-
|
156
|
+
)
|
157
|
+
external
|
158
|
+
onlyOwner
|
159
|
+
restricted()
|
160
|
+
override
|
161
|
+
{
|
162
|
+
_getPoolStorage()._poolService.setFees(poolFee, stakingFee, performanceFee);
|
22
163
|
}
|
23
164
|
|
24
|
-
|
25
|
-
|
165
|
+
function setBundleFee(
|
166
|
+
NftId bundleNftId,
|
167
|
+
Fee memory fee
|
168
|
+
)
|
26
169
|
external
|
27
|
-
view
|
28
170
|
override
|
29
|
-
|
171
|
+
// TODO add onlyBundleOwner
|
30
172
|
{
|
31
|
-
|
173
|
+
_getPoolStorage()._bundleService.setBundleFee(bundleNftId, fee);
|
32
174
|
}
|
33
175
|
|
34
|
-
function
|
176
|
+
function lockBundle(
|
177
|
+
NftId bundleNftId
|
178
|
+
)
|
35
179
|
external
|
36
|
-
view
|
37
180
|
override
|
38
|
-
|
181
|
+
// TODO add onlyBundleOwner
|
39
182
|
{
|
40
|
-
|
183
|
+
_getPoolStorage()._bundleService.lockBundle(bundleNftId);
|
184
|
+
}
|
185
|
+
|
186
|
+
function unlockBundle(
|
187
|
+
NftId bundleNftId
|
188
|
+
)
|
189
|
+
external
|
190
|
+
override
|
191
|
+
// TODO add onlyBundleOwner
|
192
|
+
{
|
193
|
+
_getPoolStorage()._bundleService.unlockBundle(bundleNftId);
|
194
|
+
}
|
195
|
+
|
196
|
+
function getSetupInfo() public view returns (ISetup.PoolSetupInfo memory setupInfo) {
|
197
|
+
InstanceReader reader = getInstance().getInstanceReader();
|
198
|
+
setupInfo = reader.getPoolSetupInfo(getNftId());
|
199
|
+
|
200
|
+
// fallback to initial setup info (wallet is always != address(0))
|
201
|
+
if(setupInfo.wallet == address(0)) {
|
202
|
+
setupInfo = _getInitialSetupInfo();
|
203
|
+
}
|
204
|
+
}
|
205
|
+
|
206
|
+
function _getInitialSetupInfo() internal view returns (ISetup.PoolSetupInfo memory) {
|
207
|
+
PoolStorage storage $ = _getPoolStorage();
|
208
|
+
return ISetup.PoolSetupInfo(
|
209
|
+
getProductNftId(),
|
210
|
+
$._tokenHandler,
|
211
|
+
isNftInterceptor(),
|
212
|
+
$._isExternallyManaged,
|
213
|
+
$._isVerifyingApplications,
|
214
|
+
$._collateralizationLevel,
|
215
|
+
$._retentionLevel,
|
216
|
+
$._initialPoolFee,
|
217
|
+
$._initialStakingFee,
|
218
|
+
$._initialPerformanceFee,
|
219
|
+
getWallet()
|
220
|
+
);
|
221
|
+
}
|
222
|
+
|
223
|
+
// Internals
|
224
|
+
|
225
|
+
function _createBundle(
|
226
|
+
address bundleOwner,
|
227
|
+
Fee memory fee,
|
228
|
+
uint256 amount,
|
229
|
+
uint256 lifetime,
|
230
|
+
bytes memory filter
|
231
|
+
)
|
232
|
+
internal
|
233
|
+
returns(NftId bundleNftId)
|
234
|
+
{
|
235
|
+
bundleNftId = _getPoolStorage()._bundleService.createBundle(
|
236
|
+
bundleOwner,
|
237
|
+
fee,
|
238
|
+
amount,
|
239
|
+
lifetime,
|
240
|
+
filter);
|
241
|
+
|
242
|
+
// TODO add logging
|
41
243
|
}
|
42
244
|
|
43
|
-
|
44
|
-
|
45
|
-
return POOL();
|
245
|
+
function getContractLocation(bytes memory name) external pure returns (bytes32 hash) {
|
246
|
+
return keccak256(abi.encode(uint256(keccak256(name)) - 1)) & ~bytes32(uint256(0xff));
|
46
247
|
}
|
47
248
|
|
48
|
-
|
49
|
-
|
50
|
-
|
249
|
+
function _getPoolStorage() private pure returns (PoolStorage storage $) {
|
250
|
+
assembly {
|
251
|
+
$.slot := POOL_STORAGE_LOCATION_V1
|
252
|
+
}
|
51
253
|
}
|
52
254
|
}
|
@@ -1,89 +1,285 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
2
|
pragma solidity ^0.8.19;
|
3
3
|
|
4
|
-
import {
|
5
|
-
|
6
|
-
import {
|
7
|
-
import {
|
8
|
-
import {
|
4
|
+
import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
|
5
|
+
|
6
|
+
import {IRisk} from "../instance/module/IRisk.sol";
|
7
|
+
import {IApplicationService} from "../instance/service/IApplicationService.sol";
|
8
|
+
import {IPolicyService} from "../instance/service/IPolicyService.sol";
|
9
|
+
import {IClaimService} from "../instance/service/IClaimService.sol";
|
10
|
+
import {IProductComponent} from "./IProductComponent.sol";
|
11
|
+
import {NftId, NftIdLib} from "../types/NftId.sol";
|
12
|
+
import {PRODUCT, APPLICATION, POLICY, CLAIM } from "../types/ObjectType.sol";
|
13
|
+
import {ReferralId} from "../types/Referral.sol";
|
14
|
+
import {RiskId, RiskIdLib} from "../types/RiskId.sol";
|
15
|
+
import {StateId} from "../types/StateId.sol";
|
16
|
+
import {Timestamp} from "../types/Timestamp.sol";
|
9
17
|
import {Fee} from "../types/Fee.sol";
|
10
18
|
import {Component} from "./Component.sol";
|
11
19
|
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
20
|
+
import {TokenHandler} from "../shared/TokenHandler.sol";
|
21
|
+
|
22
|
+
import {InstanceReader} from "../instance/InstanceReader.sol";
|
23
|
+
import {ISetup} from "../instance/module/ISetup.sol";
|
24
|
+
import {Pool} from "../components/Pool.sol";
|
25
|
+
import {Distribution} from "../components/Distribution.sol";
|
26
|
+
|
27
|
+
abstract contract Product is
|
28
|
+
Component,
|
29
|
+
IProductComponent
|
30
|
+
{
|
31
|
+
// keccak256(abi.encode(uint256(keccak256("etherisc.storage.Product")) - 1)) & ~bytes32(uint256(0xff));
|
32
|
+
bytes32 public constant PRODUCT_STORAGE_LOCATION_V1 = 0x0bb7aafdb8e380f81267337bc5b5dfdf76e6d3a380ecadb51ec665246d9d6800;
|
17
33
|
|
18
|
-
|
34
|
+
struct ProductStorage {
|
35
|
+
IApplicationService _applicationService;
|
36
|
+
IPolicyService _policyService;
|
37
|
+
IClaimService _claimService;
|
38
|
+
Pool _pool;
|
39
|
+
Distribution _distribution;
|
40
|
+
Fee _initialProductFee;
|
41
|
+
Fee _initialProcessingFee;
|
42
|
+
TokenHandler _tokenHandler;
|
43
|
+
NftId _poolNftId;
|
44
|
+
NftId _distributionNftId;
|
45
|
+
}
|
46
|
+
|
47
|
+
function initializeProduct(
|
19
48
|
address registry,
|
20
|
-
|
49
|
+
NftId instanceNftId,
|
50
|
+
string memory name,
|
21
51
|
address token,
|
52
|
+
bool isInterceptor,
|
22
53
|
address pool,
|
23
|
-
|
24
|
-
Fee memory
|
25
|
-
|
54
|
+
address distribution,
|
55
|
+
Fee memory productFee,
|
56
|
+
Fee memory processingFee,
|
57
|
+
address initialOwner,
|
58
|
+
bytes memory data
|
59
|
+
)
|
60
|
+
public
|
61
|
+
virtual
|
62
|
+
onlyInitializing()
|
63
|
+
{
|
64
|
+
initializeComponent(registry, instanceNftId, name, token, PRODUCT(), isInterceptor, initialOwner, data);
|
65
|
+
|
66
|
+
ProductStorage storage $ = _getProductStorage();
|
26
67
|
// TODO add validation
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
68
|
+
// TODO refactor to go via registry
|
69
|
+
$._applicationService = IApplicationService(getServiceAddress(APPLICATION()));
|
70
|
+
$._policyService = IPolicyService(getServiceAddress(POLICY()));
|
71
|
+
$._claimService = IClaimService(getServiceAddress(CLAIM()));
|
72
|
+
$._pool = Pool(pool);
|
73
|
+
$._distribution = Distribution(distribution);
|
74
|
+
$._initialProductFee = productFee;
|
75
|
+
$._initialProcessingFee = processingFee;
|
76
|
+
$._tokenHandler = new TokenHandler(token);
|
77
|
+
$._poolNftId = getRegistry().getNftId(pool);
|
78
|
+
$._distributionNftId = getRegistry().getNftId(distribution);
|
79
|
+
|
80
|
+
registerInterface(type(IProductComponent).interfaceId);
|
81
|
+
}
|
82
|
+
|
83
|
+
|
84
|
+
function calculatePremium(
|
85
|
+
uint256 sumInsuredAmount,
|
86
|
+
RiskId riskId,
|
87
|
+
uint256 lifetime,
|
88
|
+
bytes memory applicationData,
|
89
|
+
NftId bundleNftId,
|
90
|
+
ReferralId referralId
|
91
|
+
)
|
92
|
+
external
|
93
|
+
view
|
94
|
+
override
|
95
|
+
returns (uint256 premiumAmount)
|
96
|
+
{
|
97
|
+
(premiumAmount,,,,) = _getProductStorage()._policyService.calculatePremium(
|
98
|
+
riskId,
|
99
|
+
sumInsuredAmount,
|
100
|
+
lifetime,
|
101
|
+
applicationData,
|
102
|
+
bundleNftId,
|
103
|
+
referralId
|
104
|
+
);
|
105
|
+
}
|
106
|
+
|
107
|
+
|
108
|
+
function calculateNetPremium(
|
109
|
+
uint256 sumInsuredAmount,
|
110
|
+
RiskId riskId,
|
111
|
+
uint256 lifetime,
|
112
|
+
bytes memory applicationData
|
113
|
+
)
|
114
|
+
external
|
115
|
+
view
|
116
|
+
virtual override
|
117
|
+
returns (uint256 netPremiumAmount)
|
118
|
+
{
|
119
|
+
// default 10% of sum insured
|
120
|
+
return sumInsuredAmount / 10;
|
121
|
+
}
|
122
|
+
|
123
|
+
function _toRiskId(string memory riskName) internal pure returns (RiskId riskId) {
|
124
|
+
return RiskIdLib.toRiskId(riskName);
|
125
|
+
}
|
126
|
+
|
127
|
+
function _createRisk(
|
128
|
+
RiskId id,
|
129
|
+
bytes memory data
|
130
|
+
) internal {
|
131
|
+
getProductService().createRisk(
|
132
|
+
id,
|
133
|
+
data
|
134
|
+
);
|
135
|
+
}
|
136
|
+
|
137
|
+
function _updateRisk(
|
138
|
+
RiskId id,
|
139
|
+
bytes memory data
|
140
|
+
) internal {
|
141
|
+
getProductService().updateRisk(
|
142
|
+
id,
|
143
|
+
data
|
144
|
+
);
|
145
|
+
}
|
146
|
+
|
147
|
+
function _updateRiskState(
|
148
|
+
RiskId id,
|
149
|
+
StateId state
|
150
|
+
) internal {
|
151
|
+
getProductService().updateRiskState(
|
152
|
+
id,
|
153
|
+
state
|
154
|
+
);
|
155
|
+
}
|
156
|
+
|
157
|
+
function _getRiskInfo(RiskId id) internal view returns (IRisk.RiskInfo memory info) {
|
158
|
+
return getInstance().getInstanceReader().getRiskInfo(id);
|
31
159
|
}
|
32
160
|
|
33
161
|
function _createApplication(
|
34
162
|
address applicationOwner,
|
163
|
+
RiskId riskId,
|
35
164
|
uint256 sumInsuredAmount,
|
36
|
-
uint256 premiumAmount,
|
37
165
|
uint256 lifetime,
|
38
|
-
NftId bundleNftId
|
39
|
-
|
40
|
-
|
166
|
+
NftId bundleNftId,
|
167
|
+
ReferralId referralId,
|
168
|
+
bytes memory applicationData
|
169
|
+
)
|
170
|
+
internal
|
171
|
+
returns (NftId applicationNftId)
|
172
|
+
{
|
173
|
+
return _getProductStorage()._applicationService.create(
|
41
174
|
applicationOwner,
|
175
|
+
riskId,
|
42
176
|
sumInsuredAmount,
|
43
|
-
premiumAmount,
|
44
177
|
lifetime,
|
45
|
-
bundleNftId
|
178
|
+
bundleNftId,
|
179
|
+
referralId,
|
180
|
+
applicationData
|
46
181
|
);
|
47
182
|
}
|
48
183
|
|
49
|
-
function _underwrite(
|
50
|
-
|
184
|
+
function _underwrite(
|
185
|
+
NftId policyNftId,
|
186
|
+
bool requirePremiumPayment,
|
187
|
+
Timestamp activateAt
|
188
|
+
)
|
189
|
+
internal
|
190
|
+
{
|
191
|
+
_getProductStorage()._policyService.underwrite(
|
192
|
+
policyNftId,
|
193
|
+
requirePremiumPayment,
|
194
|
+
activateAt);
|
195
|
+
}
|
196
|
+
|
197
|
+
function _collectPremium(
|
198
|
+
NftId policyNftId,
|
199
|
+
Timestamp activateAt
|
200
|
+
)
|
201
|
+
internal
|
202
|
+
{
|
203
|
+
_getProductStorage()._policyService.collectPremium(
|
204
|
+
policyNftId,
|
205
|
+
activateAt);
|
206
|
+
}
|
207
|
+
|
208
|
+
function _activate(
|
209
|
+
NftId policyNftId,
|
210
|
+
Timestamp activateAt
|
211
|
+
)
|
212
|
+
internal
|
213
|
+
{
|
214
|
+
_getProductStorage()._policyService.activate(
|
215
|
+
policyNftId,
|
216
|
+
activateAt);
|
51
217
|
}
|
52
218
|
|
53
|
-
function
|
54
|
-
|
219
|
+
function _close(
|
220
|
+
NftId policyNftId
|
221
|
+
)
|
222
|
+
internal
|
223
|
+
{
|
224
|
+
_getProductStorage()._policyService.close(policyNftId);
|
55
225
|
}
|
56
226
|
|
57
227
|
function getPoolNftId() external view override returns (NftId poolNftId) {
|
58
|
-
return
|
228
|
+
return getRegistry().getNftId(address(_getProductStorage()._pool));
|
229
|
+
}
|
230
|
+
|
231
|
+
function getDistributionNftId() external view override returns (NftId distributionNftId) {
|
232
|
+
return getRegistry().getNftId(address(_getProductStorage()._distribution));
|
59
233
|
}
|
60
234
|
|
61
235
|
// from product component
|
62
|
-
function
|
236
|
+
function setFees(
|
237
|
+
Fee memory productFee,
|
238
|
+
Fee memory processingFee
|
239
|
+
)
|
63
240
|
external
|
64
|
-
|
241
|
+
onlyOwner
|
242
|
+
restricted()
|
65
243
|
override
|
66
|
-
returns (Fee memory policyFee)
|
67
244
|
{
|
68
|
-
|
245
|
+
getProductService().setFees(productFee, processingFee);
|
69
246
|
}
|
70
247
|
|
71
|
-
function
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
248
|
+
function getSetupInfo() public view returns (ISetup.ProductSetupInfo memory setupInfo) {
|
249
|
+
InstanceReader reader = getInstance().getInstanceReader();
|
250
|
+
setupInfo = reader.getProductSetupInfo(getNftId());
|
251
|
+
|
252
|
+
// fallback to initial setup info (wallet is always != address(0))
|
253
|
+
if(setupInfo.wallet == address(0)) {
|
254
|
+
setupInfo = _getInitialSetupInfo();
|
255
|
+
}
|
78
256
|
}
|
79
257
|
|
80
|
-
|
81
|
-
|
82
|
-
|
258
|
+
function _getInitialSetupInfo() internal view returns (ISetup.ProductSetupInfo memory setupInfo) {
|
259
|
+
ProductStorage storage $ = _getProductStorage();
|
260
|
+
|
261
|
+
ISetup.DistributionSetupInfo memory distributionSetupInfo = $._distribution.getSetupInfo();
|
262
|
+
ISetup.PoolSetupInfo memory poolSetupInfo = $._pool.getSetupInfo();
|
263
|
+
|
264
|
+
return ISetup.ProductSetupInfo(
|
265
|
+
getToken(),
|
266
|
+
$._tokenHandler,
|
267
|
+
$._distributionNftId,
|
268
|
+
$._poolNftId,
|
269
|
+
distributionSetupInfo.distributionFee,
|
270
|
+
$._initialProductFee,
|
271
|
+
$._initialProcessingFee,
|
272
|
+
poolSetupInfo.poolFee,
|
273
|
+
poolSetupInfo.stakingFee,
|
274
|
+
poolSetupInfo.performanceFee,
|
275
|
+
false,
|
276
|
+
getWallet()
|
277
|
+
);
|
83
278
|
}
|
84
279
|
|
85
|
-
|
86
|
-
|
87
|
-
|
280
|
+
function _getProductStorage() private pure returns (ProductStorage storage $) {
|
281
|
+
assembly {
|
282
|
+
$.slot := PRODUCT_STORAGE_LOCATION_V1
|
283
|
+
}
|
88
284
|
}
|
89
285
|
}
|