@etherisc/gif-next 0.0.2-e5a6af8-639 → 0.0.2-e5bdc7a-061
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 +27 -6
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +2 -2
- package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.dbg.json +4 -0
- package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.json +24 -0
- 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/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.dbg.json +1 -1
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +2 -2
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +55 -133
- 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 +8 -38
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +133 -78
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +78 -46
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +11 -23
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +23 -0
- package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +38 -147
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +49 -17
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +92 -190
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +2 -2
- package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +66 -107
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +33 -87
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +155 -141
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +391 -205
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +147 -42
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +46 -0
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +24 -4
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +78 -11
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +85 -72
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +40 -27
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +302 -74
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +61 -25
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +46 -22
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +36 -46
- package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +4 -0
- package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +810 -0
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
- 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/ObjectCounter.sol/ObjectCounter.json +2 -2
- 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 +22 -100
- 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 +11 -23
- 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 +8 -38
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +84 -60
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +66 -22
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +8 -53
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +49 -17
- package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +101 -206
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +58 -70
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +19 -57
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +11 -62
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +77 -75
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +8 -77
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +153 -159
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +61 -33
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +66 -31
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +42 -22
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +13 -38
- 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 +84 -76
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +67 -47
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +34 -7
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +38 -19
- 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 +16 -23
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +132 -121
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +70 -42
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +54 -38
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +56 -32
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/product/Product.sol/Product.json +13 -38
- package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +1 -1
- package/artifacts/contracts/product/RiskService.sol/RiskService.json +34 -18
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +40 -16
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +24 -0
- 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 +62 -38
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +107 -94
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +32 -16
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +39 -15
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +2 -2
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +12 -12
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +6 -6
- 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 +8 -38
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +169 -102
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +74 -42
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +1 -1
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +402 -6
- package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +4 -0
- package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.json +24 -0
- package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +4 -0
- package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.json +30 -0
- package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponent.sol/IComponent.json +11 -23
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +67 -0
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +11 -23
- 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/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 +8 -38
- 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/NftIdSet.sol/NftIdSet.json +2 -2
- 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 +388 -35
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +4 -0
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +395 -0
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +88 -24
- package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
- package/artifacts/contracts/staking/IStaking.sol/IStaking.json +29 -59
- 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 +2 -2
- package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
- package/artifacts/contracts/staking/Staking.sol/Staking.json +80 -152
- 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 +50 -46
- 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 +36 -20
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +43 -19
- 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/ClaimId.sol/ClaimIdLib.json +2 -2
- package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
- package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
- 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/Key32.sol/Key32Lib.json +2 -2
- package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +4 -0
- package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +33 -0
- package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/NftId.sol/NftIdLib.json +23 -4
- package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
- package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
- package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
- package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +2 -2
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +2 -2
- package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
- package/artifacts/contracts/type/Referral.sol/ReferralLib.json +2 -2
- package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +2 -2
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +43 -5
- 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/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/VersionPartLib.dbg.json +1 -1
- 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 +18 -2
- 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 +21 -1
- package/contracts/distribution/BasicDistribution.sol +2 -2
- package/contracts/distribution/BasicDistributionAuthorization.sol +1 -1
- package/contracts/distribution/Distribution.sol +5 -6
- package/contracts/distribution/DistributionService.sol +19 -20
- package/contracts/distribution/IDistributionService.sol +5 -6
- package/contracts/examples/fire/FirePool.sol +19 -8
- package/contracts/examples/fire/FireProduct.sol +24 -11
- package/contracts/examples/unpermissioned/SimpleDistribution.sol +8 -0
- package/contracts/examples/unpermissioned/SimplePool.sol +34 -2
- package/contracts/examples/unpermissioned/SimpleProduct.sol +15 -21
- package/contracts/instance/BundleSet.sol +38 -34
- package/contracts/instance/IInstance.sol +6 -0
- package/contracts/instance/IInstanceService.sol +7 -5
- package/contracts/instance/Instance.sol +14 -5
- package/contracts/instance/InstanceAdmin.sol +6 -5
- package/contracts/instance/InstanceAuthorizationV3.sol +30 -7
- package/contracts/instance/InstanceReader.sol +85 -1
- package/contracts/instance/InstanceService.sol +32 -19
- package/contracts/instance/RiskSet.sol +119 -0
- package/contracts/instance/base/ObjectSet.sol +24 -25
- package/contracts/instance/module/IComponents.sol +1 -2
- package/contracts/instance/module/IPolicy.sol +2 -1
- package/contracts/instance/module/IRisk.sol +1 -0
- package/contracts/oracle/OracleService.sol +87 -69
- package/contracts/pool/BasicPool.sol +24 -3
- package/contracts/pool/BasicPoolAuthorization.sol +12 -1
- package/contracts/pool/BundleService.sol +37 -94
- package/contracts/pool/IBundleService.sol +2 -23
- package/contracts/pool/IPoolComponent.sol +1 -7
- package/contracts/pool/IPoolService.sol +12 -26
- package/contracts/pool/Pool.sol +112 -102
- package/contracts/pool/PoolService.sol +177 -99
- package/contracts/product/ApplicationService.sol +20 -18
- package/contracts/product/BasicProduct.sol +7 -11
- package/contracts/product/ClaimService.sol +19 -9
- package/contracts/product/IApplicationService.sol +5 -2
- package/contracts/product/IPolicyService.sol +17 -7
- package/contracts/product/PolicyService.sol +241 -191
- package/contracts/product/PricingService.sol +4 -1
- package/contracts/product/Product.sol +12 -40
- package/contracts/product/RiskService.sol +14 -3
- package/contracts/registry/IRegistry.sol +2 -0
- package/contracts/registry/Registry.sol +9 -1
- package/contracts/registry/RegistryAdmin.sol +14 -11
- package/contracts/registry/ReleaseRegistry.sol +2 -18
- package/contracts/registry/ServiceAuthorizationV3.sol +12 -31
- package/contracts/shared/Component.sol +35 -83
- package/contracts/shared/ComponentService.sol +105 -34
- package/contracts/shared/ComponentVerifyingService.sol +15 -13
- package/contracts/shared/ContractLib.sol +196 -10
- package/contracts/shared/IComponent.sol +5 -12
- package/contracts/shared/IComponentService.sol +13 -3
- package/contracts/shared/InstanceLinkedComponent.sol +1 -9
- package/contracts/shared/NftOwnable.sol +5 -1
- package/contracts/shared/Registerable.sol +0 -2
- package/contracts/shared/RegistryLinked.sol +6 -12
- package/contracts/shared/TokenHandler.sol +316 -66
- package/contracts/shared/TokenHandlerDeployerLib.sol +10 -2
- package/contracts/staking/IStaking.sol +9 -4
- package/contracts/staking/Staking.sol +29 -21
- package/contracts/staking/StakingService.sol +55 -8
- package/contracts/type/Key32.sol +2 -2
- package/contracts/type/Key32Set.sol +62 -0
- package/contracts/type/NftId.sol +6 -0
- package/contracts/type/ObjectType.sol +2 -0
- package/contracts/type/RiskId.sol +18 -6
- package/package.json +3 -3
@@ -27,6 +27,7 @@ import {TimestampLib} from "../type/Timestamp.sol";
|
|
27
27
|
|
28
28
|
import {InstanceStore} from "./InstanceStore.sol";
|
29
29
|
import {BundleSet} from "./BundleSet.sol";
|
30
|
+
import {RiskSet} from "./RiskSet.sol";
|
30
31
|
|
31
32
|
|
32
33
|
contract InstanceReader {
|
@@ -39,6 +40,7 @@ contract InstanceReader {
|
|
39
40
|
IInstance internal _instance;
|
40
41
|
InstanceStore internal _store;
|
41
42
|
BundleSet internal _bundleSet;
|
43
|
+
RiskSet internal _riskSet;
|
42
44
|
|
43
45
|
/// @dev This initializer needs to be called from the instance itself.
|
44
46
|
function initialize() public {
|
@@ -59,6 +61,7 @@ contract InstanceReader {
|
|
59
61
|
_instance = IInstance(instanceAddress);
|
60
62
|
_store = _instance.getInstanceStore();
|
61
63
|
_bundleSet = _instance.getBundleSet();
|
64
|
+
_riskSet = _instance.getRiskSet();
|
62
65
|
}
|
63
66
|
|
64
67
|
|
@@ -102,6 +105,14 @@ contract InstanceReader {
|
|
102
105
|
return _store.getState(toPremiumKey(policyNftId));
|
103
106
|
}
|
104
107
|
|
108
|
+
function bundles(NftId poolNftId)
|
109
|
+
public
|
110
|
+
view
|
111
|
+
returns (uint256 bundles)
|
112
|
+
{
|
113
|
+
return _bundleSet.bundles(poolNftId);
|
114
|
+
}
|
115
|
+
|
105
116
|
function activeBundles(NftId poolNftId)
|
106
117
|
public
|
107
118
|
view
|
@@ -118,6 +129,14 @@ contract InstanceReader {
|
|
118
129
|
return _bundleSet.getActiveBundleNftId(poolNftId, idx);
|
119
130
|
}
|
120
131
|
|
132
|
+
function getBundleNftId(NftId poolNftId, uint256 idx)
|
133
|
+
public
|
134
|
+
view
|
135
|
+
returns (NftId bundleNftId)
|
136
|
+
{
|
137
|
+
return _bundleSet.getBundleNftId(poolNftId, idx);
|
138
|
+
}
|
139
|
+
|
121
140
|
function getBundleState(NftId bundleNftId)
|
122
141
|
public
|
123
142
|
view
|
@@ -226,6 +245,38 @@ contract InstanceReader {
|
|
226
245
|
return _store.getState(payoutId.toKey32(policyNftId));
|
227
246
|
}
|
228
247
|
|
248
|
+
function risks(NftId productNftId)
|
249
|
+
public
|
250
|
+
view
|
251
|
+
returns (uint256 activeRisks)
|
252
|
+
{
|
253
|
+
return _riskSet.risks(productNftId);
|
254
|
+
}
|
255
|
+
|
256
|
+
function getRiskId(NftId productNftId, uint256 idx)
|
257
|
+
public
|
258
|
+
view
|
259
|
+
returns (RiskId riskId)
|
260
|
+
{
|
261
|
+
return _riskSet.getRiskId(productNftId, idx);
|
262
|
+
}
|
263
|
+
|
264
|
+
function activeRisks(NftId productNftId)
|
265
|
+
public
|
266
|
+
view
|
267
|
+
returns (uint256 activeRisks)
|
268
|
+
{
|
269
|
+
return _riskSet.activeRisks(productNftId);
|
270
|
+
}
|
271
|
+
|
272
|
+
function getActiveRiskId(NftId productNftId, uint256 idx)
|
273
|
+
public
|
274
|
+
view
|
275
|
+
returns (RiskId riskId)
|
276
|
+
{
|
277
|
+
return _riskSet.getActiveRiskId(productNftId, idx);
|
278
|
+
}
|
279
|
+
|
229
280
|
function getRiskInfo(RiskId riskId)
|
230
281
|
public
|
231
282
|
view
|
@@ -237,6 +288,31 @@ contract InstanceReader {
|
|
237
288
|
}
|
238
289
|
}
|
239
290
|
|
291
|
+
function getRiskState(RiskId riskId)
|
292
|
+
public
|
293
|
+
view
|
294
|
+
returns (StateId stateId)
|
295
|
+
{
|
296
|
+
bytes memory data = _store.getData(riskId.toKey32());
|
297
|
+
return _store.getState(riskId.toKey32());
|
298
|
+
}
|
299
|
+
|
300
|
+
function policiesForRisk(RiskId riskId)
|
301
|
+
public
|
302
|
+
view
|
303
|
+
returns (uint256 linkedPolicies)
|
304
|
+
{
|
305
|
+
return _riskSet.linkedPolicies(riskId);
|
306
|
+
}
|
307
|
+
|
308
|
+
function getPolicyNftIdForRisk(RiskId riskId, uint256 idx)
|
309
|
+
public
|
310
|
+
view
|
311
|
+
returns (NftId linkedPolicyNftId)
|
312
|
+
{
|
313
|
+
return _riskSet.getLinkedPolicyNftId(riskId, idx);
|
314
|
+
}
|
315
|
+
|
240
316
|
function getWallet(NftId componentNftId)
|
241
317
|
public
|
242
318
|
view
|
@@ -246,7 +322,7 @@ contract InstanceReader {
|
|
246
322
|
|
247
323
|
if (data.length > 0) {
|
248
324
|
IComponents.ComponentInfo memory info = abi.decode(data, (IComponents.ComponentInfo));
|
249
|
-
return info.
|
325
|
+
return info.tokenHandler.getWallet();
|
250
326
|
}
|
251
327
|
}
|
252
328
|
|
@@ -485,6 +561,14 @@ contract InstanceReader {
|
|
485
561
|
return _store;
|
486
562
|
}
|
487
563
|
|
564
|
+
function getBundleSet() external view returns (BundleSet bundleSet) {
|
565
|
+
return _bundleSet;
|
566
|
+
}
|
567
|
+
|
568
|
+
function getRiskSet() external view returns (RiskSet riskSet) {
|
569
|
+
return _riskSet;
|
570
|
+
}
|
571
|
+
|
488
572
|
function toUFixed(uint256 value, int8 exp) public pure returns (UFixed) {
|
489
573
|
return UFixedLib.toUFixed(value, exp);
|
490
574
|
}
|
@@ -7,6 +7,7 @@ import {ShortString, ShortStrings} from "@openzeppelin/contracts/utils/ShortStri
|
|
7
7
|
import {AccessManagerCloneable} from "../authorization/AccessManagerCloneable.sol";
|
8
8
|
import {Amount} from "../type/Amount.sol";
|
9
9
|
import {BundleSet} from "./BundleSet.sol";
|
10
|
+
import {RiskSet} from "./RiskSet.sol";
|
10
11
|
import {ChainNft} from "../registry/ChainNft.sol";
|
11
12
|
import {NftId} from "../type/NftId.sol";
|
12
13
|
import {RoleId} from "../type/RoleId.sol";
|
@@ -54,6 +55,7 @@ contract InstanceService is
|
|
54
55
|
address internal _masterInstance;
|
55
56
|
address internal _masterInstanceReader;
|
56
57
|
address internal _masterInstanceBundleSet;
|
58
|
+
address internal _masterInstanceRiskSet;
|
57
59
|
address internal _masterInstanceStore;
|
58
60
|
|
59
61
|
|
@@ -96,8 +98,8 @@ contract InstanceService is
|
|
96
98
|
function createInstance()
|
97
99
|
external
|
98
100
|
returns (
|
99
|
-
|
100
|
-
NftId
|
101
|
+
IInstance instance,
|
102
|
+
NftId instanceNftId
|
101
103
|
)
|
102
104
|
{
|
103
105
|
// tx sender will become instance owner
|
@@ -105,24 +107,24 @@ contract InstanceService is
|
|
105
107
|
|
106
108
|
// create instance admin and instance
|
107
109
|
InstanceAdmin instanceAdmin = _createInstanceAdmin();
|
108
|
-
|
110
|
+
instance = _createInstance(instanceAdmin, instanceOwner);
|
109
111
|
|
110
112
|
// register cloned instance with registry
|
111
|
-
|
112
|
-
|
113
|
+
instanceNftId = _registryService.registerInstance(
|
114
|
+
instance, instanceOwner).nftId;
|
113
115
|
|
114
116
|
// register cloned instance as staking target
|
115
117
|
_stakingService.createInstanceTarget(
|
116
|
-
|
118
|
+
instanceNftId,
|
117
119
|
TargetManagerLib.getDefaultLockingPeriod(),
|
118
120
|
TargetManagerLib.getDefaultRewardRate());
|
119
121
|
|
120
122
|
// MUST be set after instance is set up and registered
|
121
|
-
instanceAdmin.initializeInstanceAuthorization(address(
|
123
|
+
instanceAdmin.initializeInstanceAuthorization(address(instance));
|
122
124
|
|
123
125
|
emit LogInstanceCloned(
|
124
|
-
|
125
|
-
address(
|
126
|
+
instanceNftId,
|
127
|
+
address(instance));
|
126
128
|
}
|
127
129
|
|
128
130
|
|
@@ -214,7 +216,7 @@ contract InstanceService is
|
|
214
216
|
if(_masterInstance != address(0)) { revert ErrorInstanceServiceMasterInstanceAlreadySet(); }
|
215
217
|
if(_masterInstanceAdmin != address(0)) { revert ErrorInstanceServiceMasterInstanceAdminAlreadySet(); }
|
216
218
|
if(_masterInstanceBundleSet != address(0)) { revert ErrorInstanceServiceMasterBundleSetAlreadySet(); }
|
217
|
-
|
219
|
+
if(_masterInstanceRiskSet != address(0)) { revert ErrorInstanceServiceMasterRiskSetAlreadySet(); }
|
218
220
|
if(instanceAddress == address(0)) { revert ErrorInstanceServiceInstanceAddressZero(); }
|
219
221
|
|
220
222
|
IInstance instance = IInstance(instanceAddress);
|
@@ -223,28 +225,34 @@ contract InstanceService is
|
|
223
225
|
address instanceAdminAddress = address(instanceAdmin);
|
224
226
|
InstanceReader instanceReader = instance.getInstanceReader();
|
225
227
|
address instanceReaderAddress = address(instanceReader);
|
226
|
-
BundleSet
|
227
|
-
address
|
228
|
+
BundleSet bundleSet = instance.getBundleSet();
|
229
|
+
address bundleSetAddress = address(bundleSet);
|
230
|
+
RiskSet riskSet = instance.getRiskSet();
|
231
|
+
address riskSetAddress = address(riskSet);
|
228
232
|
InstanceStore instanceStore = instance.getInstanceStore();
|
229
233
|
address instanceStoreAddress = address(instanceStore);
|
230
234
|
|
231
235
|
if(accessManagerAddress == address(0)) { revert ErrorInstanceServiceAccessManagerZero(); }
|
232
236
|
if(instanceAdminAddress == address(0)) { revert ErrorInstanceServiceInstanceAdminZero(); }
|
233
237
|
if(instanceReaderAddress == address(0)) { revert ErrorInstanceServiceInstanceReaderZero(); }
|
234
|
-
if(
|
238
|
+
if(bundleSetAddress == address(0)) { revert ErrorInstanceServiceBundleSetZero(); }
|
239
|
+
if(riskSetAddress == address(0)) { revert ErrorInstanceServiceRiskSetZero(); }
|
235
240
|
if(instanceStoreAddress == address(0)) { revert ErrorInstanceServiceInstanceStoreZero(); }
|
236
241
|
|
237
242
|
if(instance.authority() != instanceAdmin.authority()) { revert ErrorInstanceServiceInstanceAuthorityMismatch(); }
|
238
|
-
if(
|
243
|
+
if(bundleSet.authority() != instanceAdmin.authority()) { revert ErrorInstanceServiceBundleSetAuthorityMismatch(); }
|
244
|
+
if(riskSet.authority() != instanceAdmin.authority()) { revert ErrorInstanceServiceRiskSetAuthorityMismatch(); }
|
239
245
|
if(instanceStore.authority() != instanceAdmin.authority()) { revert ErrorInstanceServiceInstanceStoreAuthorityMismatch(); }
|
240
|
-
if(
|
246
|
+
if(bundleSet.getInstance() != instance) { revert ErrorInstanceServiceBundleSetInstanceMismatch(); }
|
247
|
+
if(riskSet.getInstance() != instance) { revert ErrorInstanceServiceRiskSetInstanceMismatch(); }
|
241
248
|
if(instanceReader.getInstance() != instance) { revert ErrorInstanceServiceInstanceReaderInstanceMismatch2(); }
|
242
249
|
|
243
250
|
_masterAccessManager = accessManagerAddress;
|
244
251
|
_masterInstanceAdmin = instanceAdminAddress;
|
245
252
|
_masterInstance = instanceAddress;
|
246
253
|
_masterInstanceReader = instanceReaderAddress;
|
247
|
-
_masterInstanceBundleSet =
|
254
|
+
_masterInstanceBundleSet = bundleSetAddress;
|
255
|
+
_masterInstanceRiskSet = riskSetAddress;
|
248
256
|
_masterInstanceStore = instanceStoreAddress;
|
249
257
|
|
250
258
|
IInstance masterInstance = IInstance(_masterInstance);
|
@@ -293,9 +301,11 @@ contract InstanceService is
|
|
293
301
|
clonedAccessManager.initialize(
|
294
302
|
address(clonedInstanceAdmin)); // grant ADMIN_ROLE to instance admin
|
295
303
|
|
304
|
+
address authorization = address(
|
305
|
+
InstanceAdmin(_masterInstanceAdmin).getInstanceAuthorization());
|
296
306
|
clonedInstanceAdmin.initialize(
|
297
307
|
clonedAccessManager,
|
298
|
-
|
308
|
+
authorization);
|
299
309
|
}
|
300
310
|
|
301
311
|
|
@@ -307,21 +317,24 @@ contract InstanceService is
|
|
307
317
|
)
|
308
318
|
internal
|
309
319
|
virtual
|
310
|
-
returns (
|
320
|
+
returns (IInstance)
|
311
321
|
{
|
312
322
|
InstanceStore clonedInstanceStore = InstanceStore(Clones.clone(address(_masterInstanceStore)));
|
313
323
|
BundleSet clonedBundleSet = BundleSet(Clones.clone(_masterInstanceBundleSet));
|
324
|
+
RiskSet clonedRiskSet = RiskSet(Clones.clone(_masterInstanceRiskSet));
|
314
325
|
InstanceReader clonedInstanceReader = InstanceReader(Clones.clone(address(_masterInstanceReader)));
|
315
326
|
|
316
327
|
// clone instance
|
317
|
-
clonedInstance = Instance(Clones.clone(_masterInstance));
|
328
|
+
Instance clonedInstance = Instance(Clones.clone(_masterInstance));
|
318
329
|
clonedInstance.initialize(
|
319
330
|
instanceAdmin,
|
320
331
|
clonedInstanceStore,
|
321
332
|
clonedBundleSet,
|
333
|
+
clonedRiskSet,
|
322
334
|
clonedInstanceReader,
|
323
335
|
getRegistry(),
|
324
336
|
instanceOwner);
|
337
|
+
return clonedInstance;
|
325
338
|
}
|
326
339
|
|
327
340
|
|
@@ -0,0 +1,119 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.20;
|
3
|
+
|
4
|
+
import {IPolicy} from "../instance/module/IPolicy.sol";
|
5
|
+
import {Key32} from "../type/Key32.sol";
|
6
|
+
import {LibNftIdSet} from "../type/NftIdSet.sol";
|
7
|
+
import {NftId} from "../type/NftId.sol";
|
8
|
+
import {RiskIdLib, RiskId} from "../type/RiskId.sol";
|
9
|
+
|
10
|
+
import {ObjectSet} from "./base/ObjectSet.sol";
|
11
|
+
|
12
|
+
contract RiskSet is
|
13
|
+
ObjectSet
|
14
|
+
{
|
15
|
+
using LibNftIdSet for LibNftIdSet.Set;
|
16
|
+
|
17
|
+
event LogRiskSetPolicyLinked(RiskId riskId, NftId policyNftId);
|
18
|
+
event LogRiskSetPolicyUnlinked(RiskId riskId, NftId policyNftId);
|
19
|
+
|
20
|
+
event LogRiskSetRiskAdded(NftId productNftId, RiskId riskId);
|
21
|
+
event LogRiskSetRiskActive(NftId poolNftId, RiskId riskId);
|
22
|
+
event LogRiskSetRiskPaused(NftId poolNftId, RiskId riskId);
|
23
|
+
event LogRiskSetRiskArchived(NftId poolNftId, RiskId riskId);
|
24
|
+
|
25
|
+
error ErrorRiskSetRiskLocked(RiskId riskId, NftId policyNftId);
|
26
|
+
error ErrorRiskSetRiskUnknown(RiskId riskId);
|
27
|
+
error ErrorRiskSetRiskNotRegistered(RiskId riskId);
|
28
|
+
|
29
|
+
mapping(RiskId riskId => LibNftIdSet.Set policies) internal _activePolicies;
|
30
|
+
|
31
|
+
/// @dev links a policy to its bundle
|
32
|
+
function linkPolicy(NftId productNftId, RiskId riskId, NftId policyNftId) external restricted() {
|
33
|
+
|
34
|
+
// ensure risk is active (in active set) and registered with this instance
|
35
|
+
if (!_isActive(productNftId, riskId.toKey32())) {
|
36
|
+
revert ErrorRiskSetRiskLocked(riskId, policyNftId);
|
37
|
+
}
|
38
|
+
|
39
|
+
_activePolicies[riskId].add(policyNftId);
|
40
|
+
emit LogRiskSetPolicyLinked(riskId, policyNftId);
|
41
|
+
}
|
42
|
+
|
43
|
+
/// @dev Unlinks a policy from its risk.
|
44
|
+
function unlinkPolicy(NftId productNftId, RiskId riskId, NftId policyNftId) external restricted() {
|
45
|
+
|
46
|
+
// ensure risk is registered with this instance
|
47
|
+
if (!_contains(productNftId, riskId.toKey32())) {
|
48
|
+
revert ErrorRiskSetRiskUnknown(riskId);
|
49
|
+
}
|
50
|
+
|
51
|
+
_activePolicies[riskId].remove(policyNftId);
|
52
|
+
emit LogRiskSetPolicyUnlinked(riskId, policyNftId);
|
53
|
+
}
|
54
|
+
|
55
|
+
/// @dev add a new risk to a product registered with this instance
|
56
|
+
// the corresponding product is fetched via instance reader
|
57
|
+
function add(RiskId riskId) external restricted() {
|
58
|
+
NftId productNftId = _instance.getInstanceReader().getRiskInfo(riskId).productNftId;
|
59
|
+
|
60
|
+
// ensure product is registered with instance
|
61
|
+
if(productNftId.eqz()) {
|
62
|
+
revert ErrorRiskSetRiskNotRegistered(riskId);
|
63
|
+
}
|
64
|
+
|
65
|
+
_add(productNftId, riskId.toKey32());
|
66
|
+
emit LogRiskSetRiskAdded(productNftId, riskId);
|
67
|
+
}
|
68
|
+
|
69
|
+
/// @dev Applications linked to active risks may be underwritten
|
70
|
+
function activate(RiskId riskId) external restricted() {
|
71
|
+
NftId productNftId = _instance.getInstanceReader().getRiskInfo(riskId).productNftId;
|
72
|
+
_activate(productNftId, riskId.toKey32());
|
73
|
+
emit LogRiskSetRiskActive(productNftId, riskId);
|
74
|
+
}
|
75
|
+
|
76
|
+
/// @dev Applications linked to paused/archived risks may not be underwritten
|
77
|
+
function pause(RiskId riskId) external restricted() {
|
78
|
+
NftId productNftId = _instance.getInstanceReader().getRiskInfo(riskId).productNftId;
|
79
|
+
_deactivate(productNftId, riskId.toKey32());
|
80
|
+
emit LogRiskSetRiskPaused(productNftId, riskId);
|
81
|
+
}
|
82
|
+
|
83
|
+
function checkRisk(NftId productNftId, RiskId riskId)
|
84
|
+
public
|
85
|
+
view
|
86
|
+
returns (bool exists, bool active)
|
87
|
+
{
|
88
|
+
Key32 riskKey32 = riskId.toKey32();
|
89
|
+
exists = _contains(productNftId, riskKey32);
|
90
|
+
|
91
|
+
if (exists) {
|
92
|
+
active = _isActive(productNftId, riskKey32);
|
93
|
+
}
|
94
|
+
}
|
95
|
+
|
96
|
+
function risks(NftId productNftId) external view returns(uint256) {
|
97
|
+
return _objects(productNftId);
|
98
|
+
}
|
99
|
+
|
100
|
+
function getRiskId(NftId productNftId, uint256 idx) external view returns(RiskId riskId) {
|
101
|
+
return RiskIdLib.toRiskId(_getObject(productNftId, idx).toKeyId());
|
102
|
+
}
|
103
|
+
|
104
|
+
function activeRisks(NftId productNftId) external view returns(uint256) {
|
105
|
+
return _activeObjs(productNftId);
|
106
|
+
}
|
107
|
+
|
108
|
+
function getActiveRiskId(NftId productNftId, uint256 idx) external view returns(RiskId riskId) {
|
109
|
+
return RiskIdLib.toRiskId(_getActiveObject(productNftId, idx).toKeyId());
|
110
|
+
}
|
111
|
+
|
112
|
+
function linkedPolicies(RiskId riskId) external view returns(uint256) {
|
113
|
+
return _activePolicies[riskId].size();
|
114
|
+
}
|
115
|
+
|
116
|
+
function getLinkedPolicyNftId(RiskId riskId, uint256 idx) external view returns(NftId policyNftId) {
|
117
|
+
return _activePolicies[riskId].getElementAt(idx);
|
118
|
+
}
|
119
|
+
}
|
@@ -4,22 +4,21 @@ pragma solidity ^0.8.20;
|
|
4
4
|
import {Cloneable} from "./Cloneable.sol";
|
5
5
|
|
6
6
|
import {IInstance} from "../IInstance.sol";
|
7
|
-
import {
|
8
|
-
import {InstanceReader} from "../InstanceReader.sol";
|
9
|
-
import {IRegistry} from "../../registry/IRegistry.sol";
|
10
|
-
import {LibNftIdSet} from "../../type/NftIdSet.sol";
|
7
|
+
import {LibKey32Set} from "../../type/Key32Set.sol";
|
11
8
|
import {NftId} from "../../type/NftId.sol";
|
9
|
+
import {Key32} from "../../type/Key32.sol";
|
12
10
|
|
13
11
|
contract ObjectSet is
|
14
12
|
Cloneable
|
15
13
|
{
|
14
|
+
using LibKey32Set for LibKey32Set.Set;
|
16
15
|
|
17
16
|
event LogObjectSetInitialized(address instance);
|
18
17
|
|
19
18
|
error ErrorObjectSetNftIdInvalid(NftId instanceNftId);
|
20
19
|
|
21
|
-
mapping(NftId compnentNftId =>
|
22
|
-
mapping(NftId compnentNftId =>
|
20
|
+
mapping(NftId compnentNftId => LibKey32Set.Set objects) internal _activeObjects;
|
21
|
+
mapping(NftId compnentNftId => LibKey32Set.Set objects) internal _allObjects;
|
23
22
|
IInstance internal _instance; // store instance address -> more flexible, instance may not be registered during ObjectSet initialization
|
24
23
|
|
25
24
|
/// @dev This initializer needs to be called from the instance itself.
|
@@ -37,43 +36,43 @@ contract ObjectSet is
|
|
37
36
|
return _instance;
|
38
37
|
}
|
39
38
|
|
40
|
-
function _add(NftId componentNftId,
|
41
|
-
|
42
|
-
|
39
|
+
function _add(NftId componentNftId, Key32 key) internal {
|
40
|
+
LibKey32Set.Set storage allSet = _allObjects[componentNftId];
|
41
|
+
LibKey32Set.Set storage activeSet = _activeObjects[componentNftId];
|
43
42
|
|
44
|
-
|
45
|
-
|
43
|
+
allSet.add(key);
|
44
|
+
activeSet.add(key);
|
46
45
|
}
|
47
46
|
|
48
|
-
function _activate(NftId componentNftId,
|
49
|
-
|
47
|
+
function _activate(NftId componentNftId, Key32 key) internal {
|
48
|
+
_activeObjects[componentNftId].add(key);
|
50
49
|
}
|
51
50
|
|
52
|
-
function _deactivate(NftId componentNftId,
|
53
|
-
|
51
|
+
function _deactivate(NftId componentNftId, Key32 key) internal {
|
52
|
+
_activeObjects[componentNftId].remove(key);
|
54
53
|
}
|
55
54
|
|
56
55
|
function _objects(NftId componentNftId) internal view returns (uint256) {
|
57
|
-
return
|
56
|
+
return _allObjects[componentNftId].size();
|
58
57
|
}
|
59
58
|
|
60
|
-
function _contains(NftId componentNftId,
|
61
|
-
return
|
59
|
+
function _contains(NftId componentNftId, Key32 key) internal view returns (bool) {
|
60
|
+
return _allObjects[componentNftId].contains(key);
|
62
61
|
}
|
63
62
|
|
64
|
-
function _getObject(NftId componentNftId, uint256 idx) internal view returns (
|
65
|
-
return
|
63
|
+
function _getObject(NftId componentNftId, uint256 idx) internal view returns (Key32) {
|
64
|
+
return _allObjects[componentNftId].getElementAt(idx);
|
66
65
|
}
|
67
66
|
|
68
67
|
function _activeObjs(NftId componentNftId) internal view returns (uint256) {
|
69
|
-
return
|
68
|
+
return _activeObjects[componentNftId].size();
|
70
69
|
}
|
71
70
|
|
72
|
-
function _isActive(NftId componentNftId,
|
73
|
-
return
|
71
|
+
function _isActive(NftId componentNftId, Key32 key) internal view returns (bool) {
|
72
|
+
return _activeObjects[componentNftId].contains(key);
|
74
73
|
}
|
75
74
|
|
76
|
-
function _getActiveObject(NftId componentNftId, uint256 idx) internal view returns (
|
77
|
-
return
|
75
|
+
function _getActiveObject(NftId componentNftId, uint256 idx) internal view returns (Key32) {
|
76
|
+
return _activeObjects[componentNftId].getElementAt(idx);
|
78
77
|
}
|
79
78
|
}
|
@@ -16,12 +16,12 @@ interface IComponents {
|
|
16
16
|
string name; // component name (needs to be unique per instance)
|
17
17
|
IERC20Metadata token;
|
18
18
|
TokenHandler tokenHandler;
|
19
|
-
address wallet;
|
20
19
|
bytes data; // will hold component type specific additional info (eg encoded pool info)
|
21
20
|
}
|
22
21
|
|
23
22
|
struct ProductInfo {
|
24
23
|
bool isProcessingFundedClaims; // custom logic to react to pool events for funded claims
|
24
|
+
bool isInterceptingPolicyTransfers; // custom logic for policy nft transfers
|
25
25
|
bool hasDistribution; // flag to indicate if distribution is enabled
|
26
26
|
uint8 expectedNumberOfOracles; // expected number of oracles
|
27
27
|
uint8 numberOfOracles; // actual number of oracles
|
@@ -40,7 +40,6 @@ interface IComponents {
|
|
40
40
|
|
41
41
|
struct PoolInfo {
|
42
42
|
Amount maxBalanceAmount; // max balance amount allowed for pool
|
43
|
-
RoleId bundleOwnerRole; // the required role for bundle owners
|
44
43
|
bool isInterceptingBundleTransfers; // custom logic for bundle nft transfers
|
45
44
|
bool isProcessingConfirmedClaims; // custom logic for claims confirmation
|
46
45
|
bool isExternallyManaged; // funding bundles is restricted to book keeping, actual funds may be provided as needed to support payouts
|
@@ -43,6 +43,7 @@ interface IPolicy {
|
|
43
43
|
|
44
44
|
/// @dev policy data for the full policy lifecycle
|
45
45
|
struct PolicyInfo {
|
46
|
+
// application data, no changes after applying for a policy
|
46
47
|
NftId productNftId;
|
47
48
|
NftId bundleNftId;
|
48
49
|
ReferralId referralId;
|
@@ -50,8 +51,8 @@ interface IPolicy {
|
|
50
51
|
Amount sumInsuredAmount;
|
51
52
|
Amount premiumAmount; // expected premium at application time
|
52
53
|
Seconds lifetime;
|
53
|
-
// policy application data, no changes after applying for a policy
|
54
54
|
bytes applicationData;
|
55
|
+
// policy data that may change during the lifecycle
|
55
56
|
bytes processData;
|
56
57
|
uint16 claimsCount;
|
57
58
|
uint16 openClaimsCount;
|