@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
@@ -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 {PricingService} from "./PricingService.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 PricingServiceManager is ProxyManager {
|
12
|
+
|
13
|
+
PricingService private _pricingService;
|
14
|
+
|
15
|
+
/// @dev initializes proxy manager with distribution service implementation and deploys instance
|
16
|
+
constructor(
|
17
|
+
address registryAddress
|
18
|
+
)
|
19
|
+
ProxyManager(registryAddress)
|
20
|
+
{
|
21
|
+
PricingService pricingSrv = new PricingService();
|
22
|
+
bytes memory data = abi.encode(registryAddress, address(this));
|
23
|
+
IVersionable versionable = deploy(
|
24
|
+
address(pricingSrv),
|
25
|
+
data);
|
26
|
+
|
27
|
+
_pricingService = PricingService(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 getPricingService()
|
44
|
+
external
|
45
|
+
view
|
46
|
+
returns (PricingService)
|
47
|
+
{
|
48
|
+
return _pricingService;
|
49
|
+
}
|
50
|
+
|
51
|
+
}
|
@@ -24,7 +24,7 @@ import {Timestamp, zeroTimestamp} from "../../types/Timestamp.sol";
|
|
24
24
|
import {UFixed, UFixedLib} from "../../types/UFixed.sol";
|
25
25
|
import {Blocknumber, blockNumber} from "../../types/Blocknumber.sol";
|
26
26
|
import {ObjectType, PRODUCT, POOL, POLICY} from "../../types/ObjectType.sol";
|
27
|
-
import {APPLIED,
|
27
|
+
import {APPLIED, ACTIVE, KEEP_STATE} from "../../types/StateId.sol";
|
28
28
|
import {NftId, NftIdLib, zeroNftId} from "../../types/NftId.sol";
|
29
29
|
import {Fee, FeeLib} from "../../types/Fee.sol";
|
30
30
|
import {ReferralId} from "../../types/Referral.sol";
|
@@ -60,9 +60,9 @@ contract ProductService is ComponentService, IProductService {
|
|
60
60
|
address initialOwner;
|
61
61
|
(registryAddress, initialOwner) = abi.decode(data, (address, address));
|
62
62
|
|
63
|
-
initializeService(registryAddress, owner);
|
63
|
+
initializeService(registryAddress, address(0), owner);
|
64
64
|
|
65
|
-
_poolService = IPoolService(getRegistry().getServiceAddress(POOL(),
|
65
|
+
_poolService = IPoolService(getRegistry().getServiceAddress(POOL(), getVersion().toMajorPart()));
|
66
66
|
|
67
67
|
registerInterface(type(IProductService).interfaceId);
|
68
68
|
}
|
@@ -111,17 +111,25 @@ contract ProductService is ComponentService, IProductService {
|
|
111
111
|
product.linkToRegisteredNftId();
|
112
112
|
|
113
113
|
// create product setup in instance
|
114
|
-
instance.createProductSetup(productNftId, product.getSetupInfo());
|
114
|
+
instance.getInstanceStore().createProductSetup(productNftId, product.getSetupInfo());
|
115
|
+
|
116
|
+
bytes4[][] memory selectors = new bytes4[][](1);
|
117
|
+
selectors[0] = new bytes4[](1);
|
118
|
+
selectors[0][0] = IProductComponent.setFees.selector;
|
119
|
+
|
120
|
+
RoleId[] memory roles = new RoleId[](1);
|
121
|
+
roles[0] = PRODUCT_OWNER_ROLE();
|
115
122
|
|
116
123
|
// create target for instane access manager
|
117
124
|
getInstanceService().createGifTarget(
|
118
125
|
getRegistry().getNftId(address(instance)),
|
119
126
|
address(product),
|
120
|
-
product.getName()
|
121
|
-
|
127
|
+
product.getName(),
|
128
|
+
selectors,
|
129
|
+
roles);
|
122
130
|
}
|
123
131
|
|
124
|
-
function getDomain() public pure override
|
132
|
+
function getDomain() public pure override returns(ObjectType) {
|
125
133
|
return PRODUCT();
|
126
134
|
}
|
127
135
|
|
@@ -139,38 +147,6 @@ contract ProductService is ComponentService, IProductService {
|
|
139
147
|
// if(wallet == address(0)) {
|
140
148
|
// revert WalletIsZero();
|
141
149
|
// }
|
142
|
-
|
143
|
-
// IRegistry.ObjectInfo memory tokenInfo = getRegistry().getObjectInfo(address(info.token));
|
144
|
-
|
145
|
-
// if(tokenInfo.objectType != TOKEN()) {
|
146
|
-
// revert InvalidToken();
|
147
|
-
// }
|
148
|
-
|
149
|
-
// IRegistry.ObjectInfo memory poolInfo = getRegistry().getObjectInfo(info.poolNftId);
|
150
|
-
|
151
|
-
// if(poolInfo.objectType != POOL()) {
|
152
|
-
// revert InvalidPool();
|
153
|
-
// }
|
154
|
-
|
155
|
-
// if(poolInfo.parentNftId != instanceNftId) {
|
156
|
-
// revert InvalidPoolsInstance();
|
157
|
-
// }
|
158
|
-
// // TODO pool have the same token
|
159
|
-
// //ITreasury.PoolSetup memory poolSetup = instance.getPoolSetup(info.poolNftId);
|
160
|
-
// //require(tokenInfo.objectAddress == address(poolSetup.token), "ERROR:COS-018:PRODUCT_POOL_TOKEN_MISMATCH");
|
161
|
-
// // TODO pool is not linked
|
162
|
-
|
163
|
-
// IRegistry.ObjectInfo memory distributionInfo = getRegistry().getObjectInfo(info.distributionNftId);
|
164
|
-
|
165
|
-
// if(distributionInfo.objectType != DISTRIBUTION()) {
|
166
|
-
// revert InvalidDistribution();
|
167
|
-
// }
|
168
|
-
|
169
|
-
// if(distributionInfo.parentNftId != instanceNftId) {
|
170
|
-
// revert InvalidDistributionsInstance();
|
171
|
-
// }
|
172
|
-
// // TODO distribution have the same token
|
173
|
-
// // TODO distribution is not linked
|
174
150
|
}
|
175
151
|
|
176
152
|
function setFees(
|
@@ -181,32 +157,28 @@ contract ProductService is ComponentService, IProductService {
|
|
181
157
|
{
|
182
158
|
// TODO check args
|
183
159
|
|
184
|
-
(
|
185
|
-
IRegistry.ObjectInfo memory productInfo,
|
186
|
-
IInstance instance
|
187
|
-
) = _getAndVerifyComponentInfoAndInstance(PRODUCT());
|
188
|
-
|
160
|
+
(NftId productNftId,, IInstance instance) = _getAndVerifyCallingComponentAndInstance(PRODUCT());
|
189
161
|
InstanceReader instanceReader = instance.getInstanceReader();
|
190
|
-
|
162
|
+
|
191
163
|
ISetup.ProductSetupInfo memory productSetupInfo = instanceReader.getProductSetupInfo(productNftId);
|
192
164
|
|
193
165
|
productSetupInfo.productFee = productFee;
|
194
166
|
productSetupInfo.processingFee = processingFee;
|
195
167
|
|
196
|
-
instance.updateProductSetup(productNftId, productSetupInfo, KEEP_STATE());
|
168
|
+
instance.getInstanceStore().updateProductSetup(productNftId, productSetupInfo, KEEP_STATE());
|
197
169
|
}
|
198
170
|
|
199
171
|
function createRisk(
|
200
172
|
RiskId riskId,
|
201
173
|
bytes memory data
|
202
|
-
)
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
) =
|
207
|
-
NftId productNftId = productInfo.nftId;
|
174
|
+
)
|
175
|
+
external
|
176
|
+
override
|
177
|
+
{
|
178
|
+
(NftId productNftId,, IInstance instance) = _getAndVerifyCallingComponentAndInstance(PRODUCT());
|
208
179
|
IRisk.RiskInfo memory riskInfo = IRisk.RiskInfo(productNftId, data);
|
209
|
-
|
180
|
+
|
181
|
+
instance.getInstanceStore().createRisk(
|
210
182
|
riskId,
|
211
183
|
riskInfo
|
212
184
|
);
|
@@ -215,19 +187,24 @@ contract ProductService is ComponentService, IProductService {
|
|
215
187
|
function updateRisk(
|
216
188
|
RiskId riskId,
|
217
189
|
bytes memory data
|
218
|
-
)
|
219
|
-
|
190
|
+
)
|
191
|
+
external
|
192
|
+
{
|
193
|
+
(,, IInstance instance) = _getAndVerifyCallingComponentAndInstance(PRODUCT());
|
220
194
|
InstanceReader instanceReader = instance.getInstanceReader();
|
195
|
+
|
221
196
|
IRisk.RiskInfo memory riskInfo = instanceReader.getRiskInfo(riskId);
|
222
197
|
riskInfo.data = data;
|
223
|
-
instance.updateRisk(riskId, riskInfo, KEEP_STATE());
|
198
|
+
instance.getInstanceStore().updateRisk(riskId, riskInfo, KEEP_STATE());
|
224
199
|
}
|
225
200
|
|
226
201
|
function updateRiskState(
|
227
202
|
RiskId riskId,
|
228
203
|
StateId state
|
229
|
-
)
|
230
|
-
|
231
|
-
|
204
|
+
)
|
205
|
+
external
|
206
|
+
{
|
207
|
+
(,, IInstance instance) = _getAndVerifyCallingComponentAndInstance(PRODUCT());
|
208
|
+
instance.getInstanceStore().updateRiskState(riskId, state);
|
232
209
|
}
|
233
|
-
}
|
210
|
+
}
|
@@ -95,6 +95,10 @@ contract ChainNft is ERC721Enumerable {
|
|
95
95
|
|
96
96
|
_totalMinted++;
|
97
97
|
_safeMint(to, tokenId);
|
98
|
+
|
99
|
+
if(interceptor != address(0)) {
|
100
|
+
ITransferInterceptor(interceptor).nftMint(to, tokenId);
|
101
|
+
}
|
98
102
|
}
|
99
103
|
|
100
104
|
|
@@ -195,6 +199,10 @@ contract ChainNft is ERC721Enumerable {
|
|
195
199
|
_chainIdDigits;
|
196
200
|
}
|
197
201
|
|
202
|
+
function getNextTokenId() external view returns (uint256) {
|
203
|
+
return calculateTokenId(_idNext);
|
204
|
+
}
|
205
|
+
|
198
206
|
function _getNextTokenId() private returns (uint256 id) {
|
199
207
|
id = calculateTokenId(_idNext);
|
200
208
|
_idNext++;
|
@@ -84,6 +84,8 @@ interface IRegistry is IERC165 {
|
|
84
84
|
|
85
85
|
function isRegisteredService(address contractAddress) external view returns (bool);
|
86
86
|
|
87
|
+
function isRegisteredComponent(address object) external view returns (bool);
|
88
|
+
|
87
89
|
function isValidRelease(VersionPart version) external view returns (bool);
|
88
90
|
|
89
91
|
function getServiceAddress(
|
@@ -1,7 +1,7 @@
|
|
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
|
+
// import {IAccessManaged} from "@openzeppelin/contracts/access/manager/IAccessManaged.sol";
|
5
5
|
|
6
6
|
import {NftId} from "../types/NftId.sol";
|
7
7
|
import {ObjectType} from "../types/ObjectType.sol";
|
@@ -13,8 +13,7 @@ import {IRegisterable} from "../shared/IRegisterable.sol";
|
|
13
13
|
import {IComponent} from "../components/IComponent.sol";
|
14
14
|
|
15
15
|
interface IRegistryService is
|
16
|
-
IService
|
17
|
-
IAccessManaged
|
16
|
+
IService
|
18
17
|
{
|
19
18
|
error SelfRegistration();
|
20
19
|
error NotRegistryOwner();
|
@@ -149,7 +149,6 @@ contract Registry is
|
|
149
149
|
}
|
150
150
|
|
151
151
|
if(
|
152
|
-
|
153
152
|
parentType == PROTOCOL() ||
|
154
153
|
parentType == REGISTRY() ||
|
155
154
|
parentType == SERVICE()
|
@@ -186,7 +185,7 @@ contract Registry is
|
|
186
185
|
return _releaseManager.getReleaseInfo(version);
|
187
186
|
}
|
188
187
|
|
189
|
-
function getObjectCount() external view
|
188
|
+
function getObjectCount() external view returns (uint256) {
|
190
189
|
return _chainNft.totalSupply();
|
191
190
|
}
|
192
191
|
|
@@ -198,11 +197,11 @@ contract Registry is
|
|
198
197
|
return _registryNftId;
|
199
198
|
}
|
200
199
|
|
201
|
-
function getNftId(address object) external view
|
200
|
+
function getNftId(address object) external view returns (NftId id) {
|
202
201
|
return _nftIdByAddress[object];
|
203
202
|
}
|
204
203
|
|
205
|
-
function ownerOf(NftId nftId) public view
|
204
|
+
function ownerOf(NftId nftId) public view returns (address) {
|
206
205
|
return _chainNft.ownerOf(nftId.toInt());
|
207
206
|
}
|
208
207
|
|
@@ -210,26 +209,31 @@ contract Registry is
|
|
210
209
|
return _chainNft.ownerOf(_nftIdByAddress[contractAddress].toInt());
|
211
210
|
}
|
212
211
|
|
213
|
-
function getObjectInfo(NftId nftId) external view
|
212
|
+
function getObjectInfo(NftId nftId) external view returns (ObjectInfo memory) {
|
214
213
|
return _info[nftId];
|
215
214
|
}
|
216
215
|
|
217
|
-
function getObjectInfo(address object) external view
|
216
|
+
function getObjectInfo(address object) external view returns (ObjectInfo memory) {
|
218
217
|
return _info[_nftIdByAddress[object]];
|
219
218
|
}
|
220
219
|
|
221
|
-
function isRegistered(NftId nftId) public view
|
220
|
+
function isRegistered(NftId nftId) public view returns (bool) {
|
222
221
|
return _info[nftId].objectType.gtz();
|
223
222
|
}
|
224
223
|
|
225
|
-
function isRegistered(address object) external view
|
224
|
+
function isRegistered(address object) external view returns (bool) {
|
226
225
|
return _nftIdByAddress[object].gtz();
|
227
226
|
}
|
228
227
|
|
229
|
-
function isRegisteredService(address object) external view
|
228
|
+
function isRegisteredService(address object) external view returns (bool) {
|
230
229
|
return _info[_nftIdByAddress[object]].objectType == SERVICE();
|
231
230
|
}
|
232
231
|
|
232
|
+
function isRegisteredComponent(address object) external view returns (bool) {
|
233
|
+
NftId objectParentNftId = _info[_nftIdByAddress[object]].parentNftId;
|
234
|
+
return _info[objectParentNftId].objectType == INSTANCE();
|
235
|
+
}
|
236
|
+
|
233
237
|
function isValidRelease(VersionPart version) external view returns (bool)
|
234
238
|
{
|
235
239
|
return _releaseManager.isValidRelease(version);
|
@@ -287,18 +291,9 @@ contract Registry is
|
|
287
291
|
}
|
288
292
|
|
289
293
|
address interceptor = _getInterceptor(info.isInterceptor, info.objectAddress, parentInfo.isInterceptor, parentAddress);
|
294
|
+
uint256 tokenId = _chainNft.getNextTokenId();
|
295
|
+
nftId = toNftId(tokenId);
|
290
296
|
|
291
|
-
// TODO does external call
|
292
|
-
// compute next nftId, do all checks and stores, mint() at most end...
|
293
|
-
uint256 mintedTokenId = _chainNft.mint(
|
294
|
-
info.initialOwner,
|
295
|
-
interceptor,
|
296
|
-
EMPTY_URI);
|
297
|
-
nftId = toNftId(mintedTokenId);
|
298
|
-
|
299
|
-
// TODO move nftId out of info struct
|
300
|
-
// getters by nftId -> return struct without nftId
|
301
|
-
// getters by address -> return nftId AND struct
|
302
297
|
info.nftId = nftId;
|
303
298
|
_info[nftId] = info;
|
304
299
|
|
@@ -314,6 +309,14 @@ contract Registry is
|
|
314
309
|
}
|
315
310
|
|
316
311
|
emit LogRegistration(nftId, parentNftId, objectType, info.isInterceptor, info.objectAddress, info.initialOwner);
|
312
|
+
|
313
|
+
// calls nft receiver(1) and interceptor(2)
|
314
|
+
uint256 mintedTokenId = _chainNft.mint(
|
315
|
+
info.initialOwner,
|
316
|
+
interceptor,
|
317
|
+
EMPTY_URI);
|
318
|
+
assert(mintedTokenId == tokenId);
|
319
|
+
|
317
320
|
}
|
318
321
|
|
319
322
|
/// @dev obtain interceptor address for this nft if applicable, address(0) otherwise
|
@@ -2,7 +2,7 @@
|
|
2
2
|
pragma solidity ^0.8.20;
|
3
3
|
|
4
4
|
import {ERC165Checker} from "@openzeppelin/contracts/utils/introspection/ERC165Checker.sol";
|
5
|
-
import {AccessManagedUpgradeable} from "@openzeppelin/contracts-upgradeable/access/manager/AccessManagedUpgradeable.sol";
|
5
|
+
// import {AccessManagedUpgradeable} from "@openzeppelin/contracts-upgradeable/access/manager/AccessManagedUpgradeable.sol";
|
6
6
|
|
7
7
|
import {IRegistry} from "./IRegistry.sol";
|
8
8
|
import {IInstance} from "../instance/IInstance.sol";
|
@@ -19,7 +19,7 @@ import {IRegisterable} from "../../contracts/shared/IRegisterable.sol";
|
|
19
19
|
import {Registerable} from "../../contracts/shared/Registerable.sol";
|
20
20
|
|
21
21
|
import {RoleId, PRODUCT_OWNER_ROLE, POOL_OWNER_ROLE, ORACLE_OWNER_ROLE} from "../../contracts/types/RoleId.sol";
|
22
|
-
import {ObjectType, REGISTRY, SERVICE, PRODUCT, ORACLE, POOL, INSTANCE, DISTRIBUTION, DISTRIBUTOR, APPLICATION, POLICY, CLAIM, BUNDLE, STAKE} from "../../contracts/types/ObjectType.sol";
|
22
|
+
import {ObjectType, REGISTRY, SERVICE, PRODUCT, ORACLE, POOL, INSTANCE, DISTRIBUTION, DISTRIBUTOR, APPLICATION, POLICY, CLAIM, BUNDLE, STAKE, PRICE} from "../../contracts/types/ObjectType.sol";
|
23
23
|
import {StateId, ACTIVE, PAUSED} from "../../contracts/types/StateId.sol";
|
24
24
|
import {NftId, NftIdLib, zeroNftId} from "../../contracts/types/NftId.sol";
|
25
25
|
import {Fee, FeeLib} from "../../contracts/types/Fee.sol";
|
@@ -31,7 +31,6 @@ import {IRegistryService} from "./IRegistryService.sol";
|
|
31
31
|
import {Registry} from "./Registry.sol";
|
32
32
|
|
33
33
|
contract RegistryService is
|
34
|
-
AccessManagedUpgradeable,
|
35
34
|
Service,
|
36
35
|
IRegistryService
|
37
36
|
{
|
@@ -41,7 +40,7 @@ contract RegistryService is
|
|
41
40
|
bytes32 public constant REGISTRY_CREATION_CODE_HASH = bytes32(0);
|
42
41
|
|
43
42
|
// From IService
|
44
|
-
function getDomain() public pure override
|
43
|
+
function getDomain() public pure override returns(ObjectType serviceDomain) {
|
45
44
|
return REGISTRY();
|
46
45
|
}
|
47
46
|
|
@@ -61,9 +60,8 @@ contract RegistryService is
|
|
61
60
|
address initialAuthority
|
62
61
|
) = abi.decode(data, (address, address));
|
63
62
|
|
64
|
-
|
63
|
+
initializeService(registryAddress, initialAuthority, owner);
|
65
64
|
|
66
|
-
initializeService(registryAddress, owner);
|
67
65
|
registerInterface(type(IRegistryService).interfaceId);
|
68
66
|
}
|
69
67
|
|
@@ -178,43 +176,48 @@ contract RegistryService is
|
|
178
176
|
FunctionConfig[] memory config
|
179
177
|
)
|
180
178
|
{
|
181
|
-
config = new FunctionConfig[](
|
179
|
+
config = new FunctionConfig[](9);
|
182
180
|
|
183
181
|
// order of service registrations MUST be reverse to this array
|
184
182
|
/*config[-1].serviceDomain = STAKE();
|
185
183
|
config[-1].selector = RegistryService.registerStake.selector;*/
|
186
184
|
|
187
|
-
config[0].serviceDomain =
|
188
|
-
config[0].selectors = new bytes4[](
|
189
|
-
config[0].selectors[0] = RegistryService.registerPolicy.selector;
|
185
|
+
config[0].serviceDomain = POLICY();
|
186
|
+
config[0].selectors = new bytes4[](0);
|
190
187
|
|
191
|
-
config[1].serviceDomain =
|
192
|
-
config[1].selectors = new bytes4[](
|
188
|
+
config[1].serviceDomain = APPLICATION();
|
189
|
+
config[1].selectors = new bytes4[](1);
|
190
|
+
config[1].selectors[0] = RegistryService.registerPolicy.selector;
|
193
191
|
|
194
192
|
config[2].serviceDomain = CLAIM();
|
195
193
|
config[2].selectors = new bytes4[](0);
|
196
194
|
|
197
|
-
config[3].serviceDomain =
|
195
|
+
config[3].serviceDomain = PRODUCT();
|
198
196
|
config[3].selectors = new bytes4[](1);
|
199
|
-
config[3].selectors[0] = RegistryService.
|
197
|
+
config[3].selectors[0] = RegistryService.registerProduct.selector;
|
200
198
|
|
201
|
-
config[4].serviceDomain =
|
199
|
+
config[4].serviceDomain = POOL();
|
202
200
|
config[4].selectors = new bytes4[](1);
|
203
|
-
config[4].selectors[0] = RegistryService.
|
201
|
+
config[4].selectors[0] = RegistryService.registerPool.selector;
|
204
202
|
|
205
|
-
|
203
|
+
// registration of bundle service must preceed registration of pool service
|
204
|
+
config[5].serviceDomain = BUNDLE();
|
206
205
|
config[5].selectors = new bytes4[](1);
|
207
|
-
config[5].selectors[0] = RegistryService.
|
206
|
+
config[5].selectors[0] = RegistryService.registerBundle.selector;
|
208
207
|
|
209
|
-
|
210
|
-
config[6].
|
211
|
-
config[6].selectors
|
212
|
-
config[6].selectors[1] = RegistryService.registerDistributor.selector;
|
208
|
+
// registration of pricing service must preceed registration of application service
|
209
|
+
config[6].serviceDomain = PRICE();
|
210
|
+
config[6].selectors = new bytes4[](0);
|
213
211
|
|
214
|
-
//
|
215
|
-
config[7].serviceDomain =
|
216
|
-
config[7].selectors = new bytes4[](
|
217
|
-
config[7].selectors[0] = RegistryService.
|
212
|
+
// registration of distribution service must preceed registration of pricing service
|
213
|
+
config[7].serviceDomain = DISTRIBUTION();
|
214
|
+
config[7].selectors = new bytes4[](2);
|
215
|
+
config[7].selectors[0] = RegistryService.registerDistribution.selector;
|
216
|
+
config[7].selectors[1] = RegistryService.registerDistributor.selector;
|
217
|
+
|
218
|
+
config[8].serviceDomain = INSTANCE();
|
219
|
+
config[8].selectors = new bytes4[](1);
|
220
|
+
config[8].selectors[0] = RegistryService.registerInstance.selector;
|
218
221
|
}
|
219
222
|
|
220
223
|
// Internal
|
@@ -6,7 +6,7 @@ import {AccessManaged} from "@openzeppelin/contracts/access/manager/AccessManage
|
|
6
6
|
import {NftId} from "../types/NftId.sol";
|
7
7
|
import {RoleId} from "../types/RoleId.sol";
|
8
8
|
import {ObjectType, ObjectTypeLib, zeroObjectType, REGISTRY, SERVICE} from "../types/ObjectType.sol";
|
9
|
-
import {VersionPart, VersionPartLib} from "../types/Version.sol";
|
9
|
+
import {Version, VersionLib, VersionPart, VersionPartLib} from "../types/Version.sol";
|
10
10
|
import {Timestamp, TimestampLib} from "../types/Timestamp.sol";
|
11
11
|
|
12
12
|
import {IService} from "../shared/IService.sol";
|
@@ -55,19 +55,19 @@ contract ReleaseManager is AccessManaged
|
|
55
55
|
RegistryAccessManager private immutable _accessManager;
|
56
56
|
IRegistry private immutable _registry;
|
57
57
|
|
58
|
-
VersionPart immutable _initial;// first active version
|
59
|
-
VersionPart _latest;// latest active version
|
60
|
-
VersionPart _next;// version to create and activate
|
58
|
+
VersionPart immutable _initial;// first active major version
|
59
|
+
VersionPart _latest;// latest active major version
|
60
|
+
VersionPart _next;// major version to create and activate
|
61
61
|
|
62
|
-
mapping(VersionPart
|
62
|
+
mapping(VersionPart majorVersion => IRegistry.ReleaseInfo info) _release;
|
63
63
|
|
64
|
-
mapping(VersionPart
|
64
|
+
mapping(VersionPart majorVersion => mapping(ObjectType serviceDomain => bytes4[])) _selectors; // registry service function selector assigned to domain
|
65
65
|
|
66
66
|
uint _awaitingRegistration; // "services left to register" counter
|
67
67
|
|
68
68
|
mapping(address registryService => bool isActive) _active;
|
69
69
|
|
70
|
-
mapping(VersionPart
|
70
|
+
mapping(VersionPart majorVersion => bool isValid) _valid; // TODO refactor to use _active only
|
71
71
|
|
72
72
|
constructor(
|
73
73
|
RegistryAccessManager accessManager,
|
@@ -146,12 +146,12 @@ contract ReleaseManager is AccessManaged
|
|
146
146
|
|
147
147
|
IRegistry.ObjectInfo memory info = _getAndVerifyContractInfo(service, SERVICE(), msg.sender);
|
148
148
|
|
149
|
-
VersionPart
|
149
|
+
VersionPart majorVersion = _next;
|
150
150
|
ObjectType domain = REGISTRY();
|
151
|
-
_verifyService(service,
|
151
|
+
_verifyService(service, majorVersion, domain);
|
152
152
|
_createRelease(service.getFunctionConfigs());
|
153
153
|
|
154
|
-
nftId = _registry.registerService(info,
|
154
|
+
nftId = _registry.registerService(info, majorVersion, domain);
|
155
155
|
|
156
156
|
// external call
|
157
157
|
service.linkToRegisteredNftId();
|
@@ -169,13 +169,13 @@ contract ReleaseManager is AccessManaged
|
|
169
169
|
}
|
170
170
|
|
171
171
|
IRegistry.ObjectInfo memory info = _getAndVerifyContractInfo(service, SERVICE(), msg.sender);
|
172
|
-
VersionPart
|
173
|
-
ObjectType domain = _release[
|
174
|
-
_verifyService(service,
|
172
|
+
VersionPart majorVersion = getNextVersion();
|
173
|
+
ObjectType domain = _release[majorVersion].domains[_awaitingRegistration];// reversed registration order of services specified in RegistryService config
|
174
|
+
_verifyService(service, majorVersion, domain);
|
175
175
|
|
176
176
|
// setup and grant unique role if service does registrations
|
177
|
-
bytes4[] memory selectors = _selectors[
|
178
|
-
address registryService = _registry.getServiceAddress(REGISTRY(),
|
177
|
+
bytes4[] memory selectors = _selectors[majorVersion][domain];
|
178
|
+
address registryService = _registry.getServiceAddress(REGISTRY(), majorVersion);
|
179
179
|
if(selectors.length > 0) {
|
180
180
|
_accessManager.setAndGrantUniqueRole(
|
181
181
|
address(service),
|
@@ -185,7 +185,7 @@ contract ReleaseManager is AccessManaged
|
|
185
185
|
|
186
186
|
_awaitingRegistration--;
|
187
187
|
|
188
|
-
nftId = _registry.registerService(info,
|
188
|
+
nftId = _registry.registerService(info, majorVersion, domain);
|
189
189
|
|
190
190
|
// external call
|
191
191
|
service.linkToRegisteredNftId();
|
@@ -271,8 +271,10 @@ contract ReleaseManager is AccessManaged
|
|
271
271
|
view
|
272
272
|
returns(ObjectType)
|
273
273
|
{
|
274
|
-
|
275
|
-
|
274
|
+
Version version = service.getVersion();
|
275
|
+
VersionPart majorVersion = version.toMajorPart();
|
276
|
+
if(majorVersion != expectedVersion) {
|
277
|
+
revert UnexpectedServiceVersion(expectedVersion, majorVersion);
|
276
278
|
}
|
277
279
|
|
278
280
|
if(service.getDomain() != expectedDomain) {
|
@@ -0,0 +1,13 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.20;
|
3
|
+
|
4
|
+
import {AccessManagerUpgradeable} from "@openzeppelin/contracts-upgradeable/access/manager/AccessManagerUpgradeable.sol";
|
5
|
+
|
6
|
+
|
7
|
+
contract AccessManagerUpgradeableInitializeable is AccessManagerUpgradeable {
|
8
|
+
|
9
|
+
function initialize(address initialAdmin) initializer public {
|
10
|
+
__AccessManager_init(initialAdmin);
|
11
|
+
}
|
12
|
+
|
13
|
+
}
|
@@ -4,23 +4,37 @@ pragma solidity ^0.8.20;
|
|
4
4
|
import {IERC165} from "@openzeppelin/contracts/utils/introspection/IERC165.sol";
|
5
5
|
import {IERC721Receiver} from "@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol";
|
6
6
|
|
7
|
-
import {
|
7
|
+
import {Amount} from "../types/Amount.sol";
|
8
|
+
import {ClaimId} from "../types/ClaimId.sol";
|
9
|
+
import {IRegistryLinked} from "../shared/IRegistryLinked.sol";
|
8
10
|
import {NftId} from "../types/NftId.sol";
|
9
|
-
import {
|
11
|
+
import {PayoutId} from "../types/PayoutId.sol";
|
10
12
|
|
11
13
|
/// @dev generic interface for contracts that need to hold policies and receive payouts
|
12
14
|
/// GIF will notify policy holder contracts for policy creation and payout execution
|
13
|
-
|
15
|
+
interface IPolicyHolder is
|
16
|
+
IERC165,
|
17
|
+
IERC721Receiver,
|
18
|
+
IRegistryLinked
|
19
|
+
{
|
14
20
|
|
15
|
-
|
21
|
+
/// @dev callback function that will be called after successful policy activation
|
22
|
+
/// active policies may open claims under the activated policy
|
23
|
+
function policyActivated(NftId policyNftId) external;
|
16
24
|
|
17
|
-
/// @dev callback function
|
18
|
-
|
25
|
+
/// @dev callback function to indicate the specified policy has expired
|
26
|
+
/// expired policies may no longer open claims
|
27
|
+
/// it is optional for products to notifiy policy holder of expired claims
|
28
|
+
function policyExpired(NftId policyNftId) external;
|
29
|
+
|
30
|
+
/// @dev callback function to notify the confirmation of the specified claim
|
31
|
+
/// active policies may open claims under the activated policy
|
32
|
+
function claimConfirmed(NftId policyNftId, ClaimId claimId, Amount amount) external;
|
19
33
|
|
20
34
|
/// @dev callback function that will be called after a successful payout
|
21
|
-
function
|
35
|
+
function payoutExecuted(NftId policyNftId, PayoutId payoutId, address beneficiary, Amount amount) external;
|
22
36
|
|
23
|
-
/// @dev determines
|
37
|
+
/// @dev determines policy and claim specific beneficiary address
|
24
38
|
/// returned address will override GIF default where the policy nft holder is treated as beneficiary
|
25
|
-
function getBeneficiary(NftId
|
39
|
+
function getBeneficiary(NftId policyNftId, ClaimId claimId) external view returns (address beneficiary);
|
26
40
|
}
|