@etherisc/gif-next 0.0.2-f619be3-760 → 0.0.2-f626d92-602
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 +324 -22
- package/artifacts/contracts/components/Component.sol/Component.dbg.json +1 -1
- package/artifacts/contracts/components/Component.sol/Component.json +672 -35
- package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +4 -0
- package/artifacts/contracts/components/Distribution.sol/Distribution.json +1329 -0
- package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +4 -0
- package/artifacts/contracts/components/IComponent.sol/IComponent.json +605 -0
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +969 -0
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +1064 -0
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +4 -0
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +830 -0
- package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/components/Pool.sol/Pool.json +1180 -132
- package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/components/Product.sol/Product.json +977 -156
- 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 +778 -0
- package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +4 -0
- package/artifacts/contracts/instance/Cloneable.sol/Cloneable.json +190 -0
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +1698 -810
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +4 -0
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +633 -0
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +2413 -849
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +1330 -0
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1289 -0
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +1179 -0
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +741 -0
- package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +4 -0
- package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +256 -0
- package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.dbg.json +4 -0
- package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.json +607 -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 +532 -0
- package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +4 -0
- package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +194 -0
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +4 -0
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +237 -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/IComponents.sol/IComponents.dbg.json +4 -0
- package/artifacts/contracts/instance/module/IComponents.sol/IComponents.json +10 -0
- package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +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 +1039 -0
- package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.json +673 -0
- package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +1231 -0
- package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +721 -0
- package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.json +817 -0
- package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.json +641 -0
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +1798 -0
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +805 -0
- package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.json +622 -0
- package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.json +659 -0
- package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.json +475 -0
- package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +1090 -0
- package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.json +606 -0
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +844 -0
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +450 -0
- package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +1092 -0
- package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +697 -0
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +1237 -0
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +661 -0
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +840 -0
- package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +653 -0
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +252 -2
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +595 -27
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +4 -0
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +866 -0
- package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +4 -0
- package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +52 -0
- package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
- package/artifacts/contracts/registry/Registry.sol/Registry.json +652 -50
- 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 +1158 -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 +559 -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/{instance/component/ComponentModule.sol/ComponentModule.json → shared/IService.sol/IService.json} +168 -132
- 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/{registry/IChainNft.sol/IChainNft.json → shared/Service.sol/Service.json} +261 -217
- 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 +596 -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/Amount.sol/AmountLib.dbg.json +4 -0
- package/artifacts/contracts/types/Amount.sol/AmountLib.json +161 -0
- package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
- package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +2 -2
- package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
- package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.json +100 -0
- package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +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 +288 -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 +78 -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 +142 -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/Seconds.sol/SecondsLib.dbg.json +4 -0
- package/artifacts/contracts/types/Seconds.sol/SecondsLib.json +124 -0
- package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/StateId.sol/StateIdLib.json +2 -2
- package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +1 -1
- package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +97 -4
- 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 +227 -51
- package/contracts/components/Distribution.sol +280 -0
- package/contracts/components/IComponent.sol +76 -0
- package/contracts/components/IDistributionComponent.sol +71 -0
- package/contracts/components/IPoolComponent.sol +113 -0
- package/contracts/components/IProductComponent.sol +40 -0
- package/contracts/components/Pool.sol +281 -30
- package/contracts/components/Product.sol +252 -48
- package/contracts/instance/AccessManagerUpgradeableInitializeable.sol +13 -0
- package/contracts/instance/BundleManager.sol +127 -0
- package/contracts/instance/Cloneable.sol +51 -0
- package/contracts/instance/IInstance.sol +95 -22
- package/contracts/instance/IInstanceService.sol +72 -0
- package/contracts/instance/Instance.sol +306 -51
- package/contracts/instance/InstanceAccessManager.sol +527 -0
- package/contracts/instance/InstanceReader.sol +291 -0
- package/contracts/instance/InstanceService.sol +495 -0
- package/contracts/instance/InstanceServiceManager.sol +54 -0
- package/contracts/instance/ObjectManager.sol +82 -0
- package/contracts/instance/base/ComponentService.sol +121 -0
- package/contracts/instance/base/IKeyValueStore.sol +49 -0
- package/contracts/instance/base/ILifecycle.sol +30 -0
- package/contracts/instance/base/KeyValueStore.sol +180 -0
- package/contracts/instance/base/Lifecycle.sol +109 -0
- package/contracts/instance/module/IAccess.sol +54 -0
- package/contracts/instance/module/IBundle.sol +23 -0
- package/contracts/instance/module/IComponents.sol +41 -0
- package/contracts/instance/module/IDistribution.sol +41 -0
- package/contracts/instance/module/IPolicy.sol +72 -0
- package/contracts/instance/module/IRisk.sol +11 -0
- package/contracts/instance/module/ISetup.sol +33 -0
- package/contracts/instance/module/ITreasury.sol +23 -0
- package/contracts/instance/service/ApplicationService.sol +350 -0
- package/contracts/instance/service/ApplicationServiceManager.sol +35 -0
- package/contracts/instance/service/BundleService.sol +431 -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 +435 -0
- package/contracts/instance/service/DistributionServiceManager.sol +51 -0
- package/contracts/instance/service/IApplicationService.sol +82 -0
- package/contracts/instance/service/IBundleService.sol +93 -0
- package/contracts/instance/service/IClaimService.sol +61 -0
- package/contracts/instance/service/IDistributionService.sol +99 -0
- package/contracts/instance/service/IPolicyService.sol +72 -0
- package/contracts/instance/service/IPoolService.sol +99 -0
- package/contracts/instance/service/IProductService.sol +40 -0
- package/contracts/instance/service/PolicyService.sol +362 -0
- package/contracts/instance/service/PolicyServiceManager.sol +54 -0
- package/contracts/instance/service/PoolService.sol +303 -0
- package/contracts/instance/service/PoolServiceManager.sol +51 -0
- package/contracts/instance/service/ProductService.sol +210 -0
- package/contracts/instance/service/ProductServiceManager.sol +54 -0
- package/contracts/registry/ChainNft.sol +137 -62
- package/contracts/registry/IRegistry.sol +75 -41
- package/contracts/registry/IRegistryService.sol +68 -0
- package/contracts/registry/ITransferInterceptor.sol +7 -0
- package/contracts/registry/Registry.sol +413 -128
- package/contracts/registry/RegistryAccessManager.sol +216 -0
- package/contracts/registry/RegistryService.sol +282 -0
- package/contracts/registry/RegistryServiceManager.sol +62 -0
- package/contracts/registry/ReleaseManager.sol +324 -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 +72 -0
- package/contracts/shared/TokenHandler.sol +33 -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/Amount.sol +60 -0
- package/contracts/types/Blocknumber.sol +1 -0
- package/contracts/types/ClaimId.sol +52 -0
- package/contracts/types/DistributorType.sol +55 -0
- package/contracts/types/Fee.sol +52 -20
- package/contracts/types/Key32.sol +50 -0
- package/contracts/types/NftId.sol +30 -1
- package/contracts/types/NftIdSet.sol +62 -0
- package/contracts/types/NumberId.sol +52 -0
- package/contracts/types/ObjectType.sol +65 -15
- package/contracts/types/PayoutId.sol +54 -0
- package/contracts/types/Referral.sol +89 -0
- package/contracts/types/RiskId.sol +43 -0
- package/contracts/types/RoleId.sol +97 -0
- package/contracts/types/Seconds.sol +54 -0
- package/contracts/types/StateId.sol +19 -4
- package/contracts/types/Timestamp.sol +31 -6
- package/contracts/types/UFixed.sol +139 -23
- package/contracts/types/Version.sol +108 -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/IPool.sol/IPoolComponent.json +0 -255
- 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/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,274 +0,0 @@
|
|
1
|
-
// SPDX-License-Identifier: Apache-2.0
|
2
|
-
pragma solidity ^0.8.19;
|
3
|
-
|
4
|
-
import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
|
5
|
-
|
6
|
-
import {RegistryLinked} from "../../registry/Registry.sol";
|
7
|
-
import {IRegistry, IRegistryLinked} from "../../registry/IRegistry.sol";
|
8
|
-
import {IAccessComponentTypeRoles, IAccessCheckRole} from "../access/IAccess.sol";
|
9
|
-
import {IInstance} from "../IInstance.sol";
|
10
|
-
|
11
|
-
import {LifecycleModule} from "../lifecycle/LifecycleModule.sol";
|
12
|
-
import {ITreasuryModule} from "../treasury/ITreasury.sol";
|
13
|
-
import {TreasuryModule} from "../treasury/TreasuryModule.sol";
|
14
|
-
import {IComponent, IComponentContract, IComponentModule, IComponentOwnerService} from "./IComponent.sol";
|
15
|
-
import {IProductComponent} from "../../components/IProduct.sol";
|
16
|
-
import {IPoolComponent} from "../../components/IPool.sol";
|
17
|
-
import {IPoolModule} from "../pool/IPoolModule.sol";
|
18
|
-
import {ObjectType, PRODUCT, ORACLE, POOL} from "../../types/ObjectType.sol";
|
19
|
-
import {StateId, ACTIVE, PAUSED} from "../../types/StateId.sol";
|
20
|
-
import {NftId, NftIdLib, zeroNftId} from "../../types/NftId.sol";
|
21
|
-
import {Fee, zeroFee} from "../../types/Fee.sol";
|
22
|
-
|
23
|
-
abstract contract ComponentModule is
|
24
|
-
IRegistryLinked,
|
25
|
-
IAccessComponentTypeRoles,
|
26
|
-
IAccessCheckRole,
|
27
|
-
IComponentModule
|
28
|
-
{
|
29
|
-
using NftIdLib for NftId;
|
30
|
-
|
31
|
-
mapping(NftId nftId => ComponentInfo info) private _componentInfo;
|
32
|
-
mapping(address cAddress => NftId nftId) private _nftIdByAddress;
|
33
|
-
NftId[] private _nftIds;
|
34
|
-
|
35
|
-
mapping(ObjectType cType => bytes32 role) private _componentOwnerRole;
|
36
|
-
|
37
|
-
// TODO maybe move this to Instance contract as internal variable?
|
38
|
-
LifecycleModule private _lifecycleModule;
|
39
|
-
TreasuryModule private _treasuryModule;
|
40
|
-
IPoolModule private _poolModule;
|
41
|
-
IComponentOwnerService private _componentOwnerService;
|
42
|
-
|
43
|
-
modifier onlyComponentOwnerService() {
|
44
|
-
require(
|
45
|
-
address(_componentOwnerService) == msg.sender,
|
46
|
-
"ERROR:CMP-001:NOT_OWNER_SERVICE"
|
47
|
-
);
|
48
|
-
_;
|
49
|
-
}
|
50
|
-
|
51
|
-
constructor(address componentOwnerService) {
|
52
|
-
address componentAddress = address(this);
|
53
|
-
_lifecycleModule = LifecycleModule(componentAddress);
|
54
|
-
_treasuryModule = TreasuryModule(componentAddress);
|
55
|
-
_poolModule = IPoolModule(componentAddress);
|
56
|
-
_componentOwnerService = ComponentOwnerService(componentOwnerService);
|
57
|
-
}
|
58
|
-
|
59
|
-
function registerComponent(
|
60
|
-
IComponentContract component
|
61
|
-
) external override onlyComponentOwnerService returns (NftId nftId) {
|
62
|
-
ObjectType objectType = component.getType();
|
63
|
-
bytes32 typeRole = getRoleForType(objectType);
|
64
|
-
require(
|
65
|
-
this.hasRole(typeRole, component.getInitialOwner()),
|
66
|
-
"ERROR:CMP-004:TYPE_ROLE_MISSING"
|
67
|
-
);
|
68
|
-
|
69
|
-
nftId = this.getRegistry().register(address(component));
|
70
|
-
IERC20Metadata token = component.getToken();
|
71
|
-
address wallet = component.getWallet();
|
72
|
-
|
73
|
-
// create component info
|
74
|
-
_componentInfo[nftId] = ComponentInfo(
|
75
|
-
nftId,
|
76
|
-
_lifecycleModule.getInitialState(objectType),
|
77
|
-
token
|
78
|
-
);
|
79
|
-
|
80
|
-
// component type specific registration actions
|
81
|
-
if (component.getType() == PRODUCT()) {
|
82
|
-
IProductComponent product = IProductComponent(address(component));
|
83
|
-
NftId poolNftId = product.getPoolNftId();
|
84
|
-
require(poolNftId.gtz(), "ERROR:CMP-005:POOL_UNKNOWN");
|
85
|
-
// validate pool token and product token are same
|
86
|
-
|
87
|
-
// register with tresury
|
88
|
-
// implement and add validation
|
89
|
-
NftId distributorNftId = zeroNftId();
|
90
|
-
_treasuryModule.registerProduct(
|
91
|
-
nftId,
|
92
|
-
distributorNftId,
|
93
|
-
poolNftId,
|
94
|
-
token,
|
95
|
-
wallet,
|
96
|
-
product.getPolicyFee(),
|
97
|
-
product.getProcessingFee()
|
98
|
-
);
|
99
|
-
} else if (component.getType() == POOL()) {
|
100
|
-
IPoolComponent pool = IPoolComponent(address(component));
|
101
|
-
|
102
|
-
// register with pool
|
103
|
-
_poolModule.registerPool(nftId);
|
104
|
-
|
105
|
-
// register with tresury
|
106
|
-
_treasuryModule.registerPool(
|
107
|
-
nftId,
|
108
|
-
wallet,
|
109
|
-
pool.getStakingFee(),
|
110
|
-
pool.getPerformanceFee()
|
111
|
-
);
|
112
|
-
}
|
113
|
-
// TODO add distribution
|
114
|
-
|
115
|
-
_nftIdByAddress[address(component)] = nftId;
|
116
|
-
_nftIds.push(nftId);
|
117
|
-
|
118
|
-
// TODO add loggingx
|
119
|
-
}
|
120
|
-
|
121
|
-
function getComponentOwnerService()
|
122
|
-
external
|
123
|
-
view
|
124
|
-
override
|
125
|
-
returns (IComponentOwnerService)
|
126
|
-
{
|
127
|
-
return _componentOwnerService;
|
128
|
-
}
|
129
|
-
|
130
|
-
function setComponentInfo(
|
131
|
-
ComponentInfo memory info
|
132
|
-
) external onlyComponentOwnerService returns (NftId nftId) {
|
133
|
-
nftId = info.nftId;
|
134
|
-
require(
|
135
|
-
nftId.gtz() && _componentInfo[nftId].nftId.eq(nftId),
|
136
|
-
"ERROR:CMP-006:COMPONENT_UNKNOWN"
|
137
|
-
);
|
138
|
-
|
139
|
-
// TODO decide if state changes should have explicit functions and not
|
140
|
-
// just a generic setXYZInfo and implicit state transitions
|
141
|
-
// when in doubt go for the explicit approach ...
|
142
|
-
ObjectType objectType = this.getRegistry().getInfo(nftId).objectType;
|
143
|
-
_lifecycleModule.checkAndLogTransition(
|
144
|
-
nftId,
|
145
|
-
objectType,
|
146
|
-
_componentInfo[nftId].state,
|
147
|
-
info.state
|
148
|
-
);
|
149
|
-
_componentInfo[nftId] = info;
|
150
|
-
}
|
151
|
-
|
152
|
-
function getComponentInfo(
|
153
|
-
NftId nftId
|
154
|
-
) external view override returns (ComponentInfo memory) {
|
155
|
-
return _componentInfo[nftId];
|
156
|
-
}
|
157
|
-
|
158
|
-
function getComponentId(
|
159
|
-
address componentAddress
|
160
|
-
) external view returns (NftId componentNftId) {
|
161
|
-
return _nftIdByAddress[componentAddress];
|
162
|
-
}
|
163
|
-
|
164
|
-
function getComponentId(
|
165
|
-
uint256 idx
|
166
|
-
) external view override returns (NftId componentNftId) {
|
167
|
-
return _nftIds[idx];
|
168
|
-
}
|
169
|
-
|
170
|
-
function components()
|
171
|
-
external
|
172
|
-
view
|
173
|
-
override
|
174
|
-
returns (uint256 numberOfCompnents)
|
175
|
-
{
|
176
|
-
return _nftIds.length;
|
177
|
-
}
|
178
|
-
|
179
|
-
function getRoleForType(
|
180
|
-
ObjectType cType
|
181
|
-
) public view returns (bytes32 role) {
|
182
|
-
if (cType == PRODUCT()) {
|
183
|
-
return this.PRODUCT_OWNER_ROLE();
|
184
|
-
}
|
185
|
-
if (cType == POOL()) {
|
186
|
-
return this.POOL_OWNER_ROLE();
|
187
|
-
}
|
188
|
-
if (cType == ORACLE()) {
|
189
|
-
return this.ORACLE_OWNER_ROLE();
|
190
|
-
}
|
191
|
-
}
|
192
|
-
}
|
193
|
-
|
194
|
-
// this is actually the component owner service
|
195
|
-
contract ComponentOwnerService is
|
196
|
-
RegistryLinked,
|
197
|
-
IComponent,
|
198
|
-
IComponentOwnerService
|
199
|
-
{
|
200
|
-
using NftIdLib for NftId;
|
201
|
-
|
202
|
-
modifier onlyComponentOwner(IComponentContract component) {
|
203
|
-
NftId nftId = _registry.getNftId(address(component));
|
204
|
-
require(nftId.gtz(), "ERROR:COS-001:COMPONENT_UNKNOWN");
|
205
|
-
require(
|
206
|
-
msg.sender == _registry.getOwner(nftId),
|
207
|
-
"ERROR:COS-002:NOT_OWNER"
|
208
|
-
);
|
209
|
-
_;
|
210
|
-
}
|
211
|
-
|
212
|
-
constructor(
|
213
|
-
address registry
|
214
|
-
) RegistryLinked(registry) // solhint-disable-next-line no-empty-blocks
|
215
|
-
{
|
216
|
-
|
217
|
-
}
|
218
|
-
|
219
|
-
function register(
|
220
|
-
IComponentContract component
|
221
|
-
) external override returns (NftId nftId) {
|
222
|
-
require(
|
223
|
-
msg.sender == component.getInitialOwner(),
|
224
|
-
"ERROR:COS-003:NOT_OWNER"
|
225
|
-
);
|
226
|
-
|
227
|
-
IInstance instance = component.getInstance();
|
228
|
-
nftId = instance.registerComponent(component);
|
229
|
-
}
|
230
|
-
|
231
|
-
function lock(
|
232
|
-
IComponentContract component
|
233
|
-
) external override onlyComponentOwner(component) {
|
234
|
-
IInstance instance = component.getInstance();
|
235
|
-
ComponentInfo memory info = instance.getComponentInfo(
|
236
|
-
component.getNftId()
|
237
|
-
);
|
238
|
-
require(info.nftId.gtz(), "ERROR_COMPONENT_UNKNOWN");
|
239
|
-
|
240
|
-
info.state = PAUSED();
|
241
|
-
// setComponentInfo checks for valid state changes
|
242
|
-
instance.setComponentInfo(info);
|
243
|
-
}
|
244
|
-
|
245
|
-
function unlock(
|
246
|
-
IComponentContract component
|
247
|
-
) external override onlyComponentOwner(component) {
|
248
|
-
IInstance instance = component.getInstance();
|
249
|
-
ComponentInfo memory info = instance.getComponentInfo(
|
250
|
-
component.getNftId()
|
251
|
-
);
|
252
|
-
require(info.nftId.gtz(), "ERROR_COMPONENT_UNKNOWN");
|
253
|
-
|
254
|
-
info.state = ACTIVE();
|
255
|
-
// setComponentInfo checks for valid state changes
|
256
|
-
instance.setComponentInfo(info);
|
257
|
-
}
|
258
|
-
|
259
|
-
function setProductFees(
|
260
|
-
IComponentContract product,
|
261
|
-
Fee memory policyFee,
|
262
|
-
Fee memory processingFee
|
263
|
-
) external override onlyComponentOwner(product) {
|
264
|
-
require(product.getType() == PRODUCT(), "ERROR_NOT_PRODUCT");
|
265
|
-
|
266
|
-
address instanceAddress = address(product.getInstance());
|
267
|
-
ITreasuryModule treasuryModule = ITreasuryModule(instanceAddress);
|
268
|
-
treasuryModule.setProductFees(
|
269
|
-
product.getNftId(),
|
270
|
-
policyFee,
|
271
|
-
processingFee
|
272
|
-
);
|
273
|
-
}
|
274
|
-
}
|
@@ -1,74 +0,0 @@
|
|
1
|
-
// SPDX-License-Identifier: Apache-2.0
|
2
|
-
pragma solidity ^0.8.19;
|
3
|
-
|
4
|
-
import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
|
5
|
-
|
6
|
-
import {IOwnable, IRegistryLinked, IRegisterable} from "../../registry/IRegistry.sol";
|
7
|
-
import {IInstance} from "../IInstance.sol";
|
8
|
-
import {StateId} from "../../types/StateId.sol";
|
9
|
-
import {NftId} from "../../types/NftId.sol";
|
10
|
-
import {Fee} from "../../types/Fee.sol";
|
11
|
-
import {UFixed} from "../../types/UFixed.sol";
|
12
|
-
|
13
|
-
interface IComponent {
|
14
|
-
// component dynamic info (static info kept in registry)
|
15
|
-
struct ComponentInfo {
|
16
|
-
NftId nftId;
|
17
|
-
StateId state;
|
18
|
-
IERC20Metadata token;
|
19
|
-
}
|
20
|
-
}
|
21
|
-
|
22
|
-
interface IInstanceLinked {
|
23
|
-
// function setInstance(address instance) external;
|
24
|
-
function getInstance() external view returns (IInstance instance);
|
25
|
-
}
|
26
|
-
|
27
|
-
interface IComponentContract is IRegisterable, IInstanceLinked, IComponent {
|
28
|
-
function getToken() external view returns (IERC20Metadata token);
|
29
|
-
|
30
|
-
function getWallet() external view returns (address walletAddress);
|
31
|
-
}
|
32
|
-
|
33
|
-
interface IComponentOwnerService is IRegistryLinked {
|
34
|
-
function register(
|
35
|
-
IComponentContract component
|
36
|
-
) external returns (NftId nftId);
|
37
|
-
|
38
|
-
function lock(IComponentContract component) external;
|
39
|
-
|
40
|
-
function unlock(IComponentContract component) external;
|
41
|
-
|
42
|
-
function setProductFees(
|
43
|
-
IComponentContract product,
|
44
|
-
Fee memory policyFee,
|
45
|
-
Fee memory processingFee
|
46
|
-
) external;
|
47
|
-
}
|
48
|
-
|
49
|
-
interface IComponentModule is IOwnable, IRegistryLinked, IComponent {
|
50
|
-
function registerComponent(
|
51
|
-
IComponentContract component
|
52
|
-
) external returns (NftId nftId);
|
53
|
-
|
54
|
-
function setComponentInfo(
|
55
|
-
ComponentInfo memory info
|
56
|
-
) external returns (NftId componentNftId);
|
57
|
-
|
58
|
-
function getComponentInfo(
|
59
|
-
NftId nftId
|
60
|
-
) external view returns (ComponentInfo memory info);
|
61
|
-
|
62
|
-
function getComponentId(
|
63
|
-
address componentAddress
|
64
|
-
) external view returns (NftId nftId);
|
65
|
-
|
66
|
-
function getComponentId(uint256 idx) external view returns (NftId nftId);
|
67
|
-
|
68
|
-
function components() external view returns (uint256 numberOfCompnents);
|
69
|
-
|
70
|
-
function getComponentOwnerService()
|
71
|
-
external
|
72
|
-
view
|
73
|
-
returns (IComponentOwnerService);
|
74
|
-
}
|
@@ -1,47 +0,0 @@
|
|
1
|
-
// SPDX-License-Identifier: Apache-2.0
|
2
|
-
pragma solidity ^0.8.19;
|
3
|
-
|
4
|
-
import {ObjectType} from "../../types/ObjectType.sol";
|
5
|
-
import {StateId, toStateId, zeroStateId} from "../../types/StateId.sol";
|
6
|
-
import {NftId} from "../../types/NftId.sol";
|
7
|
-
|
8
|
-
interface ILifecycle {
|
9
|
-
event LogComponentStateChanged(
|
10
|
-
NftId nftId,
|
11
|
-
ObjectType objectType,
|
12
|
-
StateId fromStateId,
|
13
|
-
StateId toStateId
|
14
|
-
);
|
15
|
-
event LogBundleStateChanged(
|
16
|
-
NftId nftId,
|
17
|
-
StateId fromStateId,
|
18
|
-
StateId toStateId
|
19
|
-
);
|
20
|
-
event LogPolicyStateChanged(
|
21
|
-
NftId nftId,
|
22
|
-
StateId fromStateId,
|
23
|
-
StateId toStateId
|
24
|
-
);
|
25
|
-
// event LogClaimStateChanged(NftId nftId, ClaimId claimId, StateId fromStateId, StateId toStateId);
|
26
|
-
// event LogPayoutStateChanged(NftId nftId, ClaimId claimId, PayoutId payoutId, StateId fromStateId, StateId toStateId);
|
27
|
-
|
28
|
-
error ErrorNoLifecycle(NftId nftId, ObjectType objectType);
|
29
|
-
error ErrorInvalidStateTransition(
|
30
|
-
NftId nftId,
|
31
|
-
ObjectType objectType,
|
32
|
-
StateId fromStateId,
|
33
|
-
StateId toStateId
|
34
|
-
);
|
35
|
-
}
|
36
|
-
|
37
|
-
interface ILifecycleModule is ILifecycle {
|
38
|
-
function getInitialState(
|
39
|
-
ObjectType objectType
|
40
|
-
) external view returns (StateId);
|
41
|
-
|
42
|
-
function isValidTransition(
|
43
|
-
ObjectType objectType,
|
44
|
-
StateId fromId,
|
45
|
-
StateId toId
|
46
|
-
) external view returns (bool);
|
47
|
-
}
|
@@ -1,88 +0,0 @@
|
|
1
|
-
// SPDX-License-Identifier: Apache-2.0
|
2
|
-
pragma solidity ^0.8.19;
|
3
|
-
|
4
|
-
import {NftId} from "../../types/NftId.sol";
|
5
|
-
import {ObjectType, PRODUCT, ORACLE, POOL, BUNDLE, POLICY} from "../../types/ObjectType.sol";
|
6
|
-
import {StateId, ACTIVE, PAUSED, ARCHIVED, CLOSED, APPLIED, REVOKED, DECLINED} from "../../types/StateId.sol";
|
7
|
-
import {ILifecycleModule} from "./ILifecycle.sol";
|
8
|
-
|
9
|
-
contract LifecycleModule is ILifecycleModule {
|
10
|
-
mapping(ObjectType objectType => StateId initialState)
|
11
|
-
private _initialState;
|
12
|
-
|
13
|
-
mapping(ObjectType objectType => mapping(StateId stateFrom => mapping(StateId stateTo => bool isValid)))
|
14
|
-
private _isValidTransition;
|
15
|
-
|
16
|
-
constructor() {
|
17
|
-
_setupComponentLifecycle(PRODUCT());
|
18
|
-
_setupComponentLifecycle(ORACLE());
|
19
|
-
_setupComponentLifecycle(POOL());
|
20
|
-
|
21
|
-
_setupBundleLifecycle();
|
22
|
-
_setupPolicyLifecycle();
|
23
|
-
}
|
24
|
-
|
25
|
-
function checkAndLogTransition(
|
26
|
-
NftId nftId,
|
27
|
-
ObjectType objectType,
|
28
|
-
StateId fromId,
|
29
|
-
StateId toId
|
30
|
-
) public returns (StateId) // add only currentcontract? would that work?
|
31
|
-
{
|
32
|
-
if (!_isValidTransition[objectType][fromId][toId]) {
|
33
|
-
revert ErrorInvalidStateTransition(nftId, objectType, fromId, toId);
|
34
|
-
}
|
35
|
-
|
36
|
-
if (objectType == POLICY()) {
|
37
|
-
emit LogPolicyStateChanged(nftId, fromId, toId);
|
38
|
-
} else if (objectType == BUNDLE()) {
|
39
|
-
emit LogBundleStateChanged(nftId, fromId, toId);
|
40
|
-
} else if (
|
41
|
-
objectType == PRODUCT() ||
|
42
|
-
objectType == ORACLE() ||
|
43
|
-
objectType == POOL()
|
44
|
-
) {
|
45
|
-
emit LogComponentStateChanged(nftId, objectType, fromId, toId);
|
46
|
-
} else {
|
47
|
-
revert ErrorNoLifecycle(nftId, objectType);
|
48
|
-
}
|
49
|
-
|
50
|
-
return toId;
|
51
|
-
}
|
52
|
-
|
53
|
-
function getInitialState(
|
54
|
-
ObjectType objectType
|
55
|
-
) public view returns (StateId) {
|
56
|
-
return _initialState[objectType];
|
57
|
-
}
|
58
|
-
|
59
|
-
function isValidTransition(
|
60
|
-
ObjectType objectType,
|
61
|
-
StateId fromId,
|
62
|
-
StateId toId
|
63
|
-
) public view returns (bool) {
|
64
|
-
return _isValidTransition[objectType][fromId][toId];
|
65
|
-
}
|
66
|
-
|
67
|
-
function _setupComponentLifecycle(ObjectType objectType) internal {
|
68
|
-
_initialState[objectType] = ACTIVE();
|
69
|
-
_isValidTransition[objectType][ACTIVE()][PAUSED()] = true;
|
70
|
-
_isValidTransition[objectType][PAUSED()][ACTIVE()] = true;
|
71
|
-
_isValidTransition[objectType][PAUSED()][ARCHIVED()] = true;
|
72
|
-
}
|
73
|
-
|
74
|
-
function _setupBundleLifecycle() internal {
|
75
|
-
_initialState[BUNDLE()] = ACTIVE();
|
76
|
-
_isValidTransition[BUNDLE()][ACTIVE()][PAUSED()] = true;
|
77
|
-
_isValidTransition[BUNDLE()][PAUSED()][ACTIVE()] = true;
|
78
|
-
_isValidTransition[BUNDLE()][PAUSED()][CLOSED()] = true;
|
79
|
-
}
|
80
|
-
|
81
|
-
function _setupPolicyLifecycle() internal {
|
82
|
-
_initialState[POLICY()] = APPLIED();
|
83
|
-
_isValidTransition[POLICY()][APPLIED()][REVOKED()] = true;
|
84
|
-
_isValidTransition[POLICY()][APPLIED()][DECLINED()] = true;
|
85
|
-
_isValidTransition[POLICY()][APPLIED()][ACTIVE()] = true;
|
86
|
-
_isValidTransition[POLICY()][ACTIVE()][CLOSED()] = true;
|
87
|
-
}
|
88
|
-
}
|
@@ -1,50 +0,0 @@
|
|
1
|
-
// SPDX-License-Identifier: Apache-2.0
|
2
|
-
pragma solidity ^0.8.19;
|
3
|
-
|
4
|
-
import {IOwnable, IRegistryLinked, IRegisterable, IRegistry} from "../../registry/IRegistry.sol";
|
5
|
-
import {IInstance} from "../IInstance.sol";
|
6
|
-
import {IProductService} from "../product/IProductService.sol";
|
7
|
-
import {NftId} from "../../types/NftId.sol";
|
8
|
-
import {StateId} from "../../types/StateId.sol";
|
9
|
-
|
10
|
-
// TODO check if there is value to introuce IContract and let IPolicy derive from IContract
|
11
|
-
interface IPolicy {
|
12
|
-
struct PolicyInfo {
|
13
|
-
NftId nftId;
|
14
|
-
StateId state; // applied, withdrawn, rejected, active, closed
|
15
|
-
// TODO add beneficiary address
|
16
|
-
uint256 sumInsuredAmount;
|
17
|
-
uint256 premiumAmount;
|
18
|
-
uint256 premiumPaidAmount;
|
19
|
-
uint256 lifetime; // activatedAt + lifetime >= expiredAt
|
20
|
-
uint256 createdAt;
|
21
|
-
uint256 updatedAt;
|
22
|
-
uint256 activatedAt; // time of underwriting
|
23
|
-
uint256 expiredAt; // no new claims
|
24
|
-
uint256 closedAt; // no locked capital
|
25
|
-
}
|
26
|
-
}
|
27
|
-
|
28
|
-
interface IPolicyModule is IOwnable, IRegistryLinked, IPolicy {
|
29
|
-
function createApplication(
|
30
|
-
IRegistry.RegistryInfo memory productInfo,
|
31
|
-
address applicationOwner,
|
32
|
-
uint256 sumInsuredAmount,
|
33
|
-
uint256 premiumAmount,
|
34
|
-
uint256 lifetime,
|
35
|
-
NftId bundleNftId
|
36
|
-
) external returns (NftId nftId);
|
37
|
-
|
38
|
-
// process full premium
|
39
|
-
function processPremium(NftId nftId) external;
|
40
|
-
|
41
|
-
function activate(NftId nftId) external;
|
42
|
-
|
43
|
-
function getBundleNftForPolicy(
|
44
|
-
NftId nftId
|
45
|
-
) external view returns (NftId bundleNft);
|
46
|
-
|
47
|
-
function getPolicyInfo(
|
48
|
-
NftId nftId
|
49
|
-
) external view returns (PolicyInfo memory info);
|
50
|
-
}
|
@@ -1,114 +0,0 @@
|
|
1
|
-
// SPDX-License-Identifier: Apache-2.0
|
2
|
-
pragma solidity ^0.8.19;
|
3
|
-
|
4
|
-
// import {IOwnable, IRegistryLinked, IRegisterable} from "../../registry/IRegistry.sol";
|
5
|
-
import {IRegistry, IRegistryLinked} from "../../registry/IRegistry.sol";
|
6
|
-
|
7
|
-
import {LifecycleModule} from "../lifecycle/LifecycleModule.sol";
|
8
|
-
import {IProductService} from "../product/IProductService.sol";
|
9
|
-
import {IPolicy, IPolicyModule} from "./IPolicy.sol";
|
10
|
-
import {ObjectType, POLICY} from "../../types/ObjectType.sol";
|
11
|
-
import {ACTIVE} from "../../types/StateId.sol";
|
12
|
-
import {NftId, NftIdLib} from "../../types/NftId.sol";
|
13
|
-
|
14
|
-
import {LifecycleModule} from "../lifecycle/LifecycleModule.sol";
|
15
|
-
|
16
|
-
abstract contract PolicyModule is IRegistryLinked, IPolicyModule {
|
17
|
-
using NftIdLib for NftId;
|
18
|
-
|
19
|
-
mapping(NftId nftId => PolicyInfo info) private _policyInfo;
|
20
|
-
mapping(NftId nftId => NftId bundleNftId) private _bundleForPolicy;
|
21
|
-
|
22
|
-
LifecycleModule private _lifecycleModule;
|
23
|
-
IProductService private _productService;
|
24
|
-
|
25
|
-
// TODO find a better place to avoid dupliation
|
26
|
-
modifier onlyProductService2() {
|
27
|
-
require(
|
28
|
-
address(_productService) == msg.sender,
|
29
|
-
"ERROR:POL-001:NOT_PRODUCT_SERVICE"
|
30
|
-
);
|
31
|
-
_;
|
32
|
-
}
|
33
|
-
|
34
|
-
constructor(address productService) {
|
35
|
-
_lifecycleModule = LifecycleModule(address(this));
|
36
|
-
_productService = IProductService(productService);
|
37
|
-
}
|
38
|
-
|
39
|
-
function createApplication(
|
40
|
-
IRegistry.RegistryInfo memory productInfo,
|
41
|
-
address applicationOwner,
|
42
|
-
uint256 sumInsuredAmount,
|
43
|
-
uint256 premiumAmount,
|
44
|
-
uint256 lifetime,
|
45
|
-
NftId bundleNftId
|
46
|
-
) external override onlyProductService2 returns (NftId nftId) {
|
47
|
-
// TODO add parameter validation
|
48
|
-
if (bundleNftId.gtz()) {
|
49
|
-
// IRegistry.RegistryInfo memory bundleInfo = this
|
50
|
-
// .getRegistry()
|
51
|
-
// .getInfo(bundleNftId);
|
52
|
-
// IRegistry.RegistryInfo memory poolInfo = this.getRegistry().getInfo(bundleInfo.parentNftId);
|
53
|
-
}
|
54
|
-
|
55
|
-
nftId = this.getRegistry().registerObjectForInstance(
|
56
|
-
productInfo.nftId,
|
57
|
-
POLICY(),
|
58
|
-
applicationOwner
|
59
|
-
);
|
60
|
-
|
61
|
-
_policyInfo[nftId] = PolicyInfo(
|
62
|
-
nftId,
|
63
|
-
_lifecycleModule.getInitialState(POLICY()),
|
64
|
-
sumInsuredAmount,
|
65
|
-
premiumAmount,
|
66
|
-
0, // premium paid amount
|
67
|
-
lifetime,
|
68
|
-
// solhint-disable-next-line not-rely-on-time
|
69
|
-
block.timestamp, // createdAt
|
70
|
-
// solhint-disable-next-line not-rely-on-time
|
71
|
-
block.timestamp, // updatedAt
|
72
|
-
0, // activatedAt
|
73
|
-
0, // expiredAt
|
74
|
-
0 // closedAt
|
75
|
-
);
|
76
|
-
|
77
|
-
_bundleForPolicy[nftId] = bundleNftId;
|
78
|
-
|
79
|
-
// add logging
|
80
|
-
}
|
81
|
-
|
82
|
-
function processPremium(NftId nftId) external override onlyProductService2 {
|
83
|
-
PolicyInfo storage info = _policyInfo[nftId];
|
84
|
-
info.premiumPaidAmount = info.premiumAmount;
|
85
|
-
// solhint-disable-next-line not-rely-on-time
|
86
|
-
info.updatedAt = block.timestamp;
|
87
|
-
}
|
88
|
-
|
89
|
-
function activate(NftId nftId) external override onlyProductService2 {
|
90
|
-
PolicyInfo storage info = _policyInfo[nftId];
|
91
|
-
// solhint-disable-next-line not-rely-on-time
|
92
|
-
info.activatedAt = block.timestamp;
|
93
|
-
// solhint-disable-next-line not-rely-on-time
|
94
|
-
info.expiredAt = block.timestamp + info.lifetime;
|
95
|
-
info.state = _lifecycleModule.checkAndLogTransition(
|
96
|
-
nftId,
|
97
|
-
POLICY(),
|
98
|
-
info.state,
|
99
|
-
ACTIVE()
|
100
|
-
);
|
101
|
-
}
|
102
|
-
|
103
|
-
function getBundleNftForPolicy(
|
104
|
-
NftId nftId
|
105
|
-
) external view returns (NftId bundleNft) {
|
106
|
-
return _bundleForPolicy[nftId];
|
107
|
-
}
|
108
|
-
|
109
|
-
function getPolicyInfo(
|
110
|
-
NftId nftId
|
111
|
-
) external view returns (PolicyInfo memory info) {
|
112
|
-
return _policyInfo[nftId];
|
113
|
-
}
|
114
|
-
}
|
@@ -1,23 +0,0 @@
|
|
1
|
-
// SPDX-License-Identifier: Apache-2.0
|
2
|
-
pragma solidity ^0.8.19;
|
3
|
-
|
4
|
-
import {IOwnable, IRegistry, IRegistryLinked} from "../../registry/IRegistry.sol";
|
5
|
-
import {NftId} from "../../types/NftId.sol";
|
6
|
-
|
7
|
-
interface IPool {
|
8
|
-
struct PoolInfo {
|
9
|
-
NftId nftId;
|
10
|
-
uint256 capital;
|
11
|
-
uint256 lockedCapital;
|
12
|
-
}
|
13
|
-
}
|
14
|
-
|
15
|
-
interface IPoolModule is IOwnable, IRegistryLinked, IPool {
|
16
|
-
function underwrite(NftId policyNftId, NftId productNftId) external;
|
17
|
-
|
18
|
-
function registerPool(NftId nftId) external;
|
19
|
-
|
20
|
-
function getPoolInfo(
|
21
|
-
NftId nftId
|
22
|
-
) external view returns (PoolInfo memory info);
|
23
|
-
}
|