@etherisc/gif-next 0.0.2-b38343e-249 → 0.0.2-b44ae3c-205
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 +6 -83
- package/artifacts/contracts/components/Component.sol/Component.dbg.json +1 -1
- package/artifacts/contracts/components/Component.sol/Component.json +115 -95
- package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/components/Distribution.sol/Distribution.json +182 -195
- package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IComponent.sol/IComponent.json +190 -67
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +207 -150
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +389 -181
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +213 -158
- package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/components/Pool.sol/Pool.json +334 -249
- package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/components/Product.sol/Product.json +135 -183
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +1 -1
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +64 -50
- package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +1 -1
- package/artifacts/contracts/instance/Cloneable.sol/Cloneable.json +5 -0
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +306 -2137
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +193 -75
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +432 -2883
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +491 -127
- package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +124 -0
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +425 -242
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +231 -287
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +38 -75
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +2788 -0
- package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +1 -1
- package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +8 -13
- package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.json +123 -33
- package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +1 -1
- package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +40 -10
- package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +1 -1
- package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +36 -11
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +56 -73
- package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
- package/artifacts/contracts/instance/module/IComponents.sol/IComponents.json +10 -0
- package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
- package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +1 -1
- package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.json +186 -126
- package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.json +29 -38
- package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +443 -240
- package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +74 -39
- package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.json +722 -81
- package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.json +147 -32
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +732 -111
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +147 -44
- package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.json +126 -95
- package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.json +300 -187
- package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.json +395 -50
- package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +424 -64
- package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.json +212 -133
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +787 -46
- package/artifacts/contracts/instance/service/IPricingService.sol/IPricingService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/IPricingService.sol/IPricingService.json +510 -0
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +95 -26
- package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +387 -215
- package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +84 -61
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +958 -52
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +96 -37
- package/artifacts/contracts/instance/service/PricingService.sol/PricingService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/PricingService.sol/PricingService.json +1004 -0
- package/artifacts/contracts/instance/service/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/PricingServiceManager.sol/PricingServiceManager.json +688 -0
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +152 -54
- package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +28 -37
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +15 -2
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +19 -0
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +5 -26
- package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
- package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +18 -0
- package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
- package/artifacts/contracts/registry/Registry.sol/Registry.json +31 -12
- package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +2 -2
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +23 -39
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +21 -34
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +23 -11
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +10 -23
- package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +4 -0
- package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +1206 -0
- package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +1 -1
- package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +0 -13
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +69 -9
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +0 -13
- package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.json +0 -13
- package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
- package/artifacts/contracts/shared/IService.sol/IService.json +95 -26
- 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 +6 -19
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +80 -26
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +14 -27
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +7 -20
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -15
- package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
- package/artifacts/contracts/shared/Service.sol/Service.json +102 -28
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +24 -6
- package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
- package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +2 -2
- package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
- package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +1 -1
- package/artifacts/contracts/test/TestFee.sol/TestFee.json +2 -2
- package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +1 -1
- package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +7 -20
- package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +1 -1
- package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +6 -6
- package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +1 -1
- package/artifacts/contracts/test/TestService.sol/TestService.json +117 -39
- package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +1 -1
- package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +1 -1
- package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +2 -2
- package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +1 -1
- package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +2 -2
- package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +1 -1
- package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +1 -1
- package/artifacts/contracts/types/Amount.sol/AmountLib.dbg.json +4 -0
- package/artifacts/contracts/types/Amount.sol/AmountLib.json +281 -0
- package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
- package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +2 -2
- package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.json +83 -4
- package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
- package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +2 -2
- package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +1 -1
- package/artifacts/contracts/types/Fee.sol/FeeLib.json +74 -19
- package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +1 -1
- package/artifacts/contracts/types/Key32.sol/Key32Lib.json +2 -2
- package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/NftId.sol/NftIdLib.json +17 -4
- package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
- package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +2 -2
- package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
- package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +2 -2
- package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.json +116 -7
- package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +1 -1
- package/artifacts/contracts/types/Referral.sol/ReferralLib.json +23 -4
- package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +2 -2
- package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +2 -2
- package/artifacts/contracts/types/Seconds.sol/SecondsLib.dbg.json +4 -0
- package/artifacts/contracts/types/Seconds.sol/SecondsLib.json +124 -0
- package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/StateId.sol/StateIdLib.json +2 -2
- package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +1 -1
- package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +38 -7
- package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +1 -1
- package/artifacts/contracts/types/UFixed.sol/MathLib.json +2 -2
- package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +1 -1
- package/artifacts/contracts/types/UFixed.sol/UFixedLib.json +2 -2
- package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +1 -1
- package/artifacts/contracts/types/Version.sol/VersionLib.json +2 -2
- package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +1 -1
- package/artifacts/contracts/types/Version.sol/VersionPartLib.json +2 -2
- package/contracts/components/Component.sol +115 -85
- package/contracts/components/Distribution.sol +27 -50
- package/contracts/components/IComponent.sol +52 -17
- package/contracts/components/IDistributionComponent.sol +1 -30
- package/contracts/components/IPoolComponent.sol +75 -48
- package/contracts/components/IProductComponent.sol +8 -6
- package/contracts/components/Pool.sol +178 -130
- package/contracts/components/Product.sol +164 -74
- package/contracts/instance/BundleManager.sol +10 -9
- package/contracts/instance/Cloneable.sol +7 -2
- package/contracts/instance/IInstance.sol +40 -55
- package/contracts/instance/IInstanceService.sol +28 -14
- package/contracts/instance/Instance.sol +123 -185
- package/contracts/instance/InstanceAccessManager.sol +404 -160
- package/contracts/instance/InstanceAuthorizationsLib.sol +308 -0
- package/contracts/instance/InstanceReader.sol +90 -15
- package/contracts/instance/InstanceService.sol +173 -341
- package/contracts/instance/InstanceStore.sol +212 -0
- package/contracts/instance/ObjectManager.sol +6 -8
- package/contracts/instance/base/ComponentService.sol +53 -39
- package/contracts/instance/base/KeyValueStore.sol +13 -36
- package/contracts/instance/base/Lifecycle.sol +26 -6
- package/contracts/instance/module/IAccess.sol +21 -14
- package/contracts/instance/module/IBundle.sol +8 -5
- package/contracts/instance/module/IComponents.sol +41 -0
- package/contracts/instance/module/IDistribution.sol +3 -0
- package/contracts/instance/module/IPolicy.sol +39 -9
- package/contracts/instance/module/ISetup.sol +7 -21
- package/contracts/instance/service/ApplicationService.sol +68 -150
- package/contracts/instance/service/BundleService.sol +223 -139
- package/contracts/instance/service/ClaimService.sol +318 -32
- package/contracts/instance/service/DistributionService.sol +171 -100
- package/contracts/instance/service/IApplicationService.sol +11 -31
- package/contracts/instance/service/IBundleService.sol +92 -28
- package/contracts/instance/service/IClaimService.sol +52 -23
- package/contracts/instance/service/IDistributionService.sol +33 -11
- package/contracts/instance/service/IPolicyService.sol +24 -33
- package/contracts/instance/service/IPoolService.sol +97 -3
- package/contracts/instance/service/IPricingService.sol +37 -0
- package/contracts/instance/service/PolicyService.sol +168 -266
- package/contracts/instance/service/PoolService.sol +313 -19
- package/contracts/instance/service/PricingService.sol +275 -0
- package/contracts/instance/service/PricingServiceManager.sol +51 -0
- package/contracts/instance/service/ProductService.sol +37 -60
- package/contracts/registry/ChainNft.sol +8 -0
- package/contracts/registry/IRegistry.sol +2 -0
- package/contracts/registry/IRegistryService.sol +2 -3
- package/contracts/registry/ITransferInterceptor.sol +1 -0
- package/contracts/registry/Registry.sol +23 -20
- package/contracts/registry/RegistryService.sol +29 -26
- package/contracts/registry/ReleaseManager.sol +20 -18
- package/contracts/shared/AccessManagerUpgradeableInitializeable.sol +13 -0
- package/contracts/shared/IPolicyHolder.sol +23 -9
- package/contracts/shared/IRegistryLinked.sol +0 -1
- package/contracts/shared/IService.sol +6 -4
- package/contracts/shared/NftOwnable.sol +0 -2
- package/contracts/shared/PolicyHolder.sol +30 -17
- package/contracts/shared/Registerable.sol +12 -11
- package/contracts/shared/RegistryLinked.sol +0 -5
- package/contracts/shared/Service.sol +21 -7
- package/contracts/shared/TokenHandler.sol +14 -6
- package/contracts/test/TestService.sol +1 -1
- package/contracts/types/Amount.sol +109 -0
- package/contracts/types/Blocknumber.sol +1 -0
- package/contracts/types/ClaimId.sol +25 -2
- package/contracts/types/Fee.sol +17 -8
- package/contracts/types/NftId.sol +8 -0
- package/contracts/types/ObjectType.sol +10 -5
- package/contracts/types/PayoutId.sol +33 -5
- package/contracts/types/Referral.sol +4 -0
- package/contracts/types/RoleId.sol +13 -6
- package/contracts/types/Seconds.sol +54 -0
- package/contracts/types/StateId.sol +7 -2
- package/contracts/types/Timestamp.sol +18 -13
- package/contracts/types/UFixed.sol +1 -0
- package/contracts/types/Version.sol +1 -0
- package/package.json +1 -1
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +0 -4
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.json +0 -66
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +0 -4
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.json +0 -24
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +0 -4
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.json +0 -42
- package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
- package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
- package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
- package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
- package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
- package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
- package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
- package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
- package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
- package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/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/experiment/types/TypeB.sol/TypeBLib.json +0 -10
- package/contracts/experiment/cloning/Cloner.sol +0 -47
- package/contracts/experiment/errors/Require.sol +0 -38
- package/contracts/experiment/errors/Revert.sol +0 -44
- package/contracts/experiment/inheritance/A.sol +0 -53
- package/contracts/experiment/inheritance/B.sol +0 -28
- package/contracts/experiment/inheritance/C.sol +0 -34
- package/contracts/experiment/inheritance/IA.sol +0 -13
- package/contracts/experiment/inheritance/IB.sol +0 -10
- package/contracts/experiment/inheritance/IC.sol +0 -12
- package/contracts/experiment/statemachine/Dummy.sol +0 -27
- package/contracts/experiment/statemachine/ISM.sol +0 -25
- package/contracts/experiment/statemachine/SM.sol +0 -57
- package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
- package/contracts/experiment/types/TypeA.sol +0 -47
- package/contracts/experiment/types/TypeB.sol +0 -29
@@ -8,6 +8,7 @@ import {NftId, zeroNftId, NftIdLib, toNftId} from "../types/NftId.sol";
|
|
8
8
|
import {ReferralId, ReferralStatus, ReferralLib} from "../types/Referral.sol";
|
9
9
|
import {Fee, FeeLib} from "../types/Fee.sol";
|
10
10
|
import {Component} from "./Component.sol";
|
11
|
+
import {IDistribution} from "../instance/module/IDistribution.sol";
|
11
12
|
import {IDistributionComponent} from "./IDistributionComponent.sol";
|
12
13
|
import {IRegistry} from "../registry/IRegistry.sol";
|
13
14
|
import {IRegisterable} from "../shared/IRegisterable.sol";
|
@@ -17,7 +18,7 @@ import {TokenHandler} from "../shared/TokenHandler.sol";
|
|
17
18
|
import {InstanceReader} from "../instance/InstanceReader.sol";
|
18
19
|
import {UFixed} from "../types/UFixed.sol";
|
19
20
|
import {DistributorType} from "../types/DistributorType.sol";
|
20
|
-
import {Timestamp} from "../types/Timestamp.sol";
|
21
|
+
import {Timestamp, TimestampLib} from "../types/Timestamp.sol";
|
21
22
|
import {ITransferInterceptor} from "../registry/ITransferInterceptor.sol";
|
22
23
|
|
23
24
|
|
@@ -29,37 +30,43 @@ abstract contract Distribution is
|
|
29
30
|
bytes32 public constant DISTRIBUTION_STORAGE_LOCATION_V1 = 0xaab7c5ea03d290056d6c060e0833d3ebcbe647f7694616a2ec52738a64b2f900;
|
30
31
|
|
31
32
|
struct DistributionStorage {
|
33
|
+
Fee _minDistributionOwnerFee;
|
32
34
|
Fee _distributionFee;
|
33
35
|
TokenHandler _tokenHandler;
|
34
36
|
IDistributionService _distributionService;
|
35
37
|
mapping(address distributor => NftId distributorNftId) _distributorNftId;
|
36
38
|
}
|
37
39
|
|
40
|
+
error ErrorDistributionAlreadyDistributor(address distributor, NftId distributorNftId);
|
41
|
+
|
38
42
|
function initializeDistribution(
|
39
43
|
address registry,
|
40
44
|
NftId instanceNftId,
|
41
45
|
string memory name,
|
42
46
|
address token,
|
47
|
+
Fee memory minDistributionOwnerFee,
|
43
48
|
Fee memory distributionFee,
|
44
49
|
address initialOwner,
|
45
|
-
bytes memory data
|
50
|
+
bytes memory registryData // writeonly data that will saved in the object info record of the registry
|
46
51
|
)
|
47
52
|
public
|
48
53
|
virtual
|
49
54
|
onlyInitializing()
|
50
55
|
{
|
51
|
-
initializeComponent(registry, instanceNftId, name, token, DISTRIBUTION(), true, initialOwner,
|
56
|
+
initializeComponent(registry, instanceNftId, name, token, DISTRIBUTION(), true, initialOwner, registryData);
|
52
57
|
|
53
58
|
DistributionStorage storage $ = _getDistributionStorage();
|
54
59
|
// TODO add validation
|
60
|
+
$._minDistributionOwnerFee = minDistributionOwnerFee;
|
55
61
|
$._distributionFee = distributionFee;
|
56
62
|
$._tokenHandler = new TokenHandler(token);
|
57
|
-
$._distributionService =
|
63
|
+
$._distributionService = IDistributionService(_getServiceAddress(DISTRIBUTION()));
|
58
64
|
|
59
65
|
registerInterface(type(IDistributionComponent).interfaceId);
|
60
66
|
}
|
61
67
|
|
62
68
|
function setFees(
|
69
|
+
Fee memory minDistributionOwnerFee,
|
63
70
|
Fee memory distributionFee
|
64
71
|
)
|
65
72
|
external
|
@@ -67,7 +74,7 @@ abstract contract Distribution is
|
|
67
74
|
onlyOwner
|
68
75
|
restricted()
|
69
76
|
{
|
70
|
-
_getDistributionStorage()._distributionService.setFees(distributionFee);
|
77
|
+
_getDistributionStorage()._distributionService.setFees(minDistributionOwnerFee, distributionFee);
|
71
78
|
}
|
72
79
|
|
73
80
|
function getDistributionFee() external view returns (Fee memory distributionFee) {
|
@@ -111,7 +118,9 @@ abstract contract Distribution is
|
|
111
118
|
returns(NftId distributorNftId)
|
112
119
|
{
|
113
120
|
DistributionStorage storage $ = _getDistributionStorage();
|
114
|
-
|
121
|
+
if($._distributorNftId[distributor].gtz()) {
|
122
|
+
revert ErrorDistributionAlreadyDistributor(distributor, $._distributorNftId[distributor]);
|
123
|
+
}
|
115
124
|
|
116
125
|
distributorNftId = $._distributionService.createDistributor(
|
117
126
|
distributor,
|
@@ -131,17 +140,18 @@ abstract contract Distribution is
|
|
131
140
|
// and add it
|
132
141
|
{
|
133
142
|
DistributionStorage storage $ = _getDistributionStorage();
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
143
|
+
// TODO re-enable once implemented
|
144
|
+
// $._distributionService.updateDistributorType(
|
145
|
+
// distributorNftId,
|
146
|
+
// distributorType,
|
147
|
+
// data);
|
138
148
|
}
|
139
149
|
|
140
150
|
/**
|
141
151
|
* @dev lets distributors create referral codes.
|
142
152
|
* referral codes need to be unique
|
143
153
|
*/
|
144
|
-
function
|
154
|
+
function _createReferral(
|
145
155
|
NftId distributorNftId,
|
146
156
|
string memory code,
|
147
157
|
UFixed discountPercentage,
|
@@ -149,8 +159,7 @@ abstract contract Distribution is
|
|
149
159
|
Timestamp expiryAt,
|
150
160
|
bytes memory data
|
151
161
|
)
|
152
|
-
|
153
|
-
// TODO add authz (only active distributor)
|
162
|
+
internal
|
154
163
|
returns (ReferralId referralId)
|
155
164
|
{
|
156
165
|
DistributionStorage storage $ = _getDistributionStorage();
|
@@ -163,22 +172,6 @@ abstract contract Distribution is
|
|
163
172
|
data);
|
164
173
|
}
|
165
174
|
|
166
|
-
function calculateFeeAmount(
|
167
|
-
ReferralId referralId,
|
168
|
-
uint256 netPremiumAmount
|
169
|
-
)
|
170
|
-
external
|
171
|
-
view
|
172
|
-
virtual override
|
173
|
-
returns (uint256 feeAmount)
|
174
|
-
{
|
175
|
-
ISetup.DistributionSetupInfo memory setupInfo = getSetupInfo();
|
176
|
-
Fee memory fee = setupInfo.distributionFee;
|
177
|
-
(feeAmount,) = FeeLib.calculateFee(fee, netPremiumAmount);
|
178
|
-
// TODO: use this?
|
179
|
-
// return _distributionService.calculateFeeAmount(referralId, premiumAmount);
|
180
|
-
}
|
181
|
-
|
182
175
|
function isDistributor(address candidate)
|
183
176
|
public
|
184
177
|
view
|
@@ -206,7 +199,7 @@ abstract contract Distribution is
|
|
206
199
|
)
|
207
200
|
{
|
208
201
|
ReferralId referralId = getReferralId(referralCode);
|
209
|
-
return
|
202
|
+
return _getInstanceReader().getDiscountPercentage(referralId);
|
210
203
|
}
|
211
204
|
|
212
205
|
|
@@ -235,19 +228,6 @@ abstract contract Distribution is
|
|
235
228
|
return 0 * netPremiumAmount;
|
236
229
|
}
|
237
230
|
|
238
|
-
function processSale(
|
239
|
-
ReferralId referralId,
|
240
|
-
uint256 premiumAmount
|
241
|
-
)
|
242
|
-
external
|
243
|
-
onlyOwner
|
244
|
-
restricted()
|
245
|
-
virtual override
|
246
|
-
{
|
247
|
-
DistributionStorage storage $ = _getDistributionStorage();
|
248
|
-
$._distributionService.processSale(referralId, premiumAmount);
|
249
|
-
}
|
250
|
-
|
251
231
|
function processRenewal(
|
252
232
|
ReferralId referralId,
|
253
233
|
uint256 feeAmount
|
@@ -260,11 +240,6 @@ abstract contract Distribution is
|
|
260
240
|
// default is no action
|
261
241
|
}
|
262
242
|
|
263
|
-
function referralIsValid(ReferralId referralId) external view returns (bool isValid) {
|
264
|
-
// default is invalid
|
265
|
-
return false;
|
266
|
-
}
|
267
|
-
|
268
243
|
function getSetupInfo() public view returns (ISetup.DistributionSetupInfo memory setupInfo) {
|
269
244
|
InstanceReader reader = getInstance().getInstanceReader();
|
270
245
|
setupInfo = reader.getDistributionSetupInfo(getNftId());
|
@@ -280,13 +255,15 @@ abstract contract Distribution is
|
|
280
255
|
return ISetup.DistributionSetupInfo(
|
281
256
|
zeroNftId(),
|
282
257
|
$._tokenHandler,
|
258
|
+
$._minDistributionOwnerFee,
|
283
259
|
$._distributionFee,
|
284
|
-
address(this)
|
260
|
+
address(this),
|
261
|
+
0
|
285
262
|
);
|
286
263
|
}
|
287
264
|
|
288
265
|
|
289
|
-
function
|
266
|
+
function _nftTransferFrom(address from, address to, uint256 tokenId) internal virtual override {
|
290
267
|
// keep track of distributor nft owner
|
291
268
|
emit LogDistributorUpdated(to, msg.sender);
|
292
269
|
DistributionStorage storage $ = _getDistributionStorage();
|
@@ -1,8 +1,10 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
2
|
pragma solidity ^0.8.20;
|
3
3
|
|
4
|
+
import {IAccessManaged} from "@openzeppelin/contracts/access/manager/IAccessManaged.sol";
|
4
5
|
import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
|
5
6
|
|
7
|
+
import {IComponents} from "../instance/module/IComponents.sol";
|
6
8
|
import {IInstance} from "../instance/IInstance.sol";
|
7
9
|
import {IInstanceService} from "../instance/IInstanceService.sol";
|
8
10
|
import {IProductService} from "../instance/service/IProductService.sol";
|
@@ -10,46 +12,79 @@ import {IRegisterable} from "../shared/IRegisterable.sol";
|
|
10
12
|
import {ITransferInterceptor} from "../registry/ITransferInterceptor.sol";
|
11
13
|
import {NftId} from "../types/NftId.sol";
|
12
14
|
import {ObjectType} from "../types/ObjectType.sol";
|
15
|
+
import {TokenHandler} from "../shared/TokenHandler.sol";
|
13
16
|
|
17
|
+
/// @dev component base class
|
18
|
+
/// component examples are product, distribution, pool and oracle
|
14
19
|
interface IComponent is
|
15
20
|
IRegisterable,
|
16
|
-
ITransferInterceptor
|
21
|
+
ITransferInterceptor,
|
22
|
+
IAccessManaged
|
17
23
|
{
|
18
|
-
|
19
24
|
error ErrorComponentNotChainNft(address caller);
|
20
25
|
error ErrorComponentNotProductService(address caller);
|
21
|
-
error ErrorComponentNotInstance(NftId instanceNftId
|
26
|
+
error ErrorComponentNotInstance(NftId instanceNftId);
|
22
27
|
error ErrorComponentProductNftAlreadySet();
|
28
|
+
|
23
29
|
error ErrorComponentWalletAddressZero();
|
24
|
-
error ErrorComponentWalletAddressIsSameAsCurrent(
|
30
|
+
error ErrorComponentWalletAddressIsSameAsCurrent();
|
25
31
|
error ErrorComponentWalletAllowanceTooSmall(address oldWallet, address newWallet, uint256 allowance, uint256 balance);
|
26
|
-
error ErrorComponentUnauthorized(address caller, uint64 requiredRoleIdNum);
|
27
32
|
|
28
|
-
|
33
|
+
error ErrorComponentWalletNotComponent();
|
34
|
+
|
35
|
+
event LogComponentWalletAddressChanged(address oldWallet, address newWallet);
|
29
36
|
event LogComponentWalletTokensTransferred(address from, address to, uint256 amount);
|
30
37
|
|
31
|
-
|
38
|
+
event LogComponentTokenHandlerApproved(uint256 limit);
|
32
39
|
|
33
|
-
|
40
|
+
/// @dev locks component to disable functions that may change state related to this component, the only exception is function "unlock"
|
41
|
+
/// only component owner (nft holder) is authorizes to call this function
|
34
42
|
function lock() external;
|
43
|
+
|
44
|
+
/// @dev unlocks component to (re-)enable functions that may change state related to this component
|
45
|
+
/// only component owner (nft holder) is authorizes to call this function
|
35
46
|
function unlock() external;
|
36
47
|
|
37
|
-
|
48
|
+
/// @dev approves token hanlder to spend up to the specified amount of tokens
|
49
|
+
/// reverts if component wallet is not component itself
|
50
|
+
/// only component owner (nft holder) is authorizes to call this function
|
51
|
+
function approveTokenHandler(uint256 spendingLimitAmount) external;
|
38
52
|
|
53
|
+
/// @dev sets the wallet address for the component
|
54
|
+
/// if the current wallet has tokens, these will be transferred
|
55
|
+
/// if the new wallet address is externally owned, an approval from the
|
56
|
+
/// owner of the external wallet for the component to move all tokens must exist
|
39
57
|
function setWallet(address walletAddress) external;
|
40
|
-
function getWallet() external view returns (address walletAddress);
|
41
58
|
|
42
|
-
|
59
|
+
/// @dev only product service may set product nft id during registration of product setup
|
60
|
+
function setProductNftId(NftId productNftId) external;
|
43
61
|
|
62
|
+
/// @dev defines the instance to which this component is linked to
|
44
63
|
function getInstance() external view returns (IInstance instance);
|
45
64
|
|
46
|
-
/// @dev returns the
|
47
|
-
///
|
48
|
-
function
|
65
|
+
/// @dev returns the name of this component
|
66
|
+
/// to successfully register the component with an instance the name MUST be unique in the linked instance
|
67
|
+
function getName() external view returns (string memory name);
|
49
68
|
|
50
|
-
|
69
|
+
/// @dev defines which ERC20 token is used by this component
|
70
|
+
function getToken() external view returns (IERC20Metadata token);
|
71
|
+
|
72
|
+
/// @dev returns token handler for this component
|
73
|
+
/// only registered components return a non zero token handler
|
74
|
+
function getTokenHandler() external view returns (TokenHandler tokenHandler);
|
75
|
+
|
76
|
+
/// @dev defines the wallet address used to hold the ERC20 tokens related to this component
|
77
|
+
/// the default address is the component token address
|
78
|
+
function getWallet() external view returns (address walletAddress);
|
79
|
+
|
80
|
+
/// @dev defines the product to which this component is linked to
|
81
|
+
/// this is only relevant for pool and distribution components
|
51
82
|
function getProductNftId() external view returns (NftId productNftId);
|
52
83
|
|
53
|
-
function
|
54
|
-
|
84
|
+
function isNftInterceptor() external view returns(bool isInterceptor);
|
85
|
+
|
86
|
+
/// @dev returns component infos for this pool
|
87
|
+
/// when registered with an instance the info is obtained from the data stored in the instance
|
88
|
+
/// when not registered the function returns the info from the component contract
|
89
|
+
function getComponentInfo() external view returns (IComponents.ComponentInfo memory info);
|
55
90
|
}
|
@@ -17,6 +17,7 @@ interface IDistributionComponent is IComponent {
|
|
17
17
|
function getSetupInfo() external view returns (ISetup.DistributionSetupInfo memory setupInfo);
|
18
18
|
|
19
19
|
function setFees(
|
20
|
+
Fee memory minDistributionOwnerFee,
|
20
21
|
Fee memory distributionFee
|
21
22
|
) external;
|
22
23
|
|
@@ -44,38 +45,11 @@ interface IDistributionComponent is IComponent {
|
|
44
45
|
bytes memory data
|
45
46
|
) external;
|
46
47
|
|
47
|
-
/**
|
48
|
-
* @dev lets distributors create referral codes.
|
49
|
-
* referral codes need to be unique
|
50
|
-
* distributor is identified via msg.sender.
|
51
|
-
*/
|
52
|
-
function createReferral(
|
53
|
-
NftId distributorNftId,
|
54
|
-
string memory code,
|
55
|
-
UFixed discountPercentage,
|
56
|
-
uint32 maxReferrals,
|
57
|
-
Timestamp expiryAt,
|
58
|
-
bytes memory data
|
59
|
-
) external returns (ReferralId referralId);
|
60
|
-
|
61
|
-
function calculateFeeAmount(
|
62
|
-
ReferralId referralId,
|
63
|
-
uint256 netPremiumAmount
|
64
|
-
) external view returns (uint256 feeAmount);
|
65
|
-
|
66
48
|
function calculateRenewalFeeAmount(
|
67
49
|
ReferralId referralId,
|
68
50
|
uint256 netPremiumAmount
|
69
51
|
) external view returns (uint256 feeAmount);
|
70
52
|
|
71
|
-
/// @dev callback from product service when selling a policy for a specific referralId
|
72
|
-
/// the used referral id and the collected fee are provided as parameters
|
73
|
-
/// the component implementation can then process this information accordingly
|
74
|
-
function processSale(
|
75
|
-
ReferralId referralId,
|
76
|
-
uint256 feeAmount
|
77
|
-
) external;
|
78
|
-
|
79
53
|
/// @dev callback from product service when a policy is renews for a specific referralId
|
80
54
|
function processRenewal(
|
81
55
|
ReferralId referralId,
|
@@ -92,9 +66,6 @@ interface IDistributionComponent is IComponent {
|
|
92
66
|
string memory referralCode
|
93
67
|
) external returns (ReferralId referralId);
|
94
68
|
|
95
|
-
/// @dev returns true iff the referral id is valid
|
96
|
-
function referralIsValid(ReferralId referralId) external view returns (bool isValid);
|
97
|
-
|
98
69
|
/// @dev returns true iff the component needs to be called when selling/renewing policis
|
99
70
|
function isVerifying() external view returns (bool verifying);
|
100
71
|
}
|
@@ -1,87 +1,114 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
2
|
pragma solidity ^0.8.20;
|
3
3
|
|
4
|
+
import {Amount} from "../types/Amount.sol";
|
4
5
|
import {Fee} from "../types/Fee.sol";
|
5
6
|
import {IComponent} from "./IComponent.sol";
|
6
|
-
import {
|
7
|
+
import {IComponents} from "../instance/module/IComponents.sol";
|
7
8
|
import {NftId} from "../types/NftId.sol";
|
9
|
+
import {RoleId} from "../types/RoleId.sol";
|
10
|
+
import {Seconds} from "../types/Seconds.sol";
|
8
11
|
import {UFixed} from "../types/UFixed.sol";
|
9
12
|
|
10
13
|
/// @dev pool components hold and manage the collateral to cover active policies
|
11
14
|
/// pools come in different flavors
|
12
15
|
interface IPoolComponent is IComponent {
|
13
16
|
|
14
|
-
|
17
|
+
error ErrorPoolNotBundleOwner(NftId bundleNftId, address caller);
|
18
|
+
error ErrorPoolNotPoolService(address caller);
|
15
19
|
|
16
|
-
error
|
20
|
+
error ErrorPoolApplicationBundleMismatch(NftId applicationNftId);
|
17
21
|
|
18
|
-
|
22
|
+
event LogPoolVerifiedByPool(address pool, NftId applicationNftId, Amount collateralizationAmount);
|
19
23
|
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
24
|
+
/// @dev increases the staked tokens by the specified amount
|
25
|
+
/// only the bundle owner may stake tokens
|
26
|
+
/// bundle MUST be in active or locked state
|
27
|
+
function stake(NftId bundleNftId, Amount amount) external;
|
28
|
+
|
29
|
+
/// @dev decreases the staked tokens by the specified amount
|
30
|
+
/// only the bundle owner may unstake tokens from the bundle
|
31
|
+
/// bundle MUST be in active, locked or closed state
|
32
|
+
function unstake(NftId bundleNftId, Amount amount) external;
|
25
33
|
|
26
|
-
/// @dev
|
34
|
+
/// @dev extends the bundle lifetime of the bundle by the specified time
|
35
|
+
/// only the bundle owner may extend the bundle's lifetime
|
36
|
+
/// bundle MUST be in active or locked state
|
37
|
+
function extend(NftId bundleNftId, Seconds lifetimeExtension) external;
|
38
|
+
|
39
|
+
/// @dev locks the specified bundle
|
40
|
+
/// a bundle to be locked MUST be in active state
|
41
|
+
/// locked bundles may not be used to collateralize any new policy
|
42
|
+
function lockBundle(NftId bundleNftId) external;
|
43
|
+
|
44
|
+
/// @dev unlocks the specified bundle
|
45
|
+
/// a bundle to be unlocked MUST be in locked state
|
46
|
+
function unlockBundle(NftId bundleNftId) external;
|
47
|
+
|
48
|
+
/// @dev close the specified bundle
|
49
|
+
/// a bundle to be closed MUST be in active or locked state
|
50
|
+
/// to close a bundle all all linked policies MUST be in closed state as well
|
51
|
+
/// closing a bundle finalizes the bundle bookkeeping including overall profit calculation
|
52
|
+
/// once a bundle is closed this action cannot be reversed
|
53
|
+
function close(NftId bundleNftId) external;
|
54
|
+
|
55
|
+
/// @dev sets the fee for the specified bundle
|
56
|
+
/// the fee is added on top of the poolFee and deducted from the premium amounts
|
27
57
|
/// via these fees individual bundler owner may earn income per policy in the context of peer to peer pools
|
28
58
|
function setBundleFee(
|
29
59
|
NftId bundleNftId,
|
30
60
|
Fee memory fee
|
31
61
|
) external;
|
32
62
|
|
63
|
+
/// @dev sets the maximum overall capital amound held by this pool
|
64
|
+
/// function may only be called by pool owner
|
65
|
+
function setMaxCapitalAmount(Amount maxCapitalAmount) external;
|
66
|
+
|
67
|
+
/// @dev sets the required role to create/own bundles
|
68
|
+
/// may only be called once after setting up a pool
|
69
|
+
/// may only be called by pool owner
|
70
|
+
function setBundleOwnerRole(RoleId bundleOwnerRole) external;
|
71
|
+
|
72
|
+
/// @dev update pool fees to the specified values
|
73
|
+
/// pool fees: are deducted from the premium amount and goes to the pool owner
|
74
|
+
/// staking fees: are deducted from the staked tokens by a bundle owner and goes to the pool owner
|
75
|
+
/// performance fees: when a bundle is closed a bundle specific profit is calculated
|
76
|
+
/// the performance fee is deducted from this profit and goes to the pool owner
|
77
|
+
function setFees(
|
78
|
+
Fee memory poolFee,
|
79
|
+
Fee memory stakingFee,
|
80
|
+
Fee memory performanceFee
|
81
|
+
) external;
|
82
|
+
|
33
83
|
/// @dev this is a callback function that is called by the product service when underwriting a policy.
|
34
84
|
/// the pool has the option to check the details and object to underwriting by reverting.
|
35
85
|
/// the function is only called for "active" pools that ask to be involved/notified
|
36
86
|
/// by product related state changes.
|
37
87
|
function verifyApplication(
|
38
88
|
NftId applicationNftId,
|
39
|
-
bytes memory
|
89
|
+
bytes memory applicationData,
|
90
|
+
NftId bundleNftId,
|
40
91
|
bytes memory bundleFilter,
|
41
|
-
|
92
|
+
Amount collateralizationAmount
|
42
93
|
) external;
|
43
94
|
|
44
|
-
|
45
|
-
|
46
|
-
function unlockBundle(NftId bundleNftId) external;
|
47
|
-
|
48
|
-
/// @dev defines the multiplier to calculate the required collateral to cover a given sum insured amount
|
49
|
-
/// default implementation returns 100%
|
50
|
-
function getCollateralizationLevel() external view returns (UFixed collateralizationLevel);
|
51
|
-
|
52
|
-
/// @dev defines the amount of collateral held in the pool.
|
53
|
-
/// if the value is < 100% the pool is required to hold a policy that covers the locally missing collateral
|
54
|
-
/// default implementation returns 100%
|
55
|
-
function getRetentionLevel() external view returns (UFixed retentionLevel);
|
56
|
-
|
57
|
-
/// @dev declares if pool intercept transfers of bundle nft ids
|
58
|
-
/// - yes: pool may block transfer of bundle ownership or simply updates some bookkeeping related to bundle ownership. callback function is nftTransferFrom
|
59
|
-
/// - no: pool is not involved in transfer of bundle ownership
|
60
|
-
/// default implementation returns false (no)
|
61
|
-
function isInterceptingBundleTransfers() external view returns (bool);
|
62
|
-
|
63
|
-
/// @dev declares if pool relies on external management of collateral (yes/no):
|
64
|
-
/// - yes: underwriting of new policies does not require an actual token balance, instead it is assumed that the pool owner will manage funds externally and inject enough tokens to allow process confirmed payouts
|
65
|
-
/// - no: the pool smart contract ensures that the necessary capacity of the pool prior to underwriting.
|
66
|
-
/// default implementation returns false (no)
|
67
|
-
function isExternallyManaged() external view returns (bool);
|
68
|
-
|
69
|
-
/// @dev declares if pool component is actively involved in underwriting (yes/no):
|
70
|
-
/// - yes: verifying pools components actively confirm underwriting applications, ie the pool component logic explicitly needs to confirm the locking of collateral to cover the sum insured of the policy
|
71
|
-
/// - no: underwriting a policy does not require any interaction with the pool component if the covering bundle can provide the necessary captial
|
72
|
-
/// default implementation returnsfalse (no)
|
73
|
-
function isVerifyingApplications() external view returns (bool);
|
74
|
-
|
75
|
-
/// @dev returns true iff the policy application data in policyData matches
|
76
|
-
/// with the bundle filter criteria encoded in bundleFilter
|
95
|
+
/// @dev returns true iff the application matches with the bundle
|
77
96
|
/// this is a callback function that is only called if a pool declares itself as a verifying pool
|
78
97
|
/// default implementation returns true
|
79
|
-
function
|
80
|
-
|
81
|
-
bytes memory
|
98
|
+
function applicationMatchesBundle(
|
99
|
+
NftId applicationNftId,
|
100
|
+
bytes memory applicationData,
|
101
|
+
NftId bundleNftId,
|
102
|
+
bytes memory bundleFilter,
|
103
|
+
Amount collateralizationAmount
|
82
104
|
)
|
83
105
|
external
|
84
106
|
view
|
85
107
|
returns (bool isMatching);
|
86
108
|
|
109
|
+
/// @dev returns pool specific infos for this pool
|
110
|
+
/// when registered with an instance the info is obtained from the data stored in the instance
|
111
|
+
/// when not registered the function returns the info from the component contract
|
112
|
+
function getPoolInfo() external view returns (IComponents.PoolInfo memory info);
|
113
|
+
|
87
114
|
}
|
@@ -1,12 +1,14 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
2
|
pragma solidity ^0.8.20;
|
3
3
|
|
4
|
+
import {Amount} from "../types/Amount.sol";
|
4
5
|
import {Fee} from "../types/Fee.sol";
|
5
6
|
import {IComponent} from "./IComponent.sol";
|
6
7
|
import {ISetup} from "../instance/module/ISetup.sol";
|
7
8
|
import {NftId} from "../types/NftId.sol";
|
8
9
|
import {ReferralId} from "../types/Referral.sol";
|
9
10
|
import {RiskId} from "../types/RiskId.sol";
|
11
|
+
import {Seconds} from "../types/Seconds.sol";
|
10
12
|
|
11
13
|
interface IProductComponent is IComponent {
|
12
14
|
|
@@ -18,20 +20,20 @@ interface IProductComponent is IComponent {
|
|
18
20
|
) external;
|
19
21
|
|
20
22
|
function calculatePremium(
|
21
|
-
|
23
|
+
Amount sumInsuredAmount,
|
22
24
|
RiskId riskId,
|
23
|
-
|
25
|
+
Seconds lifetime,
|
24
26
|
bytes memory applicationData,
|
25
27
|
NftId bundleNftId,
|
26
28
|
ReferralId referralId
|
27
|
-
) external view returns (
|
29
|
+
) external view returns (Amount premiumAmount);
|
28
30
|
|
29
31
|
function calculateNetPremium(
|
30
|
-
|
32
|
+
Amount sumInsuredAmount,
|
31
33
|
RiskId riskId,
|
32
|
-
|
34
|
+
Seconds lifetime,
|
33
35
|
bytes memory applicationData
|
34
|
-
) external view returns (
|
36
|
+
) external view returns (Amount netPremiumAmount);
|
35
37
|
|
36
38
|
|
37
39
|
function getPoolNftId() external view returns (NftId poolNftId);
|