@etherisc/gif-next 0.0.2-da77c50-824 → 0.0.2-dd8bcd0-978
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 +242 -11
- package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +1 -1
- package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.json +318 -23
- package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +4 -0
- package/artifacts/contracts/components/Distribution.sol/Distribution.json +772 -0
- package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.json +233 -23
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +152 -0
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +90 -171
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +55 -177
- package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/components/Pool.sol/Pool.json +643 -63
- package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/components/Product.sol/Product.json +648 -70
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +4 -0
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.json +66 -0
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +4 -0
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.json +24 -0
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +4 -0
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.json +42 -0
- package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +1 -1
- package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +1 -1
- package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +1 -1
- package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +1 -1
- package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +1 -1
- package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +1 -1
- package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +1 -1
- package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +1 -1
- package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +1 -1
- package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +1 -1
- package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +1 -1
- package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +2 -2
- package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +1 -1
- package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +1 -1
- package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +1 -1
- package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +2 -2
- package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +1 -1
- package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +2 -2
- package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +1 -1
- package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +1 -1
- package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +4 -0
- package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +1206 -0
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +4 -0
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +788 -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 +928 -1226
- package/artifacts/contracts/instance/IInstanceBase.sol/IInstanceBase.dbg.json +4 -0
- package/artifacts/contracts/instance/IInstanceBase.sol/IInstanceBase.json +448 -0
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +4 -0
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +587 -0
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +1938 -1191
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +1057 -0
- package/artifacts/contracts/instance/InstanceBase.sol/InstanceBase.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceBase.sol/InstanceBase.json +572 -122
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1422 -0
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +1085 -0
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +532 -0
- package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +4 -0
- package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +285 -0
- package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +4 -0
- package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.json +521 -0
- package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +4 -0
- package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +113 -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/{module/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 +243 -0
- package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +4 -0
- package/artifacts/contracts/instance/module/{bundle/IBundle.sol → IBundle.sol}/IBundle.json +1 -1
- package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +4 -0
- package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.json +10 -0
- package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +4 -0
- package/artifacts/contracts/instance/module/{policy/IPolicy.sol → IPolicy.sol}/IPolicy.json +1 -1
- package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +4 -0
- package/artifacts/contracts/instance/module/{access/IAccess.sol/IAccess.json → IRisk.sol/IRisk.json} +2 -2
- package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +4 -0
- package/artifacts/contracts/instance/module/{pool/IPoolModule.sol/IPool.json → ISetup.sol/ISetup.json} +2 -2
- package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +4 -0
- package/artifacts/contracts/instance/module/{treasury/ITreasury.sol → ITreasury.sol}/ITreasury.json +1 -1
- package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +923 -0
- package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +440 -0
- package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +393 -85
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +684 -0
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +428 -0
- package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.json +669 -0
- package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.json +182 -80
- package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/{ComponentServiceBase.sol/ComponentServiceBase.json → IDistributionService.sol/IDistributionService.json} +209 -63
- package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.json +664 -0
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +199 -76
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +207 -148
- package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +984 -0
- package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +464 -0
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +322 -103
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +428 -0
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +316 -233
- package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +420 -0
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +186 -12
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +377 -37
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +4 -0
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +947 -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 +487 -123
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +4 -0
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +1293 -0
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +4 -0
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +517 -0
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +4 -0
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +410 -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 +1 -1
- package/artifacts/contracts/shared/ERC165.sol/ERC165.json +2 -2
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +4 -0
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +127 -0
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +117 -37
- package/artifacts/contracts/shared/IService.sol/IService.dbg.json +4 -0
- package/artifacts/contracts/{instance/service → shared}/IService.sol/IService.json +180 -59
- package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
- package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +60 -19
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +4 -0
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +158 -0
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +4 -0
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +349 -0
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +190 -37
- package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.dbg.json +4 -0
- package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.json +442 -0
- package/artifacts/contracts/shared/Service.sol/Service.dbg.json +4 -0
- package/artifacts/contracts/{instance/service/ServiceBase.sol/ServiceBase.json → shared/Service.sol/Service.json} +227 -59
- 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 +1 -1
- package/artifacts/contracts/shared/Versionable.sol/Versionable.json +83 -19
- package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +1 -1
- package/artifacts/contracts/test/TestFee.sol/TestFee.json +30 -6
- package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +1 -1
- package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +204 -36
- package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +1 -1
- package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +44 -10
- package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +1 -1
- package/artifacts/contracts/test/TestService.sol/TestService.json +277 -84
- package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +1 -1
- package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +91 -53
- package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +1 -1
- package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +14 -18
- package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +1 -1
- package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +106 -50
- 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 +1 -1
- 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/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 +1 -1
- package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +26 -3
- 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/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 +15 -2
- package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +4 -0
- package/artifacts/contracts/types/UFixed.sol/MathLib.json +10 -0
- 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 +1 -1
- package/artifacts/contracts/types/Version.sol/VersionLib.json +101 -2
- package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +1 -1
- package/artifacts/contracts/types/Version.sol/VersionPartLib.json +22 -3
- package/contracts/components/BaseComponent.sol +88 -32
- package/contracts/components/Distribution.sol +163 -0
- package/contracts/components/IBaseComponent.sol +16 -3
- package/contracts/components/IDistributionComponent.sol +44 -0
- package/contracts/components/IPoolComponent.sol +19 -10
- package/contracts/components/IProductComponent.sol +25 -9
- package/contracts/components/Pool.sol +132 -35
- package/contracts/components/Product.sol +211 -36
- package/contracts/experiment/cloning/Cloner.sol +47 -0
- package/contracts/instance/AccessManagerUpgradeableInitializeable.sol +23 -0
- package/contracts/instance/BundleManager.sol +129 -0
- package/contracts/instance/Cloneable.sol +46 -0
- package/contracts/instance/IInstance.sol +53 -43
- package/contracts/instance/IInstanceBase.sol +26 -0
- package/contracts/instance/IInstanceService.sol +42 -0
- package/contracts/instance/Instance.sol +260 -46
- package/contracts/instance/InstanceAccessManager.sol +304 -0
- package/contracts/instance/InstanceBase.sol +33 -66
- package/contracts/instance/InstanceReader.sol +315 -0
- package/contracts/instance/InstanceService.sol +310 -0
- package/contracts/instance/InstanceServiceManager.sol +57 -0
- package/contracts/instance/ObjectManager.sol +101 -0
- package/contracts/instance/base/ComponentServiceBase.sol +72 -0
- package/contracts/instance/base/IInstanceBase.sol +23 -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/{module/lifecycle/LifecycleModule.sol → base/Lifecycle.sol} +51 -40
- package/contracts/instance/module/IAccess.sol +48 -0
- package/contracts/instance/module/IBundle.sol +20 -0
- package/contracts/instance/module/IDistribution.sol +39 -0
- package/contracts/instance/module/IPolicy.sol +45 -0
- package/contracts/instance/module/IRisk.sol +11 -0
- package/contracts/instance/module/ISetup.sol +46 -0
- package/contracts/instance/module/ITreasury.sol +23 -0
- package/contracts/instance/service/BundleService.sol +260 -0
- package/contracts/instance/service/BundleServiceManager.sol +54 -0
- package/contracts/instance/service/ComponentOwnerService.sol +246 -103
- package/contracts/instance/service/DistributionService.sol +118 -0
- package/contracts/instance/service/DistributionServiceManager.sol +54 -0
- package/contracts/instance/service/IBundleService.sol +45 -0
- package/contracts/instance/service/IComponentOwnerService.sol +1 -3
- package/contracts/instance/service/IDistributionService.sol +12 -0
- package/contracts/instance/service/IPolicyService.sol +87 -0
- package/contracts/instance/service/IPoolService.sol +8 -18
- package/contracts/instance/service/IProductService.sol +21 -39
- package/contracts/instance/service/PolicyService.sol +508 -0
- package/contracts/instance/service/PolicyServiceManager.sol +54 -0
- package/contracts/instance/service/PoolService.sol +89 -63
- package/contracts/instance/service/PoolServiceManager.sol +54 -0
- package/contracts/instance/service/ProductService.sol +112 -297
- package/contracts/instance/service/ProductServiceManager.sol +54 -0
- package/contracts/registry/ChainNft.sol +80 -37
- package/contracts/registry/IRegistry.sol +49 -25
- package/contracts/registry/IRegistryService.sol +50 -0
- package/contracts/registry/ITransferInterceptor.sol +6 -0
- package/contracts/registry/Registry.sol +337 -270
- package/contracts/registry/RegistryService.sol +358 -0
- package/contracts/registry/RegistryServiceManager.sol +80 -0
- package/contracts/registry/TokenRegistry.sol +111 -0
- package/contracts/shared/ContractDeployerLib.sol +72 -0
- package/contracts/shared/ERC165.sol +6 -2
- package/contracts/shared/INftOwnable.sol +22 -0
- package/contracts/shared/IRegisterable.sol +8 -15
- package/contracts/{instance/service → shared}/IService.sol +3 -3
- package/contracts/shared/IVersionable.sol +56 -12
- package/contracts/shared/NftOwnable.sol +134 -0
- package/contracts/shared/ProxyManager.sol +94 -0
- package/contracts/shared/Registerable.sol +63 -59
- package/contracts/shared/RegisterableUpgradable.sol +16 -0
- package/contracts/shared/Service.sol +55 -0
- package/contracts/shared/TokenHandler.sol +27 -0
- package/contracts/shared/UpgradableProxyWithAdmin.sol +16 -0
- package/contracts/shared/Versionable.sol +112 -57
- package/contracts/test/TestFee.sol +4 -4
- package/contracts/test/TestRegisterable.sol +5 -6
- package/contracts/test/TestRoleId.sol +2 -2
- package/contracts/test/TestService.sol +6 -17
- package/contracts/test/TestVersion.sol +4 -7
- package/contracts/test/TestVersionable.sol +2 -5
- package/contracts/test/Usdc.sol +26 -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 +16 -1
- package/contracts/types/NftIdSet.sol +26 -24
- package/contracts/types/NumberId.sol +52 -0
- package/contracts/types/ObjectType.sol +51 -14
- package/contracts/types/Referral.sol +85 -0
- package/contracts/types/RiskId.sol +43 -0
- package/contracts/types/RoleId.sol +66 -11
- package/contracts/types/StateId.sol +12 -2
- package/contracts/types/Timestamp.sol +7 -3
- package/contracts/types/UFixed.sol +144 -25
- package/contracts/types/Version.sol +42 -26
- package/package.json +4 -3
- package/artifacts/contracts/instance/IInstanceLinked.sol/IInstanceLinked.dbg.json +0 -4
- package/artifacts/contracts/instance/IInstanceLinked.sol/IInstanceLinked.json +0 -24
- package/artifacts/contracts/instance/IServiceLinked.sol/IServiceLinked.dbg.json +0 -4
- package/artifacts/contracts/instance/IServiceLinked.sol/IServiceLinked.json +0 -50
- package/artifacts/contracts/instance/module/access/Access.sol/AccessModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/access/Access.sol/AccessModule.json +0 -333
- package/artifacts/contracts/instance/module/access/IAccess.sol/IAccess.dbg.json +0 -4
- package/artifacts/contracts/instance/module/access/IAccess.sol/IAccessModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/access/IAccess.sol/IAccessModule.json +0 -333
- package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.json +0 -276
- package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundle.dbg.json +0 -4
- package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.json +0 -276
- package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.json +0 -188
- package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.dbg.json +0 -4
- package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.json +0 -10
- package/artifacts/contracts/instance/module/component/IComponent.sol/IComponentModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/component/IComponent.sol/IComponentModule.json +0 -188
- package/artifacts/contracts/instance/module/lifecycle/ILifecycle.sol/ILifecycle.dbg.json +0 -4
- package/artifacts/contracts/instance/module/lifecycle/ILifecycle.sol/ILifecycle.json +0 -134
- package/artifacts/contracts/instance/module/lifecycle/ILifecycle.sol/ILifecycleModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/lifecycle/LifecycleModule.sol/LifecycleModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/lifecycle/LifecycleModule.sol/LifecycleModule.json +0 -221
- package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicy.dbg.json +0 -4
- package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.json +0 -261
- package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.json +0 -261
- package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPool.dbg.json +0 -4
- package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.json +0 -149
- package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.json +0 -149
- package/artifacts/contracts/instance/module/product/IProductModule.sol/IProductModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/product/IProductModule.sol/IProductModule.json +0 -10
- package/artifacts/contracts/instance/module/product/ProductModule.sol/ProductModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/product/ProductModule.sol/ProductModule.json +0 -10
- package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasury.dbg.json +0 -4
- package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.json +0 -538
- package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.dbg.json +0 -4
- package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.json +0 -76
- package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.json +0 -538
- package/artifacts/contracts/instance/service/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +0 -4
- package/artifacts/contracts/instance/service/IService.sol/IService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/ServiceBase.sol/ServiceBase.dbg.json +0 -4
- package/artifacts/contracts/registry/IChainNft.sol/IChainNft.dbg.json +0 -4
- package/artifacts/contracts/registry/IChainNft.sol/IChainNft.json +0 -452
- package/artifacts/contracts/registry/IRegistryLinked.sol/IRegistryLinked.dbg.json +0 -4
- package/artifacts/contracts/registry/IRegistryLinked.sol/IRegistryLinked.json +0 -24
- package/artifacts/contracts/shared/IOwnable.sol/IOwnable.dbg.json +0 -4
- package/artifacts/contracts/shared/IOwnable.sol/IOwnable.json +0 -24
- package/artifacts/contracts/test/TestPool.sol/TestPool.dbg.json +0 -4
- package/artifacts/contracts/test/TestPool.sol/TestPool.json +0 -387
- package/artifacts/contracts/test/TestProduct.sol/TestProduct.dbg.json +0 -4
- package/artifacts/contracts/test/TestProduct.sol/TestProduct.json +0 -393
- package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.dbg.json +0 -4
- package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.json +0 -453
- package/contracts/experiment/statemachine/README.md +0 -112
- package/contracts/instance/IInstanceLinked.sol +0 -8
- package/contracts/instance/IServiceLinked.sol +0 -12
- package/contracts/instance/module/access/Access.sol +0 -149
- package/contracts/instance/module/access/IAccess.sol +0 -53
- package/contracts/instance/module/bundle/BundleModule.sol +0 -228
- package/contracts/instance/module/bundle/IBundle.sol +0 -53
- package/contracts/instance/module/component/ComponentModule.sol +0 -104
- package/contracts/instance/module/component/IComponent.sol +0 -53
- package/contracts/instance/module/lifecycle/ILifecycle.sol +0 -47
- package/contracts/instance/module/policy/IPolicy.sol +0 -60
- package/contracts/instance/module/policy/PolicyModule.sol +0 -84
- package/contracts/instance/module/pool/IPoolModule.sol +0 -41
- package/contracts/instance/module/pool/PoolModule.sol +0 -87
- package/contracts/instance/module/product/IProductModule.sol +0 -6
- package/contracts/instance/module/product/ProductModule.sol +0 -8
- package/contracts/instance/module/treasury/ITreasury.sol +0 -104
- package/contracts/instance/module/treasury/TokenHandler.sol +0 -48
- package/contracts/instance/module/treasury/TreasuryModule.sol +0 -148
- package/contracts/instance/service/ComponentServiceBase.sol +0 -41
- package/contracts/instance/service/ServiceBase.sol +0 -39
- package/contracts/registry/IChainNft.sol +0 -21
- package/contracts/registry/IRegistryLinked.sol +0 -8
- package/contracts/shared/IOwnable.sol +0 -6
- package/contracts/test/TestPool.sol +0 -22
- package/contracts/test/TestProduct.sol +0 -44
@@ -1,26 +1,48 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
|
-
pragma solidity ^0.8.
|
2
|
+
pragma solidity ^0.8.20;
|
3
3
|
|
4
4
|
import {ObjectType, POOL} from "../types/ObjectType.sol";
|
5
5
|
import {IProductService} from "../instance/service/IProductService.sol";
|
6
6
|
import {IPoolService} from "../instance/service/IPoolService.sol";
|
7
|
-
import {
|
7
|
+
import {IBundleService} from "../instance/service/IBundleService.sol";
|
8
|
+
import {NftId, zeroNftId, NftIdLib} from "../types/NftId.sol";
|
8
9
|
import {Fee} from "../types/Fee.sol";
|
9
10
|
import {UFixed} from "../types/UFixed.sol";
|
10
11
|
import {IPoolComponent} from "./IPoolComponent.sol";
|
11
12
|
import {BaseComponent} from "./BaseComponent.sol";
|
13
|
+
import {TokenHandler} from "../shared/TokenHandler.sol";
|
14
|
+
import {ISetup} from "../instance/module/ISetup.sol";
|
15
|
+
|
16
|
+
import {IRegistry} from "../registry/IRegistry.sol";
|
17
|
+
|
18
|
+
// import {IPool} from "../instance/module/pool/IPoolModule.sol";
|
19
|
+
import {ITreasury} from "../instance/module/ITreasury.sol";
|
20
|
+
import {ISetup} from "../instance/module/ISetup.sol";
|
21
|
+
import {InstanceReader} from "../instance/InstanceReader.sol";
|
22
|
+
|
23
|
+
import {IRegisterable} from "../shared/IRegisterable.sol";
|
24
|
+
import {Registerable} from "../shared/Registerable.sol";
|
12
25
|
|
13
26
|
contract Pool is BaseComponent, IPoolComponent {
|
27
|
+
using NftIdLib for NftId;
|
14
28
|
|
15
|
-
bool internal
|
29
|
+
bool internal _isConfirmingApplication;
|
16
30
|
UFixed internal _collateralizationLevel;
|
17
31
|
|
32
|
+
Fee internal _initialPoolFee;
|
33
|
+
Fee internal _initialStakingFee;
|
34
|
+
Fee internal _initialPerformanceFee;
|
35
|
+
|
36
|
+
TokenHandler internal _tokenHandler;
|
37
|
+
|
18
38
|
// may be used to interact with instance by derived contracts
|
19
39
|
IPoolService internal _poolService;
|
20
40
|
|
21
41
|
// only relevant to protect callback functions for "active" pools
|
22
42
|
IProductService private _productService;
|
23
43
|
|
44
|
+
IBundleService private _bundleService;
|
45
|
+
|
24
46
|
modifier onlyPoolService() {
|
25
47
|
require(
|
26
48
|
msg.sender == address(_poolService),
|
@@ -40,20 +62,34 @@ contract Pool is BaseComponent, IPoolComponent {
|
|
40
62
|
NftId instanceNftId,
|
41
63
|
// TODO refactor into tokenNftId
|
42
64
|
address token,
|
43
|
-
bool
|
44
|
-
|
65
|
+
bool isInterceptor,
|
66
|
+
bool isConfirmingApplication,
|
67
|
+
UFixed collateralizationLevel,
|
68
|
+
Fee memory poolFee,
|
69
|
+
Fee memory stakingFee,
|
70
|
+
Fee memory performanceFee,
|
71
|
+
address initialOwner
|
45
72
|
)
|
46
|
-
BaseComponent(registry, instanceNftId, token)
|
73
|
+
BaseComponent(registry, instanceNftId, token, POOL(), isInterceptor, initialOwner)
|
47
74
|
{
|
48
|
-
|
75
|
+
_isConfirmingApplication = isConfirmingApplication;
|
49
76
|
// TODO add validation
|
50
77
|
_collateralizationLevel = collateralizationLevel;
|
78
|
+
_initialPoolFee = poolFee;
|
79
|
+
_initialStakingFee = stakingFee;
|
80
|
+
_initialPerformanceFee = performanceFee;
|
81
|
+
|
82
|
+
_tokenHandler = new TokenHandler(token);
|
51
83
|
|
52
84
|
_poolService = _instance.getPoolService();
|
53
85
|
_productService = _instance.getProductService();
|
86
|
+
_bundleService = _instance.getBundleService();
|
87
|
+
|
88
|
+
_registerInterface(type(IPoolComponent).interfaceId);
|
54
89
|
}
|
55
90
|
|
56
91
|
function createBundle(
|
92
|
+
Fee memory fee,
|
57
93
|
uint256 initialAmount,
|
58
94
|
uint256 lifetime,
|
59
95
|
bytes memory filter
|
@@ -63,8 +99,9 @@ contract Pool is BaseComponent, IPoolComponent {
|
|
63
99
|
returns(NftId bundleNftId)
|
64
100
|
{
|
65
101
|
address owner = msg.sender;
|
66
|
-
bundleNftId =
|
102
|
+
bundleNftId = _bundleService.createBundle(
|
67
103
|
owner,
|
104
|
+
fee,
|
68
105
|
initialAmount,
|
69
106
|
lifetime,
|
70
107
|
filter
|
@@ -107,14 +144,96 @@ contract Pool is BaseComponent, IPoolComponent {
|
|
107
144
|
}
|
108
145
|
|
109
146
|
|
110
|
-
function
|
111
|
-
return
|
147
|
+
function isConfirmingApplication() external view override returns (bool isConfirmingApplication) {
|
148
|
+
return _isConfirmingApplication;
|
112
149
|
}
|
113
150
|
|
114
151
|
function getCollateralizationLevel() external view override returns (UFixed collateralizationLevel) {
|
115
152
|
return _collateralizationLevel;
|
116
153
|
}
|
117
154
|
|
155
|
+
function setFees(
|
156
|
+
Fee memory poolFee,
|
157
|
+
Fee memory stakingFee,
|
158
|
+
Fee memory performanceFee
|
159
|
+
)
|
160
|
+
external
|
161
|
+
onlyOwner
|
162
|
+
override
|
163
|
+
{
|
164
|
+
_poolService.setFees(poolFee, stakingFee, performanceFee);
|
165
|
+
}
|
166
|
+
|
167
|
+
function setBundleFee(
|
168
|
+
NftId bundleNftId,
|
169
|
+
Fee memory fee
|
170
|
+
)
|
171
|
+
external
|
172
|
+
override
|
173
|
+
// TODO add onlyBundleOwner
|
174
|
+
{
|
175
|
+
_bundleService.setBundleFee(bundleNftId, fee);
|
176
|
+
}
|
177
|
+
|
178
|
+
function lockBundle(
|
179
|
+
NftId bundleNftId
|
180
|
+
)
|
181
|
+
external
|
182
|
+
override
|
183
|
+
// TODO add onlyBundleOwner
|
184
|
+
{
|
185
|
+
_bundleService.lockBundle(bundleNftId);
|
186
|
+
}
|
187
|
+
|
188
|
+
function unlockBundle(
|
189
|
+
NftId bundleNftId
|
190
|
+
)
|
191
|
+
external
|
192
|
+
override
|
193
|
+
// TODO add onlyBundleOwner
|
194
|
+
{
|
195
|
+
_bundleService.unlockBundle(bundleNftId);
|
196
|
+
}
|
197
|
+
|
198
|
+
function getSetupInfo() public view returns (ISetup.PoolSetupInfo memory setupInfo) {
|
199
|
+
InstanceReader reader = _instance.getInstanceReader();
|
200
|
+
return reader.getPoolSetupInfo(getNftId());
|
201
|
+
}
|
202
|
+
|
203
|
+
// from IRegisterable
|
204
|
+
|
205
|
+
// TODO used only once, occupies space
|
206
|
+
// TODO do not use super
|
207
|
+
function getInitialInfo()
|
208
|
+
public
|
209
|
+
view
|
210
|
+
override (IRegisterable, Registerable)
|
211
|
+
returns (IRegistry.ObjectInfo memory, bytes memory)
|
212
|
+
{
|
213
|
+
(
|
214
|
+
IRegistry.ObjectInfo memory info,
|
215
|
+
) = super.getInitialInfo();
|
216
|
+
|
217
|
+
return (
|
218
|
+
info,
|
219
|
+
abi.encode(
|
220
|
+
ISetup.PoolSetupInfo(
|
221
|
+
_productNftId,
|
222
|
+
_tokenHandler,
|
223
|
+
_collateralizationLevel,
|
224
|
+
_initialPoolFee,
|
225
|
+
_initialStakingFee,
|
226
|
+
_initialPerformanceFee,
|
227
|
+
false,
|
228
|
+
_isConfirmingApplication,
|
229
|
+
_wallet
|
230
|
+
)
|
231
|
+
)
|
232
|
+
);
|
233
|
+
}
|
234
|
+
|
235
|
+
// Internals
|
236
|
+
|
118
237
|
function _underwrite(
|
119
238
|
NftId policyNftId,
|
120
239
|
bytes memory policyData,
|
@@ -133,6 +252,7 @@ contract Pool is BaseComponent, IPoolComponent {
|
|
133
252
|
|
134
253
|
function _createBundle(
|
135
254
|
address bundleOwner,
|
255
|
+
Fee memory fee,
|
136
256
|
uint256 amount,
|
137
257
|
uint256 lifetime,
|
138
258
|
bytes calldata filter
|
@@ -140,35 +260,12 @@ contract Pool is BaseComponent, IPoolComponent {
|
|
140
260
|
internal
|
141
261
|
returns(NftId bundleNftId)
|
142
262
|
{
|
143
|
-
bundleNftId =
|
263
|
+
bundleNftId = _bundleService.createBundle(
|
144
264
|
bundleOwner,
|
265
|
+
fee,
|
145
266
|
amount,
|
146
267
|
lifetime,
|
147
268
|
filter
|
148
269
|
);
|
149
270
|
}
|
150
|
-
|
151
|
-
// from pool component
|
152
|
-
function getStakingFee()
|
153
|
-
external
|
154
|
-
view
|
155
|
-
override
|
156
|
-
returns (Fee memory stakingFee)
|
157
|
-
{
|
158
|
-
return _instance.getPoolSetup(getNftId()).stakingFee;
|
159
|
-
}
|
160
|
-
|
161
|
-
function getPerformanceFee()
|
162
|
-
external
|
163
|
-
view
|
164
|
-
override
|
165
|
-
returns (Fee memory performanceFee)
|
166
|
-
{
|
167
|
-
return _instance.getPoolSetup(getNftId()).performanceFee;
|
168
|
-
}
|
169
|
-
|
170
|
-
// from registerable
|
171
|
-
function getType() public pure override returns (ObjectType) {
|
172
|
-
return POOL();
|
173
|
-
}
|
174
271
|
}
|
@@ -1,42 +1,170 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
2
|
pragma solidity ^0.8.19;
|
3
3
|
|
4
|
+
import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
|
5
|
+
|
6
|
+
import {IRisk} from "../instance/module/IRisk.sol";
|
7
|
+
import {ITreasury} from "../instance/module/ITreasury.sol";
|
4
8
|
import {IProductService} from "../instance/service/IProductService.sol";
|
9
|
+
import {IPolicyService} from "../instance/service/IPolicyService.sol";
|
5
10
|
import {IProductComponent} from "./IProductComponent.sol";
|
6
|
-
import {NftId} from "../types/NftId.sol";
|
11
|
+
import {NftId, zeroNftId, NftIdLib} from "../types/NftId.sol";
|
7
12
|
import {ObjectType, PRODUCT} 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";
|
8
16
|
import {Timestamp} from "../types/Timestamp.sol";
|
9
|
-
import {Fee} from "../types/Fee.sol";
|
17
|
+
import {Fee, FeeLib} from "../types/Fee.sol";
|
10
18
|
import {BaseComponent} from "./BaseComponent.sol";
|
11
19
|
|
20
|
+
import {IRegistry} from "../registry/IRegistry.sol";
|
21
|
+
import {IRegisterable} from "../shared/IRegisterable.sol";
|
22
|
+
import {Registerable} from "../shared/Registerable.sol";
|
23
|
+
import {TokenHandler} from "../shared/TokenHandler.sol";
|
24
|
+
|
25
|
+
import {InstanceReader} from "../instance/InstanceReader.sol";
|
26
|
+
import {ISetup} from "../instance/module/ISetup.sol";
|
27
|
+
import {Pool} from "../components/Pool.sol";
|
28
|
+
import {Distribution} from "../components/Distribution.sol";
|
29
|
+
|
30
|
+
import {zeroNftId} from "../types/NftId.sol";
|
31
|
+
|
12
32
|
contract Product is BaseComponent, IProductComponent {
|
13
|
-
|
14
|
-
|
33
|
+
using NftIdLib for NftId;
|
34
|
+
|
35
|
+
IProductService internal _productService;
|
36
|
+
IPolicyService internal _policyService;
|
37
|
+
Pool internal _pool;
|
38
|
+
Distribution internal _distribution;
|
39
|
+
Fee internal _initialProductFee;
|
40
|
+
Fee internal _initialProcessingFee;
|
41
|
+
TokenHandler internal _tokenHandler;
|
42
|
+
|
43
|
+
NftId internal _poolNftId;
|
44
|
+
NftId internal _distributionNftId;
|
15
45
|
|
16
46
|
constructor(
|
17
47
|
address registry,
|
18
48
|
NftId instanceNftid,
|
19
49
|
address token,
|
20
|
-
|
21
|
-
|
50
|
+
bool isInterceptor,
|
51
|
+
address pool,
|
52
|
+
address distribution,
|
53
|
+
Fee memory productFee,
|
54
|
+
Fee memory processingFee,
|
55
|
+
address initialOwner
|
56
|
+
) BaseComponent(registry, instanceNftid, token, PRODUCT(), isInterceptor, initialOwner) {
|
22
57
|
// TODO add validation
|
23
58
|
_productService = _instance.getProductService();
|
24
|
-
|
59
|
+
_policyService = _instance.getPolicyService();
|
60
|
+
_pool = Pool(pool);
|
61
|
+
_distribution = Distribution(distribution);
|
62
|
+
_initialProductFee = productFee;
|
63
|
+
_initialProcessingFee = processingFee;
|
64
|
+
|
65
|
+
_tokenHandler = new TokenHandler(token);
|
66
|
+
|
67
|
+
_poolNftId = getRegistry().getNftId(address(_pool));
|
68
|
+
_distributionNftId = getRegistry().getNftId(address(_distribution));
|
69
|
+
|
70
|
+
_registerInterface(type(IProductComponent).interfaceId);
|
71
|
+
}
|
72
|
+
|
73
|
+
|
74
|
+
function calculatePremium(
|
75
|
+
uint256 sumInsuredAmount,
|
76
|
+
RiskId riskId,
|
77
|
+
uint256 lifetime,
|
78
|
+
bytes memory applicationData,
|
79
|
+
ReferralId referralId,
|
80
|
+
NftId bundleNftId
|
81
|
+
)
|
82
|
+
external
|
83
|
+
view
|
84
|
+
override
|
85
|
+
returns (uint256 premiumAmount)
|
86
|
+
{
|
87
|
+
(premiumAmount,,,,) = _policyService.calculatePremium(
|
88
|
+
riskId,
|
89
|
+
sumInsuredAmount,
|
90
|
+
lifetime,
|
91
|
+
applicationData,
|
92
|
+
bundleNftId,
|
93
|
+
referralId
|
94
|
+
);
|
95
|
+
}
|
96
|
+
|
97
|
+
|
98
|
+
function calculateNetPremium(
|
99
|
+
uint256 sumInsuredAmount,
|
100
|
+
RiskId riskId,
|
101
|
+
uint256 lifetime,
|
102
|
+
bytes memory applicationData
|
103
|
+
)
|
104
|
+
external
|
105
|
+
view
|
106
|
+
virtual override
|
107
|
+
returns (uint256 netPremiumAmount)
|
108
|
+
{
|
109
|
+
// default 10% of sum insured
|
110
|
+
return sumInsuredAmount / 10;
|
111
|
+
}
|
112
|
+
|
113
|
+
function _toRiskId(string memory riskName) internal pure returns (RiskId riskId) {
|
114
|
+
return RiskIdLib.toRiskId(riskName);
|
115
|
+
}
|
116
|
+
|
117
|
+
function _createRisk(
|
118
|
+
RiskId id,
|
119
|
+
bytes memory data
|
120
|
+
) internal {
|
121
|
+
_productService.createRisk(
|
122
|
+
id,
|
123
|
+
data
|
124
|
+
);
|
125
|
+
}
|
126
|
+
|
127
|
+
function _updateRisk(
|
128
|
+
RiskId id,
|
129
|
+
bytes memory data
|
130
|
+
) internal {
|
131
|
+
_productService.updateRisk(
|
132
|
+
id,
|
133
|
+
data
|
134
|
+
);
|
135
|
+
}
|
136
|
+
|
137
|
+
function _updateRiskState(
|
138
|
+
RiskId id,
|
139
|
+
StateId state
|
140
|
+
) internal {
|
141
|
+
_productService.updateRiskState(
|
142
|
+
id,
|
143
|
+
state
|
144
|
+
);
|
145
|
+
}
|
146
|
+
|
147
|
+
function _getRiskInfo(RiskId id) internal view returns (IRisk.RiskInfo memory info) {
|
148
|
+
return _instance.getInstanceReader().getRiskInfo(id);
|
25
149
|
}
|
26
150
|
|
27
151
|
function _createApplication(
|
28
152
|
address applicationOwner,
|
153
|
+
RiskId riskId,
|
29
154
|
uint256 sumInsuredAmount,
|
30
|
-
uint256 premiumAmount,
|
31
155
|
uint256 lifetime,
|
32
|
-
|
156
|
+
bytes memory applicationData,
|
157
|
+
NftId bundleNftId,
|
158
|
+
ReferralId referralId
|
33
159
|
) internal returns (NftId nftId) {
|
34
|
-
nftId =
|
160
|
+
nftId = _policyService.createApplication(
|
35
161
|
applicationOwner,
|
162
|
+
riskId,
|
36
163
|
sumInsuredAmount,
|
37
|
-
premiumAmount,
|
38
164
|
lifetime,
|
39
|
-
|
165
|
+
applicationData,
|
166
|
+
bundleNftId,
|
167
|
+
referralId
|
40
168
|
);
|
41
169
|
}
|
42
170
|
|
@@ -47,7 +175,7 @@ contract Product is BaseComponent, IProductComponent {
|
|
47
175
|
)
|
48
176
|
internal
|
49
177
|
{
|
50
|
-
|
178
|
+
_policyService.underwrite(
|
51
179
|
policyNftId,
|
52
180
|
requirePremiumPayment,
|
53
181
|
activateAt);
|
@@ -59,7 +187,7 @@ contract Product is BaseComponent, IProductComponent {
|
|
59
187
|
)
|
60
188
|
internal
|
61
189
|
{
|
62
|
-
|
190
|
+
_policyService.collectPremium(
|
63
191
|
policyNftId,
|
64
192
|
activateAt);
|
65
193
|
}
|
@@ -70,48 +198,95 @@ contract Product is BaseComponent, IProductComponent {
|
|
70
198
|
)
|
71
199
|
internal
|
72
200
|
{
|
73
|
-
|
201
|
+
_policyService.activate(
|
74
202
|
policyNftId,
|
75
203
|
activateAt);
|
76
204
|
}
|
77
205
|
|
78
206
|
function getPoolNftId() external view override returns (NftId poolNftId) {
|
79
|
-
return
|
207
|
+
return getRegistry().getNftId(address(_pool));
|
208
|
+
}
|
209
|
+
|
210
|
+
function getDistributionNftId() external view override returns (NftId distributionNftId) {
|
211
|
+
return getRegistry().getNftId(address(_distribution));
|
80
212
|
}
|
81
213
|
|
82
214
|
// from product component
|
83
215
|
function setFees(
|
84
|
-
Fee memory
|
216
|
+
Fee memory productFee,
|
85
217
|
Fee memory processingFee
|
86
218
|
)
|
87
219
|
external
|
88
220
|
onlyOwner
|
89
221
|
override
|
90
222
|
{
|
91
|
-
_productService.setFees(
|
223
|
+
_productService.setFees(productFee, processingFee);
|
92
224
|
}
|
93
225
|
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
view
|
98
|
-
override
|
99
|
-
returns (Fee memory policyFee)
|
100
|
-
{
|
101
|
-
return _instance.getProductSetup(getNftId()).policyFee;
|
226
|
+
function getSetupInfo() public view returns (ISetup.ProductSetupInfo memory setupInfo) {
|
227
|
+
InstanceReader reader = _instance.getInstanceReader();
|
228
|
+
return reader.getProductSetupInfo(getNftId());
|
102
229
|
}
|
103
230
|
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
231
|
+
// from IRegisterable
|
232
|
+
|
233
|
+
function getInitialInfo()
|
234
|
+
public
|
235
|
+
view
|
236
|
+
override (IRegisterable, Registerable)
|
237
|
+
returns (IRegistry.ObjectInfo memory, bytes memory)
|
109
238
|
{
|
110
|
-
|
111
|
-
|
239
|
+
// from Registerable
|
240
|
+
(
|
241
|
+
IRegistry.ObjectInfo memory productInfo,
|
242
|
+
bytes memory data
|
243
|
+
) = super.getInitialInfo();
|
244
|
+
|
245
|
+
// TODO read pool & distribution fees
|
246
|
+
// 1) from pool -> the only option -> pool must be registered first?
|
247
|
+
// 2) from instance -> all fees are set into instance at product registration which is ongoing here
|
248
|
+
// checks are done in registryProduct() where THIS function is called
|
249
|
+
//require(getRegistry().getObjectInfo(_poolNftId).objectType == POOL(), "POOL_NOT_REGISTERED");
|
250
|
+
//require(getRegistry().getObjectInfo(_distributionNftId).objectType == DISTRIBUTION(), "DISTRIBUTION_NOT_REGISTERED");
|
251
|
+
|
252
|
+
// from PoolComponent
|
253
|
+
(
|
254
|
+
,
|
255
|
+
bytes memory poolData
|
256
|
+
) = _pool.getInitialInfo();
|
257
|
+
|
258
|
+
(
|
259
|
+
ISetup.PoolSetupInfo memory poolSetupInfo
|
260
|
+
) = abi.decode(poolData, (ISetup.PoolSetupInfo));
|
112
261
|
|
113
|
-
|
114
|
-
|
115
|
-
|
262
|
+
// from DistributionComponent
|
263
|
+
(
|
264
|
+
,
|
265
|
+
bytes memory distributionData
|
266
|
+
) = _distribution.getInitialInfo();
|
267
|
+
|
268
|
+
(
|
269
|
+
ISetup.DistributionSetupInfo memory distributionSetupInfo
|
270
|
+
) = abi.decode(distributionData, (ISetup.DistributionSetupInfo));
|
271
|
+
|
272
|
+
return (
|
273
|
+
productInfo,
|
274
|
+
abi.encode(
|
275
|
+
ISetup.ProductSetupInfo(
|
276
|
+
_token,
|
277
|
+
_tokenHandler,
|
278
|
+
_distributionNftId,
|
279
|
+
_poolNftId,
|
280
|
+
distributionSetupInfo.distributionFee,
|
281
|
+
_initialProductFee,
|
282
|
+
_initialProcessingFee,
|
283
|
+
poolSetupInfo.poolFee,
|
284
|
+
poolSetupInfo.stakingFee,
|
285
|
+
poolSetupInfo.performanceFee,
|
286
|
+
false,
|
287
|
+
_wallet
|
288
|
+
)
|
289
|
+
)
|
290
|
+
);
|
116
291
|
}
|
117
292
|
}
|
@@ -0,0 +1,47 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.20;
|
3
|
+
|
4
|
+
import {Clones} from "@openzeppelin/contracts/proxy/Clones.sol";
|
5
|
+
|
6
|
+
|
7
|
+
contract Cloner {
|
8
|
+
|
9
|
+
Mock1 public mock1;
|
10
|
+
Mock2 public mock2;
|
11
|
+
|
12
|
+
constructor() {
|
13
|
+
mock1 = new Mock1();
|
14
|
+
mock2 = new Mock2();
|
15
|
+
}
|
16
|
+
|
17
|
+
function createClone(address master)
|
18
|
+
external
|
19
|
+
returns (address cloned)
|
20
|
+
{
|
21
|
+
cloned = Clones.clone(master);
|
22
|
+
}
|
23
|
+
}
|
24
|
+
|
25
|
+
|
26
|
+
contract Mock1 {
|
27
|
+
function getValue() external virtual view returns (uint256) {
|
28
|
+
return 42;
|
29
|
+
}
|
30
|
+
}
|
31
|
+
|
32
|
+
contract Mock2 is Mock1 {
|
33
|
+
uint256 internal _value;
|
34
|
+
|
35
|
+
constructor() {
|
36
|
+
_value = 42;
|
37
|
+
}
|
38
|
+
|
39
|
+
function setValue(uint256 value) external virtual {
|
40
|
+
_value = value;
|
41
|
+
}
|
42
|
+
|
43
|
+
function getValue() external virtual override view returns (uint256) {
|
44
|
+
return _value;
|
45
|
+
}
|
46
|
+
}
|
47
|
+
|
@@ -0,0 +1,23 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.20;
|
3
|
+
|
4
|
+
import {AccessManagerUpgradeable} from "@openzeppelin/contracts-upgradeable/access/manager/AccessManagerUpgradeable.sol";
|
5
|
+
|
6
|
+
|
7
|
+
contract AccessManagerUpgradeableInitializeable is AccessManagerUpgradeable {
|
8
|
+
|
9
|
+
bool private _initialized;
|
10
|
+
|
11
|
+
function __AccessManagerUpgradeableInitializeable_init(address initialAdmin) public {
|
12
|
+
require(!_initialized, "AccessManager: already initialized");
|
13
|
+
|
14
|
+
if (initialAdmin == address(0)) {
|
15
|
+
revert AccessManagerInvalidInitialAdmin(address(0));
|
16
|
+
}
|
17
|
+
|
18
|
+
// admin is active immediately and without any execution delay.
|
19
|
+
_grantRole(ADMIN_ROLE, initialAdmin, 0, 0);
|
20
|
+
_initialized = true;
|
21
|
+
}
|
22
|
+
|
23
|
+
}
|