@etherisc/gif-next 0.0.2-78e428e-483 → 0.0.2-79292f9-089
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 +4 -1
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +21 -21
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +2 -2
- package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +1 -1
- package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +1 -1
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +2 -2
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +10 -5
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +38 -97
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +2 -2
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +0 -75
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +76 -131
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +64 -76
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +0 -37
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +0 -31
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +2 -2
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +2 -2
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +71 -71
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +2 -2
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +7 -7
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +24 -24
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +40 -40
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +24 -24
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +2 -2
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +2 -2
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
- 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/mock/Dip.sol/Dip.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +26 -85
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +2 -2
- package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
- package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +0 -37
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +0 -75
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +26 -26
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +39 -39
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +7 -82
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +2 -2
- package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +54 -109
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +60 -72
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +0 -31
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +5 -42
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +43 -38
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +5 -80
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +87 -162
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +45 -85
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +27 -38
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +37 -45
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +0 -75
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +2 -2
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +74 -58
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +59 -59
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +5 -0
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +16 -0
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +124 -129
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +0 -37
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
- package/artifacts/contracts/product/{IProductService.sol/IProductService.json → IRiskService.sol/IRiskService.json} +2 -2
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +190 -227
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +55 -55
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +52 -52
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +52 -52
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/product/Product.sol/Product.json +0 -75
- package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
- package/artifacts/contracts/product/RiskService.sol/RiskService.json +695 -0
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +702 -0
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +59 -16
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +220 -20
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
- package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
- package/artifacts/contracts/registry/Registry.sol/Registry.json +418 -81
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +229 -114
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +12 -12
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +32 -32
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +4 -4
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +29 -55
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +8 -8
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +2 -2
- package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
- package/artifacts/contracts/shared/Component.sol/Component.json +0 -64
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +72 -88
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +65 -73
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponent.sol/IComponent.json +0 -26
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +0 -37
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
- package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
- package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +1 -1
- package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +1 -1
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +0 -75
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +1 -1
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +2 -2
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +2 -2
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +2 -2
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -2
- package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +330 -11
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +108 -0
- package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
- package/artifacts/contracts/staking/IStaking.sol/IStaking.json +0 -26
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +30 -113
- package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
- package/artifacts/contracts/staking/Staking.sol/Staking.json +44 -108
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +2 -2
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +51 -51
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +2 -2
- package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingService.sol/StakingService.json +22 -22
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +36 -36
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2 -2
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +2 -2
- package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
- package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
- package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
- package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
- package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
- package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
- package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +2 -2
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
- package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
- package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
- package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/StateId.sol/StateIdLib.json +2 -2
- package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
- package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +1 -1
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
- package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
- package/artifacts/contracts/type/Version.sol/VersionLib.json +3 -3
- package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
- package/artifacts/contracts/type/Version.sol/VersionPartLib.json +15 -2
- package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +19 -19
- package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
- package/contracts/authorization/AccessAdmin.sol +0 -1
- package/contracts/authorization/Authorization.sol +6 -4
- package/contracts/authorization/IAccessAdmin.sol +0 -1
- package/contracts/authorization/ServiceAuthorization.sol +4 -3
- package/contracts/distribution/DistributionService.sol +4 -19
- package/contracts/distribution/IDistributionService.sol +1 -3
- package/contracts/instance/IInstance.sol +7 -30
- package/contracts/instance/Instance.sol +8 -33
- package/contracts/instance/InstanceAdmin.sol +23 -4
- package/contracts/instance/InstanceReader.sol +2 -7
- package/contracts/instance/InstanceService.sol +54 -31
- package/contracts/instance/base/ObjectLifecycle.sol +2 -3
- package/contracts/instance/module/IComponents.sol +1 -2
- package/contracts/instance/module/IPolicy.sol +1 -1
- package/contracts/oracle/Oracle.sol +1 -0
- package/contracts/oracle/OracleService.sol +2 -1
- package/contracts/pool/BasicPool.sol +2 -2
- package/contracts/pool/BasicPoolAuthorization.sol +1 -1
- package/contracts/pool/BundleService.sol +8 -23
- package/contracts/pool/IBundleService.sol +2 -3
- package/contracts/pool/IPoolService.sol +31 -17
- package/contracts/pool/Pool.sol +12 -12
- package/contracts/pool/PoolService.sol +62 -75
- package/contracts/product/ApplicationService.sol +38 -18
- package/contracts/product/BasicProduct.sol +1 -0
- package/contracts/product/ClaimService.sol +9 -10
- package/contracts/product/IApplicationService.sol +1 -0
- package/contracts/product/IClaimService.sol +1 -0
- package/contracts/product/IPolicyService.sol +17 -17
- package/contracts/product/{IProductService.sol → IRiskService.sol} +1 -1
- package/contracts/product/PolicyService.sol +193 -138
- package/contracts/product/PricingService.sol +6 -2
- package/contracts/product/Product.sol +22 -22
- package/contracts/product/{ProductService.sol → RiskService.sol} +5 -7
- package/contracts/product/{ProductServiceManager.sol → RiskServiceManager.sol} +8 -8
- package/contracts/registry/ChainNft.sol +65 -32
- package/contracts/registry/IRegistry.sol +48 -14
- package/contracts/registry/Registry.sol +324 -195
- package/contracts/registry/RegistryAdmin.sol +150 -51
- package/contracts/registry/RegistryService.sol +1 -2
- package/contracts/registry/ReleaseLifecycle.sol +3 -1
- package/contracts/registry/ReleaseRegistry.sol +125 -72
- package/contracts/registry/ServiceAuthorizationV3.sol +1 -1
- package/contracts/shared/Component.sol +11 -23
- package/contracts/shared/ComponentService.sol +14 -24
- package/contracts/shared/IComponent.sol +4 -4
- package/contracts/shared/IInstanceLinkedComponent.sol +8 -15
- package/contracts/shared/TokenHandler.sol +100 -19
- package/contracts/shared/TokenHandlerDeployerLib.sol +12 -0
- package/contracts/staking/StakeManagerLib.sol +0 -25
- package/contracts/staking/Staking.sol +6 -25
- package/contracts/staking/StakingService.sol +9 -13
- package/contracts/type/StateId.sol +4 -0
- package/contracts/type/Version.sol +5 -2
- package/contracts/upgradeability/ProxyManager.sol +14 -14
- package/contracts/upgradeability/Versionable.sol +2 -2
- package/package.json +1 -1
- package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +0 -4
- package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +0 -4
- package/artifacts/contracts/product/ProductService.sol/ProductService.json +0 -708
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +0 -702
@@ -13,7 +13,7 @@ import {VersionPart, VersionPartLib} from "../type/Version.sol";
|
|
13
13
|
contract ServiceAuthorization
|
14
14
|
is IServiceAuthorization
|
15
15
|
{
|
16
|
-
uint256 public
|
16
|
+
uint256 public immutable GIF_VERSION;
|
17
17
|
|
18
18
|
string private _commitHash;
|
19
19
|
|
@@ -22,8 +22,9 @@ contract ServiceAuthorization
|
|
22
22
|
mapping(ObjectType domain => ObjectType[] authorizedDomains) internal _authorizedDomains;
|
23
23
|
mapping(ObjectType domain => mapping(ObjectType authorizedDomain => IAccess.FunctionInfo[] functions)) internal _authorizedFunctions;
|
24
24
|
|
25
|
-
constructor(string memory commitHash) {
|
25
|
+
constructor(string memory commitHash, uint256 version) {
|
26
26
|
_commitHash = commitHash;
|
27
|
+
GIF_VERSION = version;
|
27
28
|
_setupDomains();
|
28
29
|
_setupDomainAuthorizations();
|
29
30
|
}
|
@@ -33,7 +34,7 @@ contract ServiceAuthorization
|
|
33
34
|
}
|
34
35
|
|
35
36
|
function getRelease() external view returns(VersionPart release) {
|
36
|
-
return VersionPartLib.toVersionPart(
|
37
|
+
return VersionPartLib.toVersionPart(GIF_VERSION);
|
37
38
|
}
|
38
39
|
|
39
40
|
function getServiceDomains() external view returns(ObjectType[] memory serviceDomains) {
|
@@ -1,8 +1,6 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
2
|
pragma solidity ^0.8.20;
|
3
3
|
|
4
|
-
import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
|
5
|
-
|
6
4
|
import {IRegistry} from "../registry/IRegistry.sol";
|
7
5
|
import {IInstance} from "../instance/IInstance.sol";
|
8
6
|
import {IComponentService} from "../shared/IComponentService.sol";
|
@@ -19,7 +17,7 @@ import {KEEP_STATE} from "../type/StateId.sol";
|
|
19
17
|
import {ObjectType, COMPONENT, DISTRIBUTION, INSTANCE, DISTRIBUTION, DISTRIBUTOR, REGISTRY} from "../type/ObjectType.sol";
|
20
18
|
import {ComponentVerifyingService} from "../shared/ComponentVerifyingService.sol";
|
21
19
|
import {IDistributionService} from "./IDistributionService.sol";
|
22
|
-
import {UFixed
|
20
|
+
import {UFixed} from "../type/UFixed.sol";
|
23
21
|
import {DistributorType, DistributorTypeLib} from "../type/DistributorType.sol";
|
24
22
|
import {ReferralId, ReferralLib} from "../type/Referral.sol";
|
25
23
|
import {Timestamp, TimestampLib} from "../type/Timestamp.sol";
|
@@ -40,8 +38,8 @@ contract DistributionService is
|
|
40
38
|
bytes memory data
|
41
39
|
)
|
42
40
|
internal
|
43
|
-
initializer
|
44
41
|
virtual override
|
42
|
+
onlyInitializing()
|
45
43
|
{
|
46
44
|
address initialOwner;
|
47
45
|
address registryAddress;
|
@@ -275,17 +273,6 @@ contract DistributionService is
|
|
275
273
|
}
|
276
274
|
}
|
277
275
|
|
278
|
-
if (withdrawnAmount.eqz()) {
|
279
|
-
revert ErrorDistributionServiceCommissionWithdrawAmountIsZero();
|
280
|
-
}
|
281
|
-
|
282
|
-
// check allowance
|
283
|
-
IERC20Metadata token = IERC20Metadata(distributionInfo.token);
|
284
|
-
uint256 tokenAllowance = token.allowance(distributionWallet, address(distributionInfo.tokenHandler));
|
285
|
-
if (tokenAllowance < withdrawnAmount.toInt()) {
|
286
|
-
revert ErrorDistributionServiceWalletAllowanceTooSmall(distributionWallet, address(distributionInfo.tokenHandler), tokenAllowance, withdrawnAmount.toInt());
|
287
|
-
}
|
288
|
-
|
289
276
|
// decrease fee counters by withdrawnAmount and update distributor info
|
290
277
|
{
|
291
278
|
InstanceStore store = instance.getInstanceStore();
|
@@ -298,10 +285,8 @@ contract DistributionService is
|
|
298
285
|
// transfer amount to distributor
|
299
286
|
{
|
300
287
|
address distributor = getRegistry().ownerOf(distributorNftId);
|
301
|
-
|
302
|
-
distributionInfo.tokenHandler.
|
303
|
-
|
304
|
-
emit LogDistributionServiceCommissionWithdrawn(distributorNftId, distributor, address(token), withdrawnAmount);
|
288
|
+
emit LogDistributionServiceCommissionWithdrawn(distributorNftId, distributor, address(distributionInfo.token), withdrawnAmount);
|
289
|
+
distributionInfo.tokenHandler.distributeTokens(distributionWallet, distributor, withdrawnAmount);
|
305
290
|
}
|
306
291
|
}
|
307
292
|
|
@@ -28,9 +28,7 @@ interface IDistributionService is IService {
|
|
28
28
|
error ErrorIDistributionServiceMinFeeTooHigh(uint256 minFee, uint256 limit);
|
29
29
|
|
30
30
|
error ErrorDistributionServiceCommissionWithdrawAmountExceedsLimit(Amount amount, Amount limit);
|
31
|
-
|
32
|
-
error ErrorDistributionServiceWalletAllowanceTooSmall(address wallet, address tokenHandler, uint256 allowance, uint256 amount);
|
33
|
-
|
31
|
+
|
34
32
|
error ErrorDistributionServiceVariableFeesTooHight(uint256 maxDiscountPercentage, uint256 limit);
|
35
33
|
error ErrorDistributionServiceMaxDiscountTooHigh(uint256 maxDiscountPercentage, uint256 limit);
|
36
34
|
|
@@ -4,39 +4,16 @@ pragma solidity ^0.8.20;
|
|
4
4
|
import {IAccessManaged} from "@openzeppelin/contracts/access/manager/IAccessManaged.sol";
|
5
5
|
|
6
6
|
import {Amount} from "../type/Amount.sol";
|
7
|
-
import {ClaimId} from "../type/ClaimId.sol";
|
8
|
-
import {DistributorType} from "../type/DistributorType.sol";
|
9
|
-
import {PayoutId} from "../type/PayoutId.sol";
|
10
|
-
import {NftId} from "../type/NftId.sol";
|
11
|
-
import {StateId} from "../type/StateId.sol";
|
12
|
-
import {ReferralId} from "../type/Referral.sol";
|
13
|
-
import {RiskId} from "../type/RiskId.sol";
|
14
|
-
import {VersionPart} from "../type/Version.sol";
|
15
|
-
import {Key32} from "../type/Key32.sol";
|
16
|
-
import {RoleId} from "../type/RoleId.sol";
|
17
|
-
import {Seconds} from "../type/Seconds.sol";
|
18
|
-
import {UFixed} from "../type/UFixed.sol";
|
19
|
-
|
20
|
-
import {IRegisterable} from "../shared/IRegisterable.sol";
|
21
|
-
|
22
|
-
import {ITransferInterceptor} from "../registry/ITransferInterceptor.sol";
|
23
|
-
|
24
|
-
import {InstanceAdmin} from "./InstanceAdmin.sol";
|
25
7
|
import {BundleSet} from "./BundleSet.sol";
|
8
|
+
import {InstanceAdmin} from "./InstanceAdmin.sol";
|
26
9
|
import {InstanceReader} from "./InstanceReader.sol";
|
27
10
|
import {InstanceStore} from "./InstanceStore.sol";
|
28
|
-
|
29
|
-
import {
|
30
|
-
|
31
|
-
import {
|
32
|
-
|
33
|
-
import {
|
34
|
-
import {IDistributionService} from "../distribution/IDistributionService.sol";
|
35
|
-
import {IPolicyService} from "../product/IPolicyService.sol";
|
36
|
-
import {IPoolService} from "../pool/IPoolService.sol";
|
37
|
-
import {IProductService} from "../product/IProductService.sol";
|
38
|
-
import {IPolicyService} from "../product/IPolicyService.sol";
|
39
|
-
import {IBundleService} from "../pool/IBundleService.sol";
|
11
|
+
import {IRegisterable} from "../shared/IRegisterable.sol";
|
12
|
+
import {ITransferInterceptor} from "../registry/ITransferInterceptor.sol";
|
13
|
+
import {RoleId} from "../type/RoleId.sol";
|
14
|
+
import {Seconds} from "../type/Seconds.sol";
|
15
|
+
import {UFixed} from "../type/UFixed.sol";
|
16
|
+
import {VersionPart} from "../type/Version.sol";
|
40
17
|
|
41
18
|
|
42
19
|
interface IInstance is
|
@@ -4,44 +4,19 @@ pragma solidity ^0.8.20;
|
|
4
4
|
import {AccessManagedUpgradeable} from "@openzeppelin/contracts-upgradeable/access/manager/AccessManagedUpgradeable.sol";
|
5
5
|
|
6
6
|
import {Amount} from "../type/Amount.sol";
|
7
|
-
import {
|
8
|
-
import {NftId} from "../type/NftId.sol";
|
9
|
-
import {RiskId} from "../type/RiskId.sol";
|
10
|
-
import {ObjectType, BUNDLE, DISTRIBUTION, INSTANCE, POLICY, POOL, ROLE, PRODUCT, TARGET, COMPONENT, DISTRIBUTOR, DISTRIBUTOR_TYPE} from "../type/ObjectType.sol";
|
11
|
-
import {RoleId} from "../type/RoleId.sol";
|
12
|
-
import {ClaimId} from "../type/ClaimId.sol";
|
13
|
-
import {ReferralId} from "../type/Referral.sol";
|
14
|
-
import {PayoutId} from "../type/PayoutId.sol";
|
15
|
-
import {DistributorType} from "../type/DistributorType.sol";
|
16
|
-
import {Seconds} from "../type/Seconds.sol";
|
17
|
-
import {UFixed} from "../type/UFixed.sol";
|
18
|
-
import {VersionPart, VersionPartLib} from "../type/Version.sol";
|
19
|
-
|
20
|
-
import {Registerable} from "../shared/Registerable.sol";
|
21
|
-
import {TokenHandler} from "../shared/TokenHandler.sol";
|
22
|
-
|
23
|
-
import {IRegistry} from "../registry/IRegistry.sol";
|
24
|
-
|
7
|
+
import {BundleSet} from "./BundleSet.sol";
|
25
8
|
import {IInstance} from "./IInstance.sol";
|
26
9
|
import {IInstanceService} from "./IInstanceService.sol";
|
27
10
|
import {InstanceReader} from "./InstanceReader.sol";
|
28
11
|
import {InstanceAdmin} from "./InstanceAdmin.sol";
|
29
|
-
import {BundleSet} from "./BundleSet.sol";
|
30
12
|
import {InstanceStore} from "./InstanceStore.sol";
|
31
|
-
|
32
|
-
import {
|
33
|
-
|
34
|
-
import {
|
35
|
-
import {
|
36
|
-
import {
|
37
|
-
import {
|
38
|
-
import {IRisk} from "./module/IRisk.sol";
|
39
|
-
|
40
|
-
import {IDistributionService} from "../distribution/IDistributionService.sol";
|
41
|
-
import {IPoolService} from "../pool/IPoolService.sol";
|
42
|
-
import {IProductService} from "../product/IProductService.sol";
|
43
|
-
import {IPolicyService} from "../product/IPolicyService.sol";
|
44
|
-
import {IBundleService} from "../pool/IBundleService.sol";
|
13
|
+
import {INSTANCE} from "../type/ObjectType.sol";
|
14
|
+
import {IRegistry} from "../registry/IRegistry.sol";
|
15
|
+
import {Registerable} from "../shared/Registerable.sol";
|
16
|
+
import {RoleId} from "../type/RoleId.sol";
|
17
|
+
import {Seconds} from "../type/Seconds.sol";
|
18
|
+
import {UFixed} from "../type/UFixed.sol";
|
19
|
+
import {VersionPart, VersionPartLib} from "../type/Version.sol";
|
45
20
|
|
46
21
|
contract Instance is
|
47
22
|
IInstance,
|
@@ -7,6 +7,7 @@ import {AccessAdmin} from "../authorization/AccessAdmin.sol";
|
|
7
7
|
import {AccessManagerCloneable} from "../authorization/AccessManagerCloneable.sol";
|
8
8
|
import {IAccessAdmin} from "../authorization/IAccessAdmin.sol";
|
9
9
|
import {IAuthorization} from "../authorization/IAuthorization.sol";
|
10
|
+
import {IComponent} from "../shared/IComponent.sol";
|
10
11
|
import {IModuleAuthorization} from "../authorization/IModuleAuthorization.sol";
|
11
12
|
import {IRegistry} from "../registry/IRegistry.sol";
|
12
13
|
import {IInstance} from "./IInstance.sol";
|
@@ -14,6 +15,7 @@ import {IService} from "../shared/IService.sol";
|
|
14
15
|
import {ObjectType, ObjectTypeLib, ALL, POOL, RELEASE} from "../type/ObjectType.sol";
|
15
16
|
import {RoleId, RoleIdLib, ADMIN_ROLE, PUBLIC_ROLE, DISTRIBUTION_OWNER_ROLE, ORACLE_OWNER_ROLE, POOL_OWNER_ROLE, PRODUCT_OWNER_ROLE} from "../type/RoleId.sol";
|
16
17
|
import {Str, StrLib} from "../type/String.sol";
|
18
|
+
import {TokenHandler} from "../shared/TokenHandler.sol";
|
17
19
|
import {VersionPart} from "../type/Version.sol";
|
18
20
|
|
19
21
|
|
@@ -111,26 +113,43 @@ contract InstanceAdmin is
|
|
111
113
|
/// @dev Initializes the authorization for the specified component.
|
112
114
|
/// Important: The component MUST be registered.
|
113
115
|
function initializeComponentAuthorization(
|
114
|
-
|
116
|
+
IComponent component,
|
115
117
|
IAuthorization authorization
|
116
118
|
)
|
117
119
|
external
|
118
120
|
{
|
119
|
-
_checkTargetIsReadyForAuthorization(
|
121
|
+
_checkTargetIsReadyForAuthorization(address(component));
|
120
122
|
|
121
123
|
_createRoles(authorization);
|
122
124
|
|
123
125
|
// create component target
|
124
126
|
_createTarget(
|
125
|
-
|
127
|
+
address(component),
|
126
128
|
authorization.getTargetName(),
|
127
129
|
true, // checkAuthority
|
128
130
|
false); // custom
|
129
131
|
|
132
|
+
_createTarget(
|
133
|
+
address(component.getTokenHandler()),
|
134
|
+
string(abi.encodePacked(authorization.getTargetName(), "TH")),
|
135
|
+
true,
|
136
|
+
false);
|
137
|
+
|
138
|
+
// FIXME: make this a bit nicer and work with IAuthorization. Use a specific role, not public - access to TokenHandler must be restricted
|
139
|
+
FunctionInfo[] memory functions = new FunctionInfo[](3);
|
140
|
+
functions[0] = toFunction(TokenHandler.collectTokens.selector, "collectTokens");
|
141
|
+
functions[1] = toFunction(TokenHandler.collectTokensToThreeRecipients.selector, "collectTokensToThreeRecipients");
|
142
|
+
functions[2] = toFunction(TokenHandler.distributeTokens.selector, "distributeTokens");
|
143
|
+
|
144
|
+
_authorizeTargetFunctions(
|
145
|
+
address(component.getTokenHandler()),
|
146
|
+
getPublicRole(),
|
147
|
+
functions);
|
148
|
+
|
130
149
|
_grantRoleToAccount(
|
131
150
|
authorization.getTargetRole(
|
132
151
|
authorization.getTarget()),
|
133
|
-
|
152
|
+
address(component));
|
134
153
|
|
135
154
|
_createTargetAuthorizations(authorization);
|
136
155
|
}
|
@@ -1,25 +1,20 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
2
|
pragma solidity ^0.8.20;
|
3
3
|
|
4
|
-
import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
|
5
|
-
|
6
4
|
import {Amount} from "../type/Amount.sol";
|
7
5
|
import {ClaimId} from "../type/ClaimId.sol";
|
8
6
|
import {DistributorType} from "../type/DistributorType.sol";
|
9
|
-
import {Fee, FeeLib} from "../type/Fee.sol";
|
10
7
|
import {Key32} from "../type/Key32.sol";
|
11
8
|
import {NftId} from "../type/NftId.sol";
|
12
|
-
import {
|
9
|
+
import {COMPONENT, DISTRIBUTOR, DISTRIBUTION, PRODUCT, POLICY, POOL, BUNDLE} from "../type/ObjectType.sol";
|
13
10
|
import {PayoutId} from "../type/PayoutId.sol";
|
14
11
|
import {ReferralId, ReferralStatus, ReferralLib, REFERRAL_OK, REFERRAL_ERROR_UNKNOWN, REFERRAL_ERROR_EXPIRED, REFERRAL_ERROR_EXHAUSTED} from "../type/Referral.sol";
|
15
12
|
import {RequestId} from "../type/RequestId.sol";
|
16
13
|
import {RiskId} from "../type/RiskId.sol";
|
17
14
|
import {RoleId} from "../type/RoleId.sol";
|
18
15
|
import {StateId} from "../type/StateId.sol";
|
19
|
-
import {UFixed,
|
20
|
-
import {Version} from "../type/Version.sol";
|
16
|
+
import {UFixed, UFixedLib} from "../type/UFixed.sol";
|
21
17
|
|
22
|
-
import {IRegistry} from "../registry/IRegistry.sol";
|
23
18
|
import {IBundle} from "../instance/module/IBundle.sol";
|
24
19
|
import {IComponents} from "../instance/module/IComponents.sol";
|
25
20
|
import {IDistribution} from "../instance/module/IDistribution.sol";
|
@@ -104,32 +104,9 @@ contract InstanceService is
|
|
104
104
|
// tx sender will become instance owner
|
105
105
|
address instanceOwner = msg.sender;
|
106
106
|
|
107
|
-
//
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
// set up the instance admin
|
112
|
-
InstanceAdmin clonedInstanceAdmin = InstanceAdmin(Clones.clone(_masterInstanceAdmin));
|
113
|
-
clonedAccessManager.initialize(
|
114
|
-
address(clonedInstanceAdmin)); // grant ADMIN_ROLE to instance admin
|
115
|
-
|
116
|
-
clonedInstanceAdmin.initialize(
|
117
|
-
clonedAccessManager,
|
118
|
-
InstanceAdmin(_masterInstanceAdmin).getInstanceAuthorization());
|
119
|
-
|
120
|
-
InstanceStore clonedInstanceStore = InstanceStore(Clones.clone(address(_masterInstanceStore)));
|
121
|
-
BundleSet clonedBundleSet = BundleSet(Clones.clone(_masterInstanceBundleSet));
|
122
|
-
InstanceReader clonedInstanceReader = InstanceReader(Clones.clone(address(_masterInstanceReader)));
|
123
|
-
|
124
|
-
// clone instance
|
125
|
-
clonedInstance = Instance(Clones.clone(_masterInstance));
|
126
|
-
clonedInstance.initialize(
|
127
|
-
clonedInstanceAdmin,
|
128
|
-
clonedInstanceStore,
|
129
|
-
clonedBundleSet,
|
130
|
-
clonedInstanceReader,
|
131
|
-
getRegistry(),
|
132
|
-
instanceOwner);
|
107
|
+
// create instance admin and instance
|
108
|
+
InstanceAdmin instanceAdmin = _createInstanceAdmin();
|
109
|
+
clonedInstance = _createInstance(instanceAdmin, instanceOwner);
|
133
110
|
|
134
111
|
// register cloned instance with registry
|
135
112
|
clonedInstanceNftId = _registryService.registerInstance(
|
@@ -142,7 +119,7 @@ contract InstanceService is
|
|
142
119
|
TargetManagerLib.getDefaultRewardRate());
|
143
120
|
|
144
121
|
// MUST be set after instance is set up and registered
|
145
|
-
|
122
|
+
instanceAdmin.initializeInstanceAuthorization(address(clonedInstance));
|
146
123
|
|
147
124
|
emit LogInstanceCloned(
|
148
125
|
clonedInstanceNftId,
|
@@ -337,7 +314,7 @@ contract InstanceService is
|
|
337
314
|
|
338
315
|
InstanceAdmin instanceAdmin = instance.getInstanceAdmin();
|
339
316
|
instanceAdmin.initializeComponentAuthorization(
|
340
|
-
|
317
|
+
component,
|
341
318
|
component.getAuthorization());
|
342
319
|
}
|
343
320
|
|
@@ -362,6 +339,53 @@ contract InstanceService is
|
|
362
339
|
);
|
363
340
|
}
|
364
341
|
|
342
|
+
/// @dev create new cloned instance admin
|
343
|
+
/// function used to setup a new instance
|
344
|
+
function _createInstanceAdmin()
|
345
|
+
internal
|
346
|
+
virtual
|
347
|
+
returns (InstanceAdmin clonedInstanceAdmin)
|
348
|
+
{
|
349
|
+
// start with setting up a new OZ access manager
|
350
|
+
AccessManagerCloneable clonedAccessManager = AccessManagerCloneable(
|
351
|
+
Clones.clone(_masterAccessManager));
|
352
|
+
|
353
|
+
// set up the instance admin
|
354
|
+
clonedInstanceAdmin = InstanceAdmin(Clones.clone(_masterInstanceAdmin));
|
355
|
+
clonedAccessManager.initialize(
|
356
|
+
address(clonedInstanceAdmin)); // grant ADMIN_ROLE to instance admin
|
357
|
+
|
358
|
+
clonedInstanceAdmin.initialize(
|
359
|
+
clonedAccessManager,
|
360
|
+
InstanceAdmin(_masterInstanceAdmin).getInstanceAuthorization());
|
361
|
+
}
|
362
|
+
|
363
|
+
|
364
|
+
/// @dev create new cloned instance
|
365
|
+
/// function used to setup a new instance
|
366
|
+
function _createInstance(
|
367
|
+
InstanceAdmin instanceAdmin,
|
368
|
+
address instanceOwner
|
369
|
+
)
|
370
|
+
internal
|
371
|
+
virtual
|
372
|
+
returns (Instance clonedInstance)
|
373
|
+
{
|
374
|
+
InstanceStore clonedInstanceStore = InstanceStore(Clones.clone(address(_masterInstanceStore)));
|
375
|
+
BundleSet clonedBundleSet = BundleSet(Clones.clone(_masterInstanceBundleSet));
|
376
|
+
InstanceReader clonedInstanceReader = InstanceReader(Clones.clone(address(_masterInstanceReader)));
|
377
|
+
|
378
|
+
// clone instance
|
379
|
+
clonedInstance = Instance(Clones.clone(_masterInstance));
|
380
|
+
clonedInstance.initialize(
|
381
|
+
instanceAdmin,
|
382
|
+
clonedInstanceStore,
|
383
|
+
clonedBundleSet,
|
384
|
+
clonedInstanceReader,
|
385
|
+
getRegistry(),
|
386
|
+
instanceOwner);
|
387
|
+
}
|
388
|
+
|
365
389
|
|
366
390
|
/// all gif targets MUST be children of instanceNftId
|
367
391
|
function _createGifTarget(
|
@@ -391,15 +415,14 @@ contract InstanceService is
|
|
391
415
|
// instanceAdmin.setTargetFunctionRoleByService(targetName, selectors[roleIdx], roles[roleIdx]);
|
392
416
|
}
|
393
417
|
}
|
394
|
-
|
395
|
-
/// @dev top level initializer
|
418
|
+
|
396
419
|
function _initialize(
|
397
420
|
address owner,
|
398
421
|
bytes memory data
|
399
422
|
)
|
400
423
|
internal
|
401
|
-
initializer
|
402
424
|
virtual override
|
425
|
+
onlyInitializing()
|
403
426
|
{
|
404
427
|
(
|
405
428
|
address registryAddress,,
|
@@ -54,9 +54,7 @@ contract ObjectLifecycle is
|
|
54
54
|
setStateTransition(POLICY(), APPLIED(), REVOKED());
|
55
55
|
setStateTransition(POLICY(), APPLIED(), DECLINED());
|
56
56
|
setStateTransition(POLICY(), APPLIED(), COLLATERALIZED());
|
57
|
-
setStateTransition(POLICY(),
|
58
|
-
setStateTransition(POLICY(), COLLATERALIZED(), ACTIVE());
|
59
|
-
setStateTransition(POLICY(), ACTIVE(), CLOSED());
|
57
|
+
setStateTransition(POLICY(), COLLATERALIZED(), CLOSED());
|
60
58
|
}
|
61
59
|
|
62
60
|
function _setupClaimLifecycle() private {
|
@@ -68,6 +66,7 @@ contract ObjectLifecycle is
|
|
68
66
|
|
69
67
|
function _setupPayoutLifecycle() private {
|
70
68
|
setInitialState(PAYOUT(), EXPECTED());
|
69
|
+
// TODO: add state cancelled
|
71
70
|
setStateTransition(PAYOUT(), EXPECTED(), PAID());
|
72
71
|
}
|
73
72
|
|
@@ -35,9 +35,8 @@ interface IComponents {
|
|
35
35
|
|
36
36
|
|
37
37
|
struct PoolInfo {
|
38
|
+
Amount maxBalanceAmount; // max balance amount allowed for pool
|
38
39
|
RoleId bundleOwnerRole; // the required role for bundle owners
|
39
|
-
// TODO maxCapitalAmount -> maxBalanceAmount
|
40
|
-
Amount maxCapitalAmount; // max capital amount allowed for pool
|
41
40
|
bool isInterceptingBundleTransfers; // intercepts nft transfers for bundles
|
42
41
|
bool isExternallyManaged; // funding bundles is restricted to book keeping, actual funds may be provided as needed to support payouts
|
43
42
|
bool isVerifyingApplications; // underwriting requires the pool component checks/confirms the applications
|
@@ -22,7 +22,7 @@ interface IPolicy {
|
|
22
22
|
uint256 netPremiumAmount;
|
23
23
|
// fullPremium = netPremium + all fixed amounts + all variable amounts (excl commission and minDistribtuionOwnerFee variable part)
|
24
24
|
uint256 fullPremiumAmount;
|
25
|
-
// premium = fullPremium - discount
|
25
|
+
// effective premium = fullPremium - discount
|
26
26
|
uint256 premiumAmount;
|
27
27
|
uint256 productFeeFixAmount;
|
28
28
|
uint256 poolFeeFixAmount;
|
@@ -27,8 +27,8 @@ contract OracleService is
|
|
27
27
|
bytes memory data
|
28
28
|
)
|
29
29
|
internal
|
30
|
-
initializer
|
31
30
|
virtual override
|
31
|
+
onlyInitializing()
|
32
32
|
{
|
33
33
|
address initialOwner;
|
34
34
|
address registryAddress;
|
@@ -64,6 +64,7 @@ contract OracleService is
|
|
64
64
|
ORACLE(),
|
65
65
|
true); // only active
|
66
66
|
|
67
|
+
// TODO move to stronger validation, requester and oracle need to belong to same product cluster
|
67
68
|
// check that requester and oracle share same instance
|
68
69
|
if (componentInfo.parentNftId != oracleInfo.parentNftId) {
|
69
70
|
revert ErrorOracleServiceInstanceMismatch(componentInfo.parentNftId, oracleInfo.parentNftId);
|
@@ -131,13 +131,13 @@ abstract contract BasicPool is
|
|
131
131
|
}
|
132
132
|
|
133
133
|
|
134
|
-
function
|
134
|
+
function setMaxBalanceAmount(Amount maxBalanceAmount)
|
135
135
|
public
|
136
136
|
virtual
|
137
137
|
restricted()
|
138
138
|
onlyOwner()
|
139
139
|
{
|
140
|
-
|
140
|
+
_setMaxBalanceAmount(maxBalanceAmount);
|
141
141
|
}
|
142
142
|
|
143
143
|
|
@@ -43,7 +43,7 @@ contract BasicPoolAuthorization
|
|
43
43
|
_authorize(functions, BasicPool.closeBundle.selector, "closeBundle");
|
44
44
|
_authorize(functions, BasicPool.setBundleFee.selector, "setBundleFee");
|
45
45
|
|
46
|
-
_authorize(functions, BasicPool.
|
46
|
+
_authorize(functions, BasicPool.setMaxBalanceAmount.selector, "setMaxBalanceAmount");
|
47
47
|
_authorize(functions, BasicPool.setBundleOwnerRole.selector, "setBundleOwnerRole");
|
48
48
|
_authorize(functions, BasicPool.setFees.selector, "setFees");
|
49
49
|
_authorize(functions, BasicPool.stake.selector, "stake");
|
@@ -1,8 +1,6 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
2
|
pragma solidity ^0.8.20;
|
3
3
|
|
4
|
-
import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
|
5
|
-
|
6
4
|
import {IBundle} from "../instance/module/IBundle.sol";
|
7
5
|
import {IBundleService} from "./IBundleService.sol";
|
8
6
|
import {IComponents} from "../instance/module/IComponents.sol";
|
@@ -42,8 +40,8 @@ contract BundleService is
|
|
42
40
|
bytes memory data
|
43
41
|
)
|
44
42
|
internal
|
45
|
-
initializer
|
46
43
|
virtual override
|
44
|
+
onlyInitializing()
|
47
45
|
{
|
48
46
|
address registryAddress;
|
49
47
|
address initialOwner;
|
@@ -221,7 +219,6 @@ contract BundleService is
|
|
221
219
|
restricted
|
222
220
|
returns (Amount unstakedAmount, Amount feeAmount)
|
223
221
|
{
|
224
|
-
// udpate bundle state
|
225
222
|
InstanceReader instanceReader = instance.getInstanceReader();
|
226
223
|
|
227
224
|
// ensure no open policies attached to bundle
|
@@ -232,14 +229,15 @@ contract BundleService is
|
|
232
229
|
}
|
233
230
|
|
234
231
|
{
|
235
|
-
|
236
|
-
feeAmount = instanceReader.getFeeAmount(bundleNftId);
|
237
|
-
unstakedAmount = balanceAmountWithFees - feeAmount;
|
238
|
-
|
232
|
+
// update bundle state
|
239
233
|
InstanceStore instanceStore = instance.getInstanceStore();
|
240
234
|
instanceStore.updateBundleState(bundleNftId, CLOSED());
|
241
235
|
bundleManager.lock(bundleNftId);
|
242
236
|
|
237
|
+
// decrease bundle counters
|
238
|
+
Amount balanceAmountWithFees = instanceReader.getBalanceAmount(bundleNftId);
|
239
|
+
feeAmount = instanceReader.getFeeAmount(bundleNftId);
|
240
|
+
unstakedAmount = balanceAmountWithFees - feeAmount;
|
243
241
|
_componentService.decreaseBundleBalance(instanceStore, bundleNftId, unstakedAmount, feeAmount);
|
244
242
|
}
|
245
243
|
}
|
@@ -399,17 +397,6 @@ contract BundleService is
|
|
399
397
|
}
|
400
398
|
}
|
401
399
|
|
402
|
-
if (withdrawnAmount.eqz()) {
|
403
|
-
revert ErrorBundleServiceFeesWithdrawAmountIsZero();
|
404
|
-
}
|
405
|
-
|
406
|
-
// check allowance
|
407
|
-
IERC20Metadata token = IERC20Metadata(poolInfo.token);
|
408
|
-
uint256 tokenAllowance = token.allowance(poolWallet, address(poolInfo.tokenHandler));
|
409
|
-
if (tokenAllowance < withdrawnAmount.toInt()) {
|
410
|
-
revert ErrorBundleServiceWalletAllowanceTooSmall(poolWallet, address(poolInfo.tokenHandler), tokenAllowance, withdrawnAmount.toInt());
|
411
|
-
}
|
412
|
-
|
413
400
|
// decrease fee counters by withdrawnAmount
|
414
401
|
{
|
415
402
|
InstanceStore store = instance.getInstanceStore();
|
@@ -422,10 +409,8 @@ contract BundleService is
|
|
422
409
|
// transfer amount to bundle owner
|
423
410
|
{
|
424
411
|
address owner = getRegistry().ownerOf(bundleNftId);
|
425
|
-
|
426
|
-
poolInfo.tokenHandler.
|
427
|
-
|
428
|
-
emit LogBundleServiceFeesWithdrawn(bundleNftId, owner, address(token), withdrawnAmount);
|
412
|
+
emit LogBundleServiceFeesWithdrawn(bundleNftId, owner, address(poolInfo.token), withdrawnAmount);
|
413
|
+
poolInfo.tokenHandler.distributeTokens(poolWallet, owner, withdrawnAmount);
|
429
414
|
}
|
430
415
|
}
|
431
416
|
|
@@ -27,9 +27,7 @@ interface IBundleService is IService {
|
|
27
27
|
error ErrorBundleServicePolicyNotCloseable(NftId policyNftId);
|
28
28
|
|
29
29
|
error ErrorBundleServiceFeesWithdrawAmountExceedsLimit(Amount amount, Amount limit);
|
30
|
-
|
31
|
-
error ErrorBundleServiceWalletAllowanceTooSmall(address wallet, address tokenHandler, uint256 allowance, uint256 amount);
|
32
|
-
|
30
|
+
|
33
31
|
error ErrorBundleServiceUnstakeAmountExceedsLimit(Amount amount, Amount limit);
|
34
32
|
|
35
33
|
error ErrorBundleServiceExtensionLifetimeIsZero();
|
@@ -126,6 +124,7 @@ interface IBundleService is IService {
|
|
126
124
|
NftId policyNftId
|
127
125
|
) external;
|
128
126
|
|
127
|
+
// FIXME: move to pool service
|
129
128
|
/// @dev Withdraw bundle feeds for the given bundle
|
130
129
|
/// @param bundleNftId the bundle Nft Id
|
131
130
|
/// @param amount the amount to withdraw. If set to AMOUNT_MAX, the full commission available is withdrawn
|