@etherisc/gif-next 0.0.2-e37834a-021 → 0.0.2-e38b7e6-931
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 +171 -2
- package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +1 -1
- package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.json +282 -2
- package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/components/Distribution.sol/Distribution.json +313 -72
- package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.json +234 -3
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +0 -25
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +24 -57
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +5 -55
- package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/components/Pool.sol/Pool.json +378 -127
- package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/components/Product.sol/Product.json +391 -107
- 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 +813 -1184
- 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/{base/IService.sol/IService.json → IInstanceService.sol/IInstanceService.json} +244 -18
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +1762 -1332
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +1047 -0
- package/artifacts/contracts/instance/InstanceBase.sol/InstanceBase.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceBase.sol/InstanceBase.json +763 -0
- 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 +963 -0
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +460 -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 +1 -1
- package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.json +240 -11
- package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +1 -1
- package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +0 -13
- package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.json +27 -158
- package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +1 -1
- package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +37 -245
- package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +1 -1
- package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +2 -2
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +4 -0
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +254 -0
- package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +4 -0
- package/artifacts/contracts/instance/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/{distribution/IDistribution.sol → IDistribution.sol}/IDistribution.json +1 -1
- 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/{risk/IRisk.sol → IRisk.sol}/IRisk.json +1 -1
- package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +4 -0
- package/artifacts/contracts/instance/{base/ModuleBase.sol/ModuleBase.json → module/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 +1121 -0
- package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +436 -0
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +304 -39
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +424 -0
- package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.json +720 -0
- package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +93 -16
- package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.json +771 -0
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +95 -80
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +89 -227
- package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +1246 -0
- package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +492 -0
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +287 -111
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +424 -0
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +258 -347
- package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +424 -0
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +47 -2
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +157 -71
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +339 -31
- package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
- package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
- package/artifacts/contracts/registry/Registry.sol/Registry.json +131 -212
- package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +4 -0
- package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +285 -0
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +382 -72
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +68 -77
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +4 -0
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +530 -0
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +4 -0
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +397 -0
- package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +1 -1
- package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
- package/artifacts/contracts/shared/ERC165.sol/ERC165.json +2 -2
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +4 -0
- package/artifacts/contracts/{instance/module/component/ComponentModule.sol/ComponentModule.json → shared/INftOwnable.sol/INftOwnable.json} +67 -57
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +80 -3
- package/artifacts/contracts/shared/IService.sol/IService.dbg.json +4 -0
- package/artifacts/contracts/{instance/service/IComponentOwnerService.sol/IComponentOwnerService.json → shared/IService.sol/IService.json} +90 -58
- package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +32 -6
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +21 -16
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +120 -6
- package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.dbg.json +4 -0
- package/artifacts/contracts/{instance/base/ServiceBase.sol/ServiceBase.json → shared/RegisterableUpgradable.sol/RegisterableUpgradable.json} +92 -30
- package/artifacts/contracts/shared/Service.sol/Service.dbg.json +4 -0
- package/artifacts/contracts/{instance/base/InstanceBase.sol/InstanceBase.json → shared/Service.sol/Service.json} +100 -88
- 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 +1 -1
- package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +2 -2
- package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
- package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +1 -1
- package/artifacts/contracts/test/TestFee.sol/TestFee.json +4 -4
- package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +1 -1
- package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +120 -6
- package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +1 -1
- package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +14 -14
- package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +1 -1
- package/artifacts/contracts/test/TestService.sol/TestService.json +155 -27
- 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 +2 -2
- package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +1 -1
- package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +18 -2
- package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +1 -1
- package/artifacts/contracts/test/Usdc.sol/USDC.json +91 -53
- 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 +1 -1
- package/artifacts/contracts/types/Fee.sol/FeeLib.json +4 -4
- package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +1 -1
- package/artifacts/contracts/types/Key32.sol/Key32Lib.json +31 -17
- package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/NftId.sol/NftIdLib.json +2 -2
- 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 +1 -1
- package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +2 -2
- package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +134 -8
- 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/{UFixedMathLib.json → UFixedLib.json} +3 -3
- package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +1 -1
- package/artifacts/contracts/types/Version.sol/VersionLib.json +2 -2
- package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +1 -1
- package/artifacts/contracts/types/Version.sol/VersionPartLib.json +22 -3
- package/contracts/components/BaseComponent.sol +107 -18
- package/contracts/components/Distribution.sol +24 -25
- package/contracts/components/IBaseComponent.sol +20 -4
- package/contracts/components/IDistributionComponent.sol +2 -4
- package/contracts/components/IPoolComponent.sol +5 -3
- package/contracts/components/IProductComponent.sol +4 -6
- package/contracts/components/Pool.sol +58 -46
- package/contracts/components/Product.sol +71 -75
- 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 +54 -48
- package/contracts/instance/IInstanceBase.sol +25 -0
- package/contracts/instance/IInstanceService.sol +40 -0
- package/contracts/instance/Instance.sol +245 -68
- package/contracts/instance/InstanceAccessManager.sol +303 -0
- package/contracts/instance/InstanceBase.sol +39 -0
- package/contracts/instance/InstanceReader.sol +315 -0
- package/contracts/instance/InstanceService.sol +345 -0
- package/contracts/instance/InstanceServiceManager.sol +54 -0
- package/contracts/instance/ObjectManager.sol +101 -0
- package/contracts/instance/base/ComponentServiceBase.sol +109 -20
- package/contracts/instance/base/IInstanceBase.sol +0 -2
- package/contracts/instance/base/IKeyValueStore.sol +13 -14
- package/contracts/instance/base/ILifecycle.sol +3 -3
- package/contracts/instance/base/KeyValueStore.sol +49 -38
- package/contracts/instance/base/Lifecycle.sol +1 -1
- 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 +294 -0
- package/contracts/instance/service/BundleServiceManager.sol +51 -0
- package/contracts/instance/service/DistributionService.sol +79 -18
- package/contracts/instance/service/DistributionServiceManager.sol +51 -0
- package/contracts/instance/service/IBundleService.sol +44 -0
- package/contracts/instance/service/IDistributionService.sol +1 -1
- package/contracts/instance/service/IPolicyService.sol +94 -0
- package/contracts/instance/service/IPoolService.sol +7 -24
- package/contracts/instance/service/IProductService.sol +9 -76
- package/contracts/instance/service/PolicyService.sol +539 -0
- package/contracts/instance/service/PolicyServiceManager.sol +54 -0
- package/contracts/instance/service/PoolService.sol +101 -108
- package/contracts/instance/service/PoolServiceManager.sol +51 -0
- package/contracts/instance/service/ProductService.sol +130 -431
- package/contracts/instance/service/ProductServiceManager.sol +54 -0
- package/contracts/registry/ChainNft.sol +41 -26
- package/contracts/registry/IRegistry.sol +48 -30
- package/contracts/registry/IRegistryService.sol +53 -24
- package/contracts/registry/Registry.sol +212 -306
- package/contracts/registry/RegistryAccessManager.sol +210 -0
- package/contracts/registry/RegistryService.sol +151 -206
- package/contracts/registry/RegistryServiceManager.sol +26 -16
- package/contracts/registry/ReleaseManager.sol +342 -0
- package/contracts/registry/TokenRegistry.sol +110 -0
- package/contracts/shared/ERC165.sol +7 -3
- package/contracts/shared/INftOwnable.sol +22 -0
- package/contracts/shared/IRegisterable.sol +3 -10
- package/contracts/shared/IService.sol +16 -0
- package/contracts/shared/NftOwnable.sol +85 -38
- package/contracts/shared/ProxyManager.sol +4 -13
- package/contracts/shared/Registerable.sol +15 -42
- package/contracts/shared/RegisterableUpgradable.sol +16 -0
- package/contracts/shared/Service.sol +58 -0
- package/contracts/shared/TokenHandler.sol +27 -0
- package/contracts/shared/UpgradableProxyWithAdmin.sol +2 -2
- package/contracts/shared/Versionable.sol +3 -3
- package/contracts/test/TestFee.sol +2 -2
- package/contracts/test/TestRoleId.sol +1 -1
- package/contracts/test/TestService.sol +6 -7
- package/contracts/types/DistributorType.sol +55 -0
- package/contracts/types/Fee.sol +3 -3
- package/contracts/types/Key32.sol +8 -3
- package/contracts/types/NftIdSet.sol +26 -24
- package/contracts/types/NumberId.sol +52 -0
- package/contracts/types/ObjectType.sol +35 -14
- package/contracts/types/Referral.sol +85 -0
- package/contracts/types/RoleId.sol +61 -9
- package/contracts/types/StateId.sol +5 -1
- package/contracts/types/Timestamp.sol +7 -3
- package/contracts/types/UFixed.sol +128 -12
- package/contracts/types/Version.sol +4 -1
- 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/base/IService.sol/IService.dbg.json +0 -4
- package/artifacts/contracts/instance/base/InstanceBase.sol/InstanceBase.dbg.json +0 -4
- package/artifacts/contracts/instance/base/ModuleBase.sol/ModuleBase.dbg.json +0 -4
- package/artifacts/contracts/instance/base/ServiceBase.sol/ServiceBase.dbg.json +0 -4
- 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/IAccess.json +0 -10
- 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 -297
- 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 -297
- package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.dbg.json +0 -4
- 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 -117
- package/artifacts/contracts/instance/module/distribution/DistributionModule.sol/DistributionModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/distribution/DistributionModule.sol/DistributionModule.json +0 -10
- package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistribution.dbg.json +0 -4
- package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistributionModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistributionModule.json +0 -10
- 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 -284
- package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.json +0 -284
- package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPool.dbg.json +0 -4
- package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPool.json +0 -10
- package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.json +0 -164
- package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.json +0 -164
- package/artifacts/contracts/instance/module/risk/IRisk.sol/IRisk.dbg.json +0 -4
- package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.json +0 -113
- package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.json +0 -131
- 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 -638
- 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 -638
- package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +0 -690
- package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +0 -4
- package/artifacts/contracts/registry/IChainNft.sol/IChainNft.dbg.json +0 -4
- package/artifacts/contracts/registry/IChainNft.sol/IChainNft.json +0 -457
- 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/TestDistribution.sol/TestDistribution.dbg.json +0 -4
- package/artifacts/contracts/test/TestDistribution.sol/TestDistribution.json +0 -445
- package/artifacts/contracts/test/TestPool.sol/TestPool.dbg.json +0 -4
- package/artifacts/contracts/test/TestPool.sol/TestPool.json +0 -602
- package/artifacts/contracts/test/TestProduct.sol/TestProduct.dbg.json +0 -4
- package/artifacts/contracts/test/TestProduct.sol/TestProduct.json +0 -632
- package/artifacts/contracts/types/ReferralId.sol/ReferralIdLib.dbg.json +0 -4
- package/artifacts/contracts/types/ReferralId.sol/ReferralIdLib.json +0 -99
- package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.dbg.json +0 -4
- package/contracts/instance/IInstanceLinked.sol +0 -8
- package/contracts/instance/base/IService.sol +0 -15
- package/contracts/instance/base/InstanceBase.sol +0 -89
- package/contracts/instance/base/ModuleBase.sol +0 -57
- package/contracts/instance/base/ServiceBase.sol +0 -43
- 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 -134
- package/contracts/instance/module/bundle/IBundle.sol +0 -53
- package/contracts/instance/module/component/ComponentModule.sol +0 -71
- package/contracts/instance/module/component/IComponent.sol +0 -28
- package/contracts/instance/module/distribution/DistributionModule.sol +0 -17
- package/contracts/instance/module/distribution/IDistribution.sol +0 -10
- package/contracts/instance/module/policy/IPolicy.sol +0 -63
- package/contracts/instance/module/policy/PolicyModule.sol +0 -91
- package/contracts/instance/module/pool/IPoolModule.sol +0 -41
- package/contracts/instance/module/pool/PoolModule.sol +0 -95
- package/contracts/instance/module/risk/IRisk.sol +0 -26
- package/contracts/instance/module/risk/RiskModule.sol +0 -62
- package/contracts/instance/module/treasury/ITreasury.sol +0 -84
- package/contracts/instance/module/treasury/TokenHandler.sol +0 -48
- package/contracts/instance/module/treasury/TreasuryModule.sol +0 -131
- package/contracts/instance/service/ComponentOwnerService.sol +0 -272
- package/contracts/instance/service/IComponentOwnerService.sol +0 -20
- package/contracts/registry/IChainNft.sol +0 -22
- package/contracts/shared/IOwnable.sol +0 -6
- package/contracts/test/TestDistribution.sol +0 -22
- package/contracts/test/TestPool.sol +0 -27
- package/contracts/test/TestProduct.sol +0 -74
- package/contracts/types/ReferralId.sol +0 -48
@@ -0,0 +1,294 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.19;
|
3
|
+
|
4
|
+
import {Pool} from "../../components/Pool.sol";
|
5
|
+
import {IRegistry} from "../../registry/IRegistry.sol";
|
6
|
+
import {IInstance} from "../../instance/IInstance.sol";
|
7
|
+
import {IBundle} from "../../instance/module/IBundle.sol";
|
8
|
+
import {TokenHandler} from "../../instance/module/ITreasury.sol";
|
9
|
+
import {ISetup} from "../module/ISetup.sol";
|
10
|
+
import {IPolicy} from "../module/IPolicy.sol";
|
11
|
+
|
12
|
+
import {IVersionable} from "../../shared/IVersionable.sol";
|
13
|
+
import {Versionable} from "../../shared/Versionable.sol";
|
14
|
+
import {INftOwnable} from "../../shared/INftOwnable.sol";
|
15
|
+
|
16
|
+
import {NftId, NftIdLib, zeroNftId} from "../../types/NftId.sol";
|
17
|
+
import {ObjectType, POOL, BUNDLE} from "../../types/ObjectType.sol";
|
18
|
+
import {POOL_OWNER_ROLE, RoleId} from "../../types/RoleId.sol";
|
19
|
+
import {Fee, FeeLib} from "../../types/Fee.sol";
|
20
|
+
import {Version, VersionLib} from "../../types/Version.sol";
|
21
|
+
import {KEEP_STATE, StateId} from "../../types/StateId.sol";
|
22
|
+
import {TimestampLib, zeroTimestamp} from "../../types/Timestamp.sol";
|
23
|
+
|
24
|
+
import {IService} from "../../shared/IService.sol";
|
25
|
+
import {Service} from "../../shared/Service.sol";
|
26
|
+
import {BundleManager} from "../BundleManager.sol";
|
27
|
+
import {ComponentServiceBase} from "../base/ComponentServiceBase.sol";
|
28
|
+
import {IBundleService} from "./IBundleService.sol";
|
29
|
+
import {IRegistryService} from "../../registry/IRegistryService.sol";
|
30
|
+
import {InstanceService} from "../InstanceService.sol";
|
31
|
+
import {InstanceReader} from "../InstanceReader.sol";
|
32
|
+
import {IBaseComponent} from "../../components/IBaseComponent.sol";
|
33
|
+
|
34
|
+
string constant BUNDLE_SERVICE_NAME = "BundleService";
|
35
|
+
|
36
|
+
contract BundleService is
|
37
|
+
ComponentServiceBase,
|
38
|
+
IBundleService
|
39
|
+
{
|
40
|
+
using NftIdLib for NftId;
|
41
|
+
|
42
|
+
string public constant NAME = "BundleService";
|
43
|
+
|
44
|
+
address internal _registryAddress;
|
45
|
+
|
46
|
+
function _initialize(
|
47
|
+
address owner,
|
48
|
+
bytes memory data
|
49
|
+
)
|
50
|
+
internal
|
51
|
+
initializer
|
52
|
+
virtual override
|
53
|
+
{
|
54
|
+
address registryAddress;
|
55
|
+
address initialOwner;
|
56
|
+
(registryAddress, initialOwner) = abi.decode(data, (address, address));
|
57
|
+
// TODO while PoolService is not deployed in PoolServiceManager constructor
|
58
|
+
// owner is PoolServiceManager deployer
|
59
|
+
_initializeService(registryAddress, owner);
|
60
|
+
|
61
|
+
_registerInterface(type(IBundleService).interfaceId);
|
62
|
+
}
|
63
|
+
|
64
|
+
function getDomain() public pure override(Service, IService) returns(ObjectType) {
|
65
|
+
return BUNDLE();
|
66
|
+
}
|
67
|
+
|
68
|
+
function createBundle(
|
69
|
+
address owner,
|
70
|
+
Fee memory fee,
|
71
|
+
uint256 stakingAmount,
|
72
|
+
uint256 lifetime,
|
73
|
+
bytes calldata filter
|
74
|
+
)
|
75
|
+
external
|
76
|
+
override
|
77
|
+
returns(NftId bundleNftId)
|
78
|
+
{
|
79
|
+
(IRegistry.ObjectInfo memory info, IInstance instance) = _getAndVerifyComponentInfoAndInstance(POOL());
|
80
|
+
InstanceReader instanceReader = instance.getInstanceReader();
|
81
|
+
NftId poolNftId = info.nftId;
|
82
|
+
|
83
|
+
IBundle.BundleInfo memory bundleInfo = IBundle.BundleInfo(
|
84
|
+
poolNftId,
|
85
|
+
fee,
|
86
|
+
filter,
|
87
|
+
stakingAmount,
|
88
|
+
0,
|
89
|
+
stakingAmount,
|
90
|
+
lifetime,
|
91
|
+
zeroTimestamp(),
|
92
|
+
zeroTimestamp()
|
93
|
+
);
|
94
|
+
|
95
|
+
// register bundle with registry
|
96
|
+
bundleNftId = getRegistryService().registerBundle(
|
97
|
+
IRegistry.ObjectInfo(
|
98
|
+
zeroNftId(),
|
99
|
+
poolNftId,
|
100
|
+
BUNDLE(),
|
101
|
+
false, // intercepting property for bundles is defined on pool
|
102
|
+
address(0),
|
103
|
+
owner,
|
104
|
+
abi.encode(bundleInfo)
|
105
|
+
)
|
106
|
+
);
|
107
|
+
|
108
|
+
// create bundle info in instance
|
109
|
+
instance.createBundle(bundleNftId, bundleInfo);
|
110
|
+
|
111
|
+
BundleManager bundleManager = instance.getBundleManager();
|
112
|
+
bundleManager.add(bundleNftId);
|
113
|
+
|
114
|
+
_processStakingByTreasury(
|
115
|
+
instanceReader,
|
116
|
+
poolNftId,
|
117
|
+
bundleNftId,
|
118
|
+
stakingAmount);
|
119
|
+
|
120
|
+
// TODO add logging
|
121
|
+
}
|
122
|
+
|
123
|
+
function setBundleFee(
|
124
|
+
NftId bundleNftId,
|
125
|
+
Fee memory fee
|
126
|
+
)
|
127
|
+
external
|
128
|
+
override
|
129
|
+
{
|
130
|
+
(IRegistry.ObjectInfo memory info , IInstance instance) = _getAndVerifyComponentInfoAndInstance(POOL());
|
131
|
+
InstanceReader instanceReader = instance.getInstanceReader();
|
132
|
+
NftId poolNftId = info.nftId;
|
133
|
+
|
134
|
+
IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
|
135
|
+
require(bundleInfo.poolNftId.gtz(), "ERROR:PLS-010:BUNDLE_UNKNOWN");
|
136
|
+
require(poolNftId == bundleInfo.poolNftId, "ERROR:PLS-011:BUNDLE_POOL_MISMATCH");
|
137
|
+
|
138
|
+
bundleInfo.fee = fee;
|
139
|
+
|
140
|
+
instance.updateBundle(bundleNftId, bundleInfo, KEEP_STATE());
|
141
|
+
}
|
142
|
+
|
143
|
+
function updateBundle(NftId instanceNftId, NftId bundleNftId, IBundle.BundleInfo memory bundleInfo, StateId state)
|
144
|
+
external
|
145
|
+
onlyService
|
146
|
+
{
|
147
|
+
IRegistry.ObjectInfo memory instanceInfo = getRegistry().getObjectInfo(instanceNftId);
|
148
|
+
IInstance instance = IInstance(instanceInfo.objectAddress);
|
149
|
+
instance.updateBundle(bundleNftId, bundleInfo, state);
|
150
|
+
}
|
151
|
+
|
152
|
+
function lockBundle(NftId bundleNftId)
|
153
|
+
external
|
154
|
+
{
|
155
|
+
(, IInstance instance) = _getAndVerifyComponentInfoAndInstance(POOL());
|
156
|
+
BundleManager bundleManager = instance.getBundleManager();
|
157
|
+
bundleManager.lock(bundleNftId);
|
158
|
+
}
|
159
|
+
|
160
|
+
function unlockBundle(NftId bundleNftId)
|
161
|
+
external
|
162
|
+
{
|
163
|
+
(, IInstance instance) = _getAndVerifyComponentInfoAndInstance(POOL());
|
164
|
+
BundleManager bundleManager = instance.getBundleManager();
|
165
|
+
bundleManager.unlock(bundleNftId);
|
166
|
+
}
|
167
|
+
|
168
|
+
function underwritePolicy(IInstance instance,
|
169
|
+
NftId policyNftId,
|
170
|
+
NftId bundleNftId,
|
171
|
+
uint256 collateralAmount,
|
172
|
+
uint256 netPremiumAmount
|
173
|
+
)
|
174
|
+
external
|
175
|
+
onlyService
|
176
|
+
{
|
177
|
+
InstanceReader instanceReader = instance.getInstanceReader();
|
178
|
+
IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
|
179
|
+
|
180
|
+
// lock collateral
|
181
|
+
bundleInfo.lockedAmount += collateralAmount;
|
182
|
+
bundleInfo.balanceAmount += netPremiumAmount;
|
183
|
+
|
184
|
+
instance.updateBundle(bundleNftId, bundleInfo, KEEP_STATE());
|
185
|
+
|
186
|
+
linkPolicy(instance, policyNftId);
|
187
|
+
}
|
188
|
+
|
189
|
+
function increaseBalance(IInstance instance,
|
190
|
+
NftId bundleNftId,
|
191
|
+
uint256 amount
|
192
|
+
)
|
193
|
+
external
|
194
|
+
onlyService
|
195
|
+
{
|
196
|
+
InstanceReader instanceReader = instance.getInstanceReader();
|
197
|
+
IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
|
198
|
+
|
199
|
+
bundleInfo.balanceAmount += amount;
|
200
|
+
|
201
|
+
instance.updateBundle(bundleNftId, bundleInfo, KEEP_STATE());
|
202
|
+
}
|
203
|
+
|
204
|
+
function closePolicy(IInstance instance,
|
205
|
+
NftId policyNftId,
|
206
|
+
NftId bundleNftId,
|
207
|
+
uint256 collateralAmount
|
208
|
+
)
|
209
|
+
external
|
210
|
+
onlyService
|
211
|
+
{
|
212
|
+
InstanceReader instanceReader = instance.getInstanceReader();
|
213
|
+
IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
|
214
|
+
|
215
|
+
// lock collateral
|
216
|
+
bundleInfo.lockedAmount -= collateralAmount;
|
217
|
+
|
218
|
+
instance.updateBundle(bundleNftId, bundleInfo, KEEP_STATE());
|
219
|
+
|
220
|
+
unlinkPolicy(instance, policyNftId);
|
221
|
+
}
|
222
|
+
|
223
|
+
/// @dev links policy to bundle
|
224
|
+
function linkPolicy(IInstance instance, NftId policyNftId)
|
225
|
+
internal
|
226
|
+
onlyService
|
227
|
+
{
|
228
|
+
InstanceReader instanceReader = instance.getInstanceReader();
|
229
|
+
IPolicy.PolicyInfo memory policyInfo = instanceReader.getPolicyInfo(policyNftId);
|
230
|
+
|
231
|
+
// ensure policy has not yet been activated
|
232
|
+
if (policyInfo.activatedAt.gtz()) {
|
233
|
+
revert BundleManager.ErrorBundleManagerErrorPolicyAlreadyActivated(policyNftId);
|
234
|
+
}
|
235
|
+
|
236
|
+
BundleManager bundleManager = instance.getBundleManager();
|
237
|
+
bundleManager.linkPolicy(policyNftId);
|
238
|
+
}
|
239
|
+
|
240
|
+
/// @dev unlinks policy from bundle
|
241
|
+
function unlinkPolicy(IInstance instance, NftId policyNftId)
|
242
|
+
internal
|
243
|
+
onlyService
|
244
|
+
{
|
245
|
+
InstanceReader instanceReader = instance.getInstanceReader();
|
246
|
+
IPolicy.PolicyInfo memory policyInfo = instanceReader.getPolicyInfo(policyNftId);
|
247
|
+
|
248
|
+
// ensure policy has no open claims
|
249
|
+
if (policyInfo.openClaimsCount > 0) {
|
250
|
+
revert BundleManager.ErrorBundleManagerPolicyWithOpenClaims(
|
251
|
+
policyNftId,
|
252
|
+
policyInfo.openClaimsCount);
|
253
|
+
}
|
254
|
+
|
255
|
+
// ensure policy is closeable
|
256
|
+
if ( TimestampLib.blockTimestamp() < policyInfo.expiredAt
|
257
|
+
&& policyInfo.payoutAmount < policyInfo.sumInsuredAmount)
|
258
|
+
{
|
259
|
+
revert BundleManager.ErrorBundleManagerPolicyNotCloseable(policyNftId);
|
260
|
+
}
|
261
|
+
|
262
|
+
BundleManager bundleManager = instance.getBundleManager();
|
263
|
+
bundleManager.unlinkPolicy(policyNftId);
|
264
|
+
}
|
265
|
+
|
266
|
+
function _processStakingByTreasury(
|
267
|
+
InstanceReader instanceReader,
|
268
|
+
NftId poolNftId,
|
269
|
+
NftId bundleNftId,
|
270
|
+
uint256 stakingAmount
|
271
|
+
)
|
272
|
+
internal
|
273
|
+
{
|
274
|
+
// process token transfer(s)
|
275
|
+
if(stakingAmount > 0) {
|
276
|
+
ISetup.PoolSetupInfo memory poolInfo = instanceReader.getPoolSetupInfo(poolNftId);
|
277
|
+
TokenHandler tokenHandler = poolInfo.tokenHandler;
|
278
|
+
address bundleOwner = getRegistry().ownerOf(bundleNftId);
|
279
|
+
Fee memory stakingFee = poolInfo.stakingFee;
|
280
|
+
|
281
|
+
tokenHandler.transfer(
|
282
|
+
bundleOwner,
|
283
|
+
poolInfo.wallet,
|
284
|
+
stakingAmount
|
285
|
+
);
|
286
|
+
|
287
|
+
|
288
|
+
if (! FeeLib.feeIsZero(stakingFee)) {
|
289
|
+
(uint256 stakingFeeAmount, uint256 netAmount) = FeeLib.calculateFee(stakingFee, stakingAmount);
|
290
|
+
// TODO: track staking fees in pool's state (issue #177)
|
291
|
+
}
|
292
|
+
}
|
293
|
+
}
|
294
|
+
}
|
@@ -0,0 +1,51 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.20;
|
3
|
+
|
4
|
+
import {IVersionable} from "../../shared/IVersionable.sol";
|
5
|
+
import {ProxyManager} from "../../shared/ProxyManager.sol";
|
6
|
+
import {BundleService} from "./BundleService.sol";
|
7
|
+
import {Registry} from "../../registry/Registry.sol";
|
8
|
+
import {RegistryService} from "../../registry/RegistryService.sol";
|
9
|
+
import {ObjectType, REGISTRY} from "../../types/ObjectType.sol";
|
10
|
+
|
11
|
+
contract BundleServiceManager is ProxyManager {
|
12
|
+
|
13
|
+
BundleService private _bundleService;
|
14
|
+
|
15
|
+
/// @dev initializes proxy manager with pool service implementation
|
16
|
+
constructor(
|
17
|
+
address registryAddress
|
18
|
+
)
|
19
|
+
ProxyManager()
|
20
|
+
{
|
21
|
+
BundleService bundleSrv = new BundleService();
|
22
|
+
bytes memory data = abi.encode(registryAddress, address(this));
|
23
|
+
IVersionable versionable = deploy(
|
24
|
+
address(bundleSrv),
|
25
|
+
data);
|
26
|
+
|
27
|
+
_bundleService = BundleService(address(versionable));
|
28
|
+
|
29
|
+
// TODO `this` must have a role or own nft to register service
|
30
|
+
//Registry registry = Registry(registryAddress);
|
31
|
+
//address registryServiceAddress = registry.getServiceAddress(REGISTRY(), _bundleService.getMajorVersion());
|
32
|
+
//RegistryService registryService = RegistryService(registryServiceAddress);
|
33
|
+
//registryService.registerService(_poolService);
|
34
|
+
|
35
|
+
// TODO no nft to link yet
|
36
|
+
// link ownership of instance service manager ot nft owner of instance service
|
37
|
+
//_linkToNftOwnable(
|
38
|
+
// address(registryAddress),
|
39
|
+
// address(_poolService));
|
40
|
+
}
|
41
|
+
|
42
|
+
//--- view functions ----------------------------------------------------//
|
43
|
+
function getBundleService()
|
44
|
+
external
|
45
|
+
view
|
46
|
+
returns (BundleService)
|
47
|
+
{
|
48
|
+
return _bundleService;
|
49
|
+
}
|
50
|
+
|
51
|
+
}
|
@@ -3,39 +3,98 @@ pragma solidity ^0.8.19;
|
|
3
3
|
|
4
4
|
import {IRegistry} from "../../registry/IRegistry.sol";
|
5
5
|
import {IInstance} from "../../instance/IInstance.sol";
|
6
|
-
import {
|
6
|
+
import {InstanceAccessManager} from "../InstanceAccessManager.sol";
|
7
|
+
import {InstanceReader} from "../../instance/InstanceReader.sol";
|
8
|
+
import {ISetup} from "../../instance/module/ISetup.sol";
|
7
9
|
|
8
|
-
import {NftId} from "../../types/NftId.sol";
|
10
|
+
import {NftId, NftIdLib} from "../../types/NftId.sol";
|
9
11
|
import {Fee} from "../../types/Fee.sol";
|
10
|
-
import {
|
12
|
+
import {DISTRIBUTION_OWNER_ROLE} from "../../types/RoleId.sol";
|
13
|
+
import {KEEP_STATE} from "../../types/StateId.sol";
|
14
|
+
import {ObjectType, DISTRIBUTION} from "../../types/ObjectType.sol";
|
11
15
|
import {Version, VersionLib} from "../../types/Version.sol";
|
12
16
|
|
13
17
|
import {IVersionable} from "../../shared/IVersionable.sol";
|
14
18
|
import {Versionable} from "../../shared/Versionable.sol";
|
15
19
|
|
16
|
-
import {IService} from "
|
17
|
-
import {
|
20
|
+
import {IService} from "../../shared/IService.sol";
|
21
|
+
import {Service} from "../../shared/Service.sol";
|
18
22
|
import {ComponentServiceBase} from "../base/ComponentServiceBase.sol";
|
23
|
+
import {InstanceService} from "../InstanceService.sol";
|
19
24
|
import {IDistributionService} from "./IDistributionService.sol";
|
25
|
+
import {IBaseComponent} from "../../components/IBaseComponent.sol";
|
26
|
+
|
20
27
|
|
21
28
|
contract DistributionService is
|
22
29
|
ComponentServiceBase,
|
23
30
|
IDistributionService
|
24
31
|
{
|
25
|
-
|
32
|
+
using NftIdLib for NftId;
|
26
33
|
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
address
|
31
|
-
|
34
|
+
address internal _registryAddress;
|
35
|
+
|
36
|
+
function _initialize(
|
37
|
+
address owner,
|
38
|
+
bytes memory data
|
39
|
+
)
|
40
|
+
internal
|
41
|
+
initializer
|
42
|
+
virtual override
|
32
43
|
{
|
44
|
+
address initialOwner;
|
45
|
+
address registryAddress;
|
46
|
+
(registryAddress, initialOwner) = abi.decode(data, (address, address));
|
47
|
+
// TODO while DistributionService is not deployed in DistributionServiceManager constructor
|
48
|
+
// owner is DistributionServiceManager deployer
|
49
|
+
_initializeService(registryAddress, owner);
|
50
|
+
|
33
51
|
_registerInterface(type(IDistributionService).interfaceId);
|
34
52
|
}
|
35
53
|
|
54
|
+
function getDomain() public pure override(Service, IService) returns(ObjectType) {
|
55
|
+
return DISTRIBUTION();
|
56
|
+
}
|
57
|
+
|
58
|
+
function register(address distributionAddress)
|
59
|
+
external
|
60
|
+
returns(NftId distributionNftId)
|
61
|
+
{
|
62
|
+
(
|
63
|
+
IBaseComponent distribution,
|
64
|
+
address owner,
|
65
|
+
IInstance instance,
|
66
|
+
NftId instanceNftId
|
67
|
+
) = _checkComponentForRegistration(
|
68
|
+
distributionAddress,
|
69
|
+
DISTRIBUTION(),
|
70
|
+
DISTRIBUTION_OWNER_ROLE());
|
71
|
+
|
72
|
+
(
|
73
|
+
IRegistry.ObjectInfo memory distributionInfo,
|
74
|
+
bytes memory data
|
75
|
+
) = getRegistryService().registerDistribution(distribution, owner);
|
76
|
+
distribution.linkToRegisteredNftId();
|
77
|
+
distributionNftId = distributionInfo.nftId;
|
78
|
+
|
79
|
+
(
|
80
|
+
string memory name,
|
81
|
+
ISetup.DistributionSetupInfo memory initialSetup
|
82
|
+
) = _decodeAndVerifyDistributionData(data);
|
83
|
+
instance.createDistributionSetup(distributionNftId, initialSetup);
|
84
|
+
|
85
|
+
getInstanceService().createTarget(instanceNftId, distributionAddress, name);
|
86
|
+
}
|
87
|
+
|
88
|
+
function _decodeAndVerifyDistributionData(bytes memory data)
|
89
|
+
internal
|
90
|
+
returns(string memory name, ISetup.DistributionSetupInfo memory setup)
|
91
|
+
{
|
92
|
+
(name, setup) = abi.decode(
|
93
|
+
data,
|
94
|
+
(string, ISetup.DistributionSetupInfo)
|
95
|
+
);
|
36
96
|
|
37
|
-
|
38
|
-
return NAME;
|
97
|
+
// TODO add checks if applicable
|
39
98
|
}
|
40
99
|
|
41
100
|
function setFees(
|
@@ -44,11 +103,13 @@ contract DistributionService is
|
|
44
103
|
external
|
45
104
|
override
|
46
105
|
{
|
47
|
-
(IRegistry.ObjectInfo memory
|
106
|
+
(IRegistry.ObjectInfo memory info , IInstance instance) = _getAndVerifyComponentInfoAndInstance(DISTRIBUTION());
|
107
|
+
InstanceReader instanceReader = instance.getInstanceReader();
|
108
|
+
NftId distributionNftId = info.nftId;
|
48
109
|
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
instance.
|
110
|
+
ISetup.DistributionSetupInfo memory distSetupInfo = instanceReader.getDistributionSetupInfo(distributionNftId);
|
111
|
+
distSetupInfo.distributionFee = distributionFee;
|
112
|
+
|
113
|
+
instance.updateDistributionSetup(distributionNftId, distSetupInfo, KEEP_STATE());
|
53
114
|
}
|
54
115
|
}
|
@@ -0,0 +1,51 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.20;
|
3
|
+
|
4
|
+
import {IVersionable} from "../../shared/IVersionable.sol";
|
5
|
+
import {ProxyManager} from "../../shared/ProxyManager.sol";
|
6
|
+
import {DistributionService} from "./DistributionService.sol";
|
7
|
+
import {Registry} from "../../registry/Registry.sol";
|
8
|
+
import {RegistryService} from "../../registry/RegistryService.sol";
|
9
|
+
import {REGISTRY} from "../../types/ObjectType.sol";
|
10
|
+
|
11
|
+
contract DistributionServiceManager is ProxyManager {
|
12
|
+
|
13
|
+
DistributionService private _distributionService;
|
14
|
+
|
15
|
+
/// @dev initializes proxy manager with distribution service implementation and deploys instance
|
16
|
+
constructor(
|
17
|
+
address registryAddress
|
18
|
+
)
|
19
|
+
ProxyManager()
|
20
|
+
{
|
21
|
+
DistributionService distSrv = new DistributionService();
|
22
|
+
bytes memory data = abi.encode(registryAddress, address(this));
|
23
|
+
IVersionable versionable = deploy(
|
24
|
+
address(distSrv),
|
25
|
+
data);
|
26
|
+
|
27
|
+
_distributionService = DistributionService(address(versionable));
|
28
|
+
|
29
|
+
// TODO `thi` must have a role or own nft to register service
|
30
|
+
//Registry registry = Registry(registryAddress);
|
31
|
+
//address registryServiceAddress = registry.getServiceAddress(REGISTRY(), _distributionService.getMajorVersion());
|
32
|
+
//RegistryService registryService = RegistryService(registryServiceAddress);
|
33
|
+
//registryService.registerService(_distributionService);
|
34
|
+
|
35
|
+
// TODO no nft to link yet
|
36
|
+
// link ownership of instance service manager ot nft owner of instance service
|
37
|
+
//_linkToNftOwnable(
|
38
|
+
// address(registryAddress),
|
39
|
+
// address(_distributionService));
|
40
|
+
}
|
41
|
+
|
42
|
+
//--- view functions ----------------------------------------------------//
|
43
|
+
function getDistributionService()
|
44
|
+
external
|
45
|
+
view
|
46
|
+
returns (DistributionService distributionService)
|
47
|
+
{
|
48
|
+
return _distributionService;
|
49
|
+
}
|
50
|
+
|
51
|
+
}
|
@@ -0,0 +1,44 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.19;
|
3
|
+
|
4
|
+
import {NftId} from "../../types/NftId.sol";
|
5
|
+
import {Fee} from "../../types/Fee.sol";
|
6
|
+
import {StateId} from "../../types/StateId.sol";
|
7
|
+
import {IService} from "../../shared/IService.sol";
|
8
|
+
import {IBundle} from "../module/IBundle.sol";
|
9
|
+
import {IInstance} from "../../instance/IInstance.sol";
|
10
|
+
|
11
|
+
interface IBundleService is IService {
|
12
|
+
error ErrorIBundleServiceInsufficientAllowance(address bundleOwner, address tokenHandlerAddress, uint256 amount);
|
13
|
+
|
14
|
+
function createBundle(
|
15
|
+
address owner,
|
16
|
+
Fee memory fee,
|
17
|
+
uint256 amount,
|
18
|
+
uint256 lifetime,
|
19
|
+
bytes calldata filter
|
20
|
+
) external returns(NftId bundleNftId);
|
21
|
+
|
22
|
+
function setBundleFee(
|
23
|
+
NftId bundleNftId,
|
24
|
+
Fee memory fee
|
25
|
+
) external;
|
26
|
+
|
27
|
+
function updateBundle(NftId instanceNftId, NftId bundleNftId, IBundle.BundleInfo memory bundleInfo, StateId state) external;
|
28
|
+
|
29
|
+
function underwritePolicy(IInstance instanceNftId, NftId policyNftId, NftId bundleNftId, uint256 collateralAmount, uint256 netPremium) external;
|
30
|
+
|
31
|
+
function increaseBalance(IInstance instance, NftId bundleNftId, uint256 amount) external;
|
32
|
+
|
33
|
+
function closePolicy(IInstance instance, NftId policyNftId, NftId bundleNftId, uint256 collateralAmount) external;
|
34
|
+
|
35
|
+
// function fundBundle(NftId bundleNftId, uint256 amount) external returns(uint256 netAmount);
|
36
|
+
|
37
|
+
// function defundBundle(NftId bundleNftId, uint256 amount) external returns(uint256 netAmount);
|
38
|
+
|
39
|
+
function lockBundle(NftId bundleNftId) external;
|
40
|
+
|
41
|
+
function unlockBundle(NftId bundleNftId) external;
|
42
|
+
|
43
|
+
// function closeBundle(NftId bundleNftId) external;
|
44
|
+
}
|
@@ -3,7 +3,7 @@ pragma solidity ^0.8.19;
|
|
3
3
|
|
4
4
|
import {NftId} from "../../types/NftId.sol";
|
5
5
|
import {Fee} from "../../types/Fee.sol";
|
6
|
-
import {IService} from "
|
6
|
+
import {IService} from "../../shared/IService.sol";
|
7
7
|
|
8
8
|
interface IDistributionService is IService {
|
9
9
|
function setFees(
|
@@ -0,0 +1,94 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.19;
|
3
|
+
|
4
|
+
import {IRisk} from "../module/IRisk.sol";
|
5
|
+
import {IService} from "../../shared/IService.sol";
|
6
|
+
|
7
|
+
import {NftId} from "../../types/NftId.sol";
|
8
|
+
import {ReferralId} from "../../types/Referral.sol";
|
9
|
+
import {RiskId} from "../../types/RiskId.sol";
|
10
|
+
import {StateId} from "../../types/StateId.sol";
|
11
|
+
import {Timestamp} from "../../types/Timestamp.sol";
|
12
|
+
import {UFixed} from "../../types/UFixed.sol";
|
13
|
+
import {Fee} from "../../types/Fee.sol";
|
14
|
+
|
15
|
+
interface IPolicyService is IService {
|
16
|
+
|
17
|
+
error ErrorIPolicyServiceInsufficientAllowance(address customer, address tokenHandlerAddress, uint256 amount);
|
18
|
+
error ErrorIPolicyServicePremiumAlreadyPaid(NftId policyNftId, uint256 premiumPaidAmount);
|
19
|
+
error ErrorIPolicyServicePolicyNotActivated(NftId policyNftId);
|
20
|
+
error ErrorIPolicyServicePolicyAlreadyClosed(NftId policyNftId);
|
21
|
+
error ErrorIPolicyServicePolicyNotActive(NftId policyNftId, StateId state);
|
22
|
+
error ErrorIPolicyServicePremiumNotFullyPaid(NftId policyNftId, uint256 premiumAmount, uint256 premiumPaidAmount);
|
23
|
+
error ErrorIPolicyServiceOpenClaims(NftId policyNftId, uint16 openClaimsCount);
|
24
|
+
error ErrorIPolicyServicePolicyHasNotExpired(NftId policyNftId, Timestamp expiredAt);
|
25
|
+
|
26
|
+
function calculatePremium(
|
27
|
+
RiskId riskId,
|
28
|
+
uint256 sumInsuredAmount,
|
29
|
+
uint256 lifetime,
|
30
|
+
bytes memory applicationData,
|
31
|
+
NftId bundleNftId,
|
32
|
+
ReferralId referralId
|
33
|
+
)
|
34
|
+
external
|
35
|
+
view
|
36
|
+
returns (
|
37
|
+
uint256 premiumAmount,
|
38
|
+
uint256 productFeeAmount,
|
39
|
+
uint256 poolFeeAmount,
|
40
|
+
uint256 bundleFeeAmount,
|
41
|
+
uint256 distributionFeeAmount
|
42
|
+
);
|
43
|
+
|
44
|
+
|
45
|
+
function createApplication(
|
46
|
+
address applicationOwner,
|
47
|
+
RiskId riskId,
|
48
|
+
uint256 sumInsuredAmount,
|
49
|
+
uint256 lifetime,
|
50
|
+
bytes memory applicationData,
|
51
|
+
NftId bundleNftId,
|
52
|
+
ReferralId referralId
|
53
|
+
) external returns (NftId nftId);
|
54
|
+
|
55
|
+
/**
|
56
|
+
* @dev revokes the application represented by {policyNftId}.
|
57
|
+
* an application can only be revoked in applied state.
|
58
|
+
* only the application holder may revoke an application.
|
59
|
+
*/
|
60
|
+
function revoke(NftId policyNftId) external;
|
61
|
+
|
62
|
+
/**
|
63
|
+
* @dev underwrites the policy represented by {policyNftId}.
|
64
|
+
* optionally collects premiums and activates the policy.
|
65
|
+
* - premium payment is only attempted if requirePremiumPayment is set to true
|
66
|
+
* - activation is only done if activateAt is a non-zero timestamp
|
67
|
+
*/
|
68
|
+
function underwrite(
|
69
|
+
NftId policyNftId,
|
70
|
+
bool requirePremiumPayment,
|
71
|
+
Timestamp activateAt
|
72
|
+
) external;
|
73
|
+
|
74
|
+
// function decline(uint256 nftId) external;
|
75
|
+
// function expire(uint256 nftId) external;
|
76
|
+
|
77
|
+
function collectPremium(NftId policyNftId, Timestamp activateAt) external;
|
78
|
+
|
79
|
+
function activate(NftId policyNftId, Timestamp activateAt) external;
|
80
|
+
|
81
|
+
|
82
|
+
function close(NftId nftId) external;
|
83
|
+
|
84
|
+
// function createClaim(uint256 nftId, uint256 claimAmount) external;
|
85
|
+
// function confirmClaim(uint256 nftId, uint256 claimId, uint256 claimAmount) external;
|
86
|
+
// function declineClaim(uint256 nftId, uint256 claimId) external;
|
87
|
+
// function closeClaim(uint256 nftId, uint256 claimId) external; // TODO payoutClaim() -> implicit close when payed out in full
|
88
|
+
|
89
|
+
function calculateRequiredCollateral(
|
90
|
+
UFixed collateralizationLevel,
|
91
|
+
uint256 sumInsuredAmount
|
92
|
+
) external pure returns(uint256 collateralAmount);
|
93
|
+
|
94
|
+
}
|