@etherisc/gif-next 0.0.2-f18fb8b-243 → 0.0.2-f1f3b2c-994
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 +19 -2
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +81 -63
- 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/IAccessAdmin.sol/IAccessAdmin.json +48 -30
- 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/IServiceAuthorization.sol/IServiceAuthorization.json +21 -2
- 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 +72 -9
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +106 -248
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +16 -16
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +64 -222
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +228 -217
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +93 -101
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +64 -37
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +120 -31
- package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.json +22 -0
- package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +1512 -0
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +410 -0
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +1999 -0
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +414 -0
- package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.json +376 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +1432 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1192 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1566 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2001 -0
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +4 -0
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +703 -0
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +6 -6
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +5 -5
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +17 -106
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +146 -112
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +31 -31
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +437 -129
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +44 -151
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +61 -81
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +285 -228
- 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 +45 -4
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +4 -0
- package/artifacts/contracts/instance/base/{ObjectManager.sol/ObjectManager.json → ObjectSet.sol/ObjectSet.json} +6 -6
- 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/mock/Dip.sol/Dip.json +2 -2
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +74 -229
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +18 -18
- 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 +45 -31
- 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 +42 -213
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +37 -144
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +60 -80
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +94 -274
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +16 -16
- package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +458 -161
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +154 -86
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +229 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +87 -88
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +360 -171
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +84 -270
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +492 -333
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +98 -82
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +36 -162
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +57 -89
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +62 -242
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +16 -16
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +263 -181
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +104 -100
- 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 +147 -6
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +295 -119
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +43 -43
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +62 -57
- 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 +406 -321
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +104 -100
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +118 -265
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +80 -120
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/product/Product.sol/Product.json +62 -242
- package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
- package/artifacts/contracts/product/RiskService.sol/RiskService.json +588 -0
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +682 -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 +274 -22
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +0 -183
- 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 +493 -80
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +263 -145
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +23 -313
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +52 -72
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +46 -5
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1061 -0
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +70 -12
- 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 +15 -205
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +247 -161
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +105 -95
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +5 -112
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +92 -0
- package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponent.sol/IComponent.json +15 -20
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +153 -0
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +34 -31
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +36 -0
- package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.json +36 -0
- 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/IPolicyHolder.sol/IPolicyHolder.json +15 -47
- 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 +4 -0
- package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +53 -0
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +34 -216
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +41 -0
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +41 -0
- package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
- package/artifacts/contracts/shared/{NftIdSetManager.sol/NftIdSetManager.json → NftIdSet.sol/NftIdSet.json} +4 -4
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +6 -57
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +19 -141
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +8 -97
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -15
- package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
- package/artifacts/contracts/shared/Service.sol/Service.json +5 -112
- 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 +42 -21
- 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 +73 -93
- package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
- package/artifacts/contracts/staking/Staking.sol/Staking.json +100 -256
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +45 -4
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +77 -88
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +6 -11
- package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingService.sol/StakingService.json +31 -138
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +56 -76
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +176 -130
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +59 -23
- 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/Amount.sol/AmountLib.json +61 -8
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +2 -2
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +28 -4
- 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/Fee.sol/FeeLib.json +7 -2
- 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/NftId.sol/NftIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/NftId.sol/NftIdLib.json +2 -2
- 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 +19 -19
- 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 +60 -4
- 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/Seconds.sol/SecondsLib.json +50 -2
- 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 +15 -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/Timestamp.sol/TimestampLib.json +23 -4
- package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +1 -1
- package/artifacts/contracts/type/UFixed.sol/MathLib.json +9 -3
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +52 -2
- package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
- package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -2
- package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
- package/artifacts/contracts/type/Version.sol/VersionPartLib.json +21 -2
- package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
- package/artifacts/contracts/{shared → upgradeability}/IVersionable.sol/IVersionable.json +1 -1
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +586 -0
- package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
- package/artifacts/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +3 -3
- package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
- package/artifacts/contracts/{shared → upgradeability}/Versionable.sol/Versionable.json +1 -1
- package/contracts/authorization/AccessAdmin.sol +31 -24
- package/contracts/authorization/Authorization.sol +5 -2
- package/contracts/authorization/IAccessAdmin.sol +3 -2
- package/contracts/authorization/IServiceAuthorization.sol +4 -2
- package/contracts/authorization/ServiceAuthorization.sol +27 -11
- package/contracts/distribution/BasicDistribution.sol +4 -15
- package/contracts/distribution/BasicDistributionAuthorization.sol +5 -1
- package/contracts/distribution/Distribution.sol +23 -11
- package/contracts/distribution/DistributionService.sol +76 -42
- package/contracts/distribution/DistributionServiceManager.sol +8 -11
- package/contracts/distribution/IDistributionComponent.sol +8 -4
- package/contracts/distribution/IDistributionService.sol +18 -2
- package/contracts/examples/fire/DamageLevel.sol +59 -0
- package/contracts/examples/fire/FirePool.sol +75 -0
- package/contracts/examples/fire/FirePoolAuthorization.sol +34 -0
- package/contracts/examples/fire/FireProduct.sol +411 -0
- package/contracts/examples/fire/FireProductAuthorization.sol +45 -0
- package/contracts/examples/fire/FireUSD.sol +26 -0
- package/contracts/examples/unpermissioned/SimpleDistribution.sol +50 -0
- package/contracts/examples/unpermissioned/SimpleOracle.sol +137 -0
- package/contracts/examples/unpermissioned/SimplePool.sol +76 -0
- package/contracts/examples/unpermissioned/SimpleProduct.sol +351 -0
- package/contracts/instance/{BundleManager.sol → BundleSet.sol} +23 -23
- package/contracts/instance/IInstance.sol +11 -34
- package/contracts/instance/IInstanceService.sol +5 -5
- package/contracts/instance/Instance.sol +13 -38
- package/contracts/instance/InstanceAdmin.sol +31 -9
- package/contracts/instance/InstanceAuthorizationV3.sol +16 -14
- package/contracts/instance/InstanceReader.sol +115 -25
- package/contracts/instance/InstanceService.sol +71 -49
- package/contracts/instance/InstanceServiceManager.sol +8 -13
- package/contracts/instance/InstanceStore.sol +12 -1
- package/contracts/instance/base/ObjectLifecycle.sol +9 -4
- package/contracts/instance/base/{ObjectManager.sol → ObjectSet.sol} +5 -5
- package/contracts/instance/module/IBundle.sol +1 -1
- package/contracts/instance/module/IComponents.sol +4 -8
- package/contracts/instance/module/IDistribution.sol +0 -1
- package/contracts/instance/module/IPolicy.sol +24 -24
- package/contracts/mock/Dip.sol +1 -1
- package/contracts/oracle/IOracleComponent.sol +2 -1
- package/contracts/oracle/Oracle.sol +17 -7
- package/contracts/oracle/OracleService.sol +11 -8
- package/contracts/oracle/OracleServiceManager.sol +8 -11
- package/contracts/pool/BasicPool.sol +7 -5
- package/contracts/pool/BasicPoolAuthorization.sol +11 -2
- package/contracts/pool/BundleService.sol +221 -56
- package/contracts/pool/BundleServiceManager.sol +8 -11
- package/contracts/pool/IBundleService.sol +42 -5
- package/contracts/pool/IPoolComponent.sol +24 -8
- package/contracts/pool/IPoolService.sol +57 -36
- package/contracts/pool/Pool.sol +72 -30
- package/contracts/pool/PoolService.sol +240 -129
- package/contracts/pool/PoolServiceManager.sol +6 -9
- package/contracts/product/ApplicationService.sol +62 -65
- package/contracts/product/ApplicationServiceManager.sol +6 -6
- package/contracts/product/BasicProduct.sol +3 -32
- package/contracts/product/BasicProductAuthorization.sol +3 -0
- package/contracts/product/ClaimService.sol +254 -115
- package/contracts/product/ClaimServiceManager.sol +6 -6
- package/contracts/product/IApplicationService.sol +1 -0
- package/contracts/product/IClaimService.sol +31 -7
- package/contracts/product/IPolicyService.sol +34 -32
- package/contracts/product/IPricingService.sol +7 -7
- package/contracts/product/IProductComponent.sol +18 -4
- package/contracts/product/{IProductService.sol → IRiskService.sol} +1 -1
- package/contracts/product/PolicyService.sol +404 -193
- package/contracts/product/PolicyServiceManager.sol +6 -9
- package/contracts/product/PricingService.sol +46 -46
- package/contracts/product/PricingServiceManager.sol +5 -8
- package/contracts/product/Product.sol +90 -50
- package/contracts/product/{ProductService.sol → RiskService.sol} +13 -41
- package/contracts/product/RiskServiceManager.sol +39 -0
- package/contracts/registry/ChainNft.sol +65 -32
- package/contracts/registry/IRegistry.sol +65 -19
- package/contracts/registry/IRegistryService.sol +0 -9
- package/contracts/registry/Registry.sol +340 -211
- package/contracts/registry/RegistryAdmin.sol +155 -72
- package/contracts/registry/RegistryService.sol +59 -66
- package/contracts/registry/RegistryServiceManager.sol +4 -4
- package/contracts/registry/ReleaseLifecycle.sol +6 -3
- package/contracts/registry/ReleaseRegistry.sol +496 -0
- package/contracts/registry/ServiceAuthorizationV3.sol +13 -15
- package/contracts/registry/TokenRegistry.sol +2 -2
- package/contracts/shared/Component.sol +38 -43
- package/contracts/shared/ComponentService.sol +88 -28
- package/contracts/shared/ComponentServiceManager.sol +10 -7
- package/contracts/shared/ComponentVerifyingService.sol +2 -3
- package/contracts/shared/ContractLib.sol +38 -0
- package/contracts/shared/IComponent.sol +7 -4
- package/contracts/shared/IComponentService.sol +15 -9
- package/contracts/shared/IInstanceLinkedComponent.sol +9 -10
- package/contracts/shared/ILifecycle.sol +3 -1
- package/contracts/shared/IPolicyHolder.sol +12 -22
- package/contracts/shared/IService.sol +1 -1
- package/contracts/shared/{ERC165.sol → InitializableERC165.sol} +3 -3
- package/contracts/shared/InstanceLinkedComponent.sol +26 -6
- package/contracts/shared/KeyValueStore.sol +1 -1
- package/contracts/shared/Lifecycle.sol +13 -2
- package/contracts/shared/{NftIdSetManager.sol → NftIdSet.sol} +1 -1
- package/contracts/shared/NftOwnable.sol +7 -7
- package/contracts/shared/PolicyHolder.sol +17 -57
- package/contracts/shared/Registerable.sol +4 -4
- package/contracts/shared/RegistryLinked.sol +3 -2
- package/contracts/shared/Service.sol +19 -15
- package/contracts/shared/TokenHandler.sol +100 -19
- package/contracts/shared/TokenHandlerDeployerLib.sol +12 -0
- package/contracts/staking/IStaking.sol +3 -3
- package/contracts/staking/IStakingService.sol +12 -5
- package/contracts/staking/StakeManagerLib.sol +18 -25
- package/contracts/staking/Staking.sol +27 -42
- package/contracts/staking/StakingManager.sol +10 -12
- package/contracts/staking/StakingReader.sol +23 -20
- package/contracts/staking/StakingService.sol +10 -14
- package/contracts/staking/StakingServiceManager.sol +4 -4
- package/contracts/staking/StakingStore.sol +12 -22
- package/contracts/staking/TargetManagerLib.sol +7 -3
- package/contracts/type/Amount.sol +27 -5
- package/contracts/type/Blocknumber.sol +7 -1
- package/contracts/type/ClaimId.sol +6 -1
- package/contracts/type/NftId.sol +1 -0
- package/contracts/type/ObjectType.sol +19 -18
- package/contracts/type/PayoutId.sol +10 -10
- package/contracts/type/Referral.sol +1 -0
- package/contracts/type/RiskId.sol +15 -1
- package/contracts/type/Seconds.sol +21 -1
- package/contracts/type/StateId.sol +15 -1
- package/contracts/type/Timestamp.sol +11 -1
- package/contracts/type/UFixed.sol +33 -10
- package/contracts/type/Version.sol +3 -1
- package/contracts/{shared → upgradeability}/ProxyManager.sol +70 -38
- package/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol +1 -3
- package/contracts/{shared → upgradeability}/Versionable.sol +2 -2
- package/package.json +2 -1
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +0 -4
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +0 -703
- package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +0 -4
- 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
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +0 -4
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +0 -1159
- package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
- package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -73
- package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
- package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +0 -4
- package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +0 -39
- package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.dbg.json +0 -4
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +0 -617
- package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
- package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
- package/contracts/product/ProductServiceManager.sol +0 -42
- package/contracts/registry/ReleaseManager.sol +0 -487
- package/contracts/shared/InitializableCustom.sol +0 -177
- /package/contracts/{shared → upgradeability}/IVersionable.sol +0 -0
| @@ -6,7 +6,7 @@ import {ShortString, ShortStrings} from "@openzeppelin/contracts/utils/ShortStri | |
| 6 6 |  | 
| 7 7 | 
             
            import {AccessManagerCloneable} from "../authorization/AccessManagerCloneable.sol";
         | 
| 8 8 | 
             
            import {Amount} from "../type/Amount.sol";
         | 
| 9 | 
            -
            import { | 
| 9 | 
            +
            import {BundleSet} from "./BundleSet.sol";
         | 
| 10 10 | 
             
            import {ChainNft} from "../registry/ChainNft.sol";
         | 
| 11 11 | 
             
            import {NftId} from "../type/NftId.sol";
         | 
| 12 12 | 
             
            import {RoleId} from "../type/RoleId.sol";
         | 
| @@ -54,13 +54,13 @@ contract InstanceService is | |
| 54 54 | 
             
                address internal _masterInstanceAdmin;
         | 
| 55 55 | 
             
                address internal _masterInstance;
         | 
| 56 56 | 
             
                address internal _masterInstanceReader;
         | 
| 57 | 
            -
                address internal  | 
| 57 | 
            +
                address internal _masterInstanceBundleSet;
         | 
| 58 58 | 
             
                address internal _masterInstanceStore;
         | 
| 59 59 |  | 
| 60 60 |  | 
| 61 61 | 
             
                modifier onlyInstance() {        
         | 
| 62 62 | 
             
                    address instanceAddress = msg.sender;
         | 
| 63 | 
            -
                    NftId instanceNftId = getRegistry(). | 
| 63 | 
            +
                    NftId instanceNftId = getRegistry().getNftIdForAddress(msg.sender);
         | 
| 64 64 | 
             
                    if (instanceNftId.eqz()) {
         | 
| 65 65 | 
             
                        revert ErrorInstanceServiceNotRegistered(instanceAddress);
         | 
| 66 66 | 
             
                    }
         | 
| @@ -94,7 +94,7 @@ contract InstanceService is | |
| 94 94 | 
             
                    _;
         | 
| 95 95 | 
             
                }
         | 
| 96 96 |  | 
| 97 | 
            -
                function  | 
| 97 | 
            +
                function createInstance()
         | 
| 98 98 | 
             
                    external 
         | 
| 99 99 | 
             
                    returns (
         | 
| 100 100 | 
             
                        Instance clonedInstance,
         | 
| @@ -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 | 
            -
                    BundleManager clonedBundleManager = BundleManager(Clones.clone(_masterInstanceBundleManager));
         | 
| 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 | 
            -
                        clonedBundleManager,
         | 
| 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,
         | 
| @@ -155,7 +132,7 @@ contract InstanceService is | |
| 155 132 | 
             
                    virtual
         | 
| 156 133 | 
             
                    onlyInstance()
         | 
| 157 134 | 
             
                {
         | 
| 158 | 
            -
                    NftId instanceNftId = getRegistry(). | 
| 135 | 
            +
                    NftId instanceNftId = getRegistry().getNftIdForAddress(msg.sender);
         | 
| 159 136 | 
             
                    _stakingService.setInstanceLockingPeriod(
         | 
| 160 137 | 
             
                        instanceNftId,
         | 
| 161 138 | 
             
                        stakeLockingPeriod);
         | 
| @@ -167,7 +144,7 @@ contract InstanceService is | |
| 167 144 | 
             
                    virtual
         | 
| 168 145 | 
             
                    onlyInstance()
         | 
| 169 146 | 
             
                {
         | 
| 170 | 
            -
                    NftId instanceNftId = getRegistry(). | 
| 147 | 
            +
                    NftId instanceNftId = getRegistry().getNftIdForAddress(msg.sender);
         | 
| 171 148 | 
             
                    _stakingService.setInstanceRewardRate(
         | 
| 172 149 | 
             
                        instanceNftId,
         | 
| 173 150 | 
             
                        rewardRate);
         | 
| @@ -179,7 +156,7 @@ contract InstanceService is | |
| 179 156 | 
             
                    virtual
         | 
| 180 157 | 
             
                    onlyInstance()
         | 
| 181 158 | 
             
                {
         | 
| 182 | 
            -
                    NftId instanceNftId = getRegistry(). | 
| 159 | 
            +
                    NftId instanceNftId = getRegistry().getNftIdForAddress(msg.sender);
         | 
| 183 160 | 
             
                    _stakingService.refillInstanceRewardReserves(
         | 
| 184 161 | 
             
                        instanceNftId,
         | 
| 185 162 | 
             
                        rewardProvider,
         | 
| @@ -193,7 +170,7 @@ contract InstanceService is | |
| 193 170 | 
             
                    onlyInstance()
         | 
| 194 171 | 
             
                    returns (Amount newBalance)
         | 
| 195 172 | 
             
                {
         | 
| 196 | 
            -
                    NftId instanceNftId = getRegistry(). | 
| 173 | 
            +
                    NftId instanceNftId = getRegistry().getNftIdForAddress(msg.sender);
         | 
| 197 174 | 
             
                    _stakingService.withdrawInstanceRewardReserves(
         | 
| 198 175 | 
             
                        instanceNftId,
         | 
| 199 176 | 
             
                        dipAmount);
         | 
| @@ -216,8 +193,7 @@ contract InstanceService is | |
| 216 193 | 
             
                    NftId instanceNftId = registry.getObjectInfo(componentAddress).parentNftId;
         | 
| 217 194 |  | 
| 218 195 | 
             
                    IInstance instance = IInstance(
         | 
| 219 | 
            -
                        registry. | 
| 220 | 
            -
                            instanceNftId).objectAddress);
         | 
| 196 | 
            +
                        registry.getObjectAddress(instanceNftId));
         | 
| 221 197 |  | 
| 222 198 | 
             
                    // no revert in case already locked
         | 
| 223 199 | 
             
                    // TODO refactor/implement
         | 
| @@ -238,7 +214,7 @@ contract InstanceService is | |
| 238 214 | 
             
                {
         | 
| 239 215 | 
             
                    if(_masterInstance != address(0)) { revert ErrorInstanceServiceMasterInstanceAlreadySet(); }
         | 
| 240 216 | 
             
                    if(_masterInstanceAdmin != address(0)) { revert ErrorInstanceServiceMasterInstanceAdminAlreadySet(); }
         | 
| 241 | 
            -
                    if( | 
| 217 | 
            +
                    if(_masterInstanceBundleSet != address(0)) { revert ErrorInstanceServiceMasterBundleSetAlreadySet(); }
         | 
| 242 218 |  | 
| 243 219 | 
             
                    if(instanceAddress == address(0)) { revert ErrorInstanceServiceInstanceAddressZero(); }
         | 
| 244 220 |  | 
| @@ -248,7 +224,7 @@ contract InstanceService is | |
| 248 224 | 
             
                    address instanceAdminAddress = address(instanceAdmin);
         | 
| 249 225 | 
             
                    InstanceReader instanceReader = instance.getInstanceReader();
         | 
| 250 226 | 
             
                    address instanceReaderAddress = address(instanceReader);
         | 
| 251 | 
            -
                     | 
| 227 | 
            +
                    BundleSet bundleManager = instance.getBundleSet();
         | 
| 252 228 | 
             
                    address bundleManagerAddress = address(bundleManager);
         | 
| 253 229 | 
             
                    InstanceStore instanceStore = instance.getInstanceStore();
         | 
| 254 230 | 
             
                    address instanceStoreAddress = address(instanceStore);
         | 
| @@ -256,11 +232,11 @@ contract InstanceService is | |
| 256 232 | 
             
                    if(accessManagerAddress == address(0)) { revert ErrorInstanceServiceAccessManagerZero(); }
         | 
| 257 233 | 
             
                    if(instanceAdminAddress == address(0)) { revert ErrorInstanceServiceInstanceAdminZero(); }
         | 
| 258 234 | 
             
                    if(instanceReaderAddress == address(0)) { revert ErrorInstanceServiceInstanceReaderZero(); }
         | 
| 259 | 
            -
                    if(bundleManagerAddress == address(0)) { revert  | 
| 235 | 
            +
                    if(bundleManagerAddress == address(0)) { revert ErrorInstanceServiceBundleSetZero(); }
         | 
| 260 236 | 
             
                    if(instanceStoreAddress == address(0)) { revert ErrorInstanceServiceInstanceStoreZero(); }
         | 
| 261 237 |  | 
| 262 238 | 
             
                    if(instance.authority() != instanceAdmin.authority()) { revert ErrorInstanceServiceInstanceAuthorityMismatch(); }
         | 
| 263 | 
            -
                    if(bundleManager.authority() != instanceAdmin.authority()) { revert  | 
| 239 | 
            +
                    if(bundleManager.authority() != instanceAdmin.authority()) { revert ErrorInstanceServiceBundleSetAuthorityMismatch(); }
         | 
| 264 240 | 
             
                    if(instanceStore.authority() != instanceAdmin.authority()) { revert ErrorInstanceServiceInstanceStoreAuthorityMismatch(); }
         | 
| 265 241 | 
             
                    if(bundleManager.getInstance() != instance) { revert ErrorInstanceServiceBundleMangerInstanceMismatch(); }
         | 
| 266 242 | 
             
                    if(instanceReader.getInstance() != instance) { revert ErrorInstanceServiceInstanceReaderInstanceMismatch2(); }
         | 
| @@ -269,7 +245,7 @@ contract InstanceService is | |
| 269 245 | 
             
                    _masterInstanceAdmin = instanceAdminAddress;
         | 
| 270 246 | 
             
                    _masterInstance = instanceAddress;
         | 
| 271 247 | 
             
                    _masterInstanceReader = instanceReaderAddress;
         | 
| 272 | 
            -
                     | 
| 248 | 
            +
                    _masterInstanceBundleSet = bundleManagerAddress;
         | 
| 273 249 | 
             
                    _masterInstanceStore = instanceStoreAddress;
         | 
| 274 250 |  | 
| 275 251 | 
             
                    IInstance masterInstance = IInstance(_masterInstance);
         | 
| @@ -337,7 +313,7 @@ contract InstanceService is | |
| 337 313 |  | 
| 338 314 | 
             
                    InstanceAdmin instanceAdmin = instance.getInstanceAdmin();
         | 
| 339 315 | 
             
                    instanceAdmin.initializeComponentAuthorization(
         | 
| 340 | 
            -
                         | 
| 316 | 
            +
                        component,
         | 
| 341 317 | 
             
                        component.getAuthorization());
         | 
| 342 318 | 
             
                }
         | 
| 343 319 |  | 
| @@ -362,6 +338,53 @@ contract InstanceService is | |
| 362 338 | 
             
                    );
         | 
| 363 339 | 
             
                }
         | 
| 364 340 |  | 
| 341 | 
            +
                /// @dev create new cloned instance admin
         | 
| 342 | 
            +
                /// function used to setup a new instance
         | 
| 343 | 
            +
                function _createInstanceAdmin()
         | 
| 344 | 
            +
                    internal
         | 
| 345 | 
            +
                    virtual
         | 
| 346 | 
            +
                    returns (InstanceAdmin clonedInstanceAdmin)
         | 
| 347 | 
            +
                {
         | 
| 348 | 
            +
                    // start with setting up a new OZ access manager
         | 
| 349 | 
            +
                    AccessManagerCloneable clonedAccessManager = AccessManagerCloneable(
         | 
| 350 | 
            +
                        Clones.clone(_masterAccessManager));
         | 
| 351 | 
            +
                    
         | 
| 352 | 
            +
                    // set up the instance admin
         | 
| 353 | 
            +
                    clonedInstanceAdmin = InstanceAdmin(Clones.clone(_masterInstanceAdmin));
         | 
| 354 | 
            +
                    clonedAccessManager.initialize(
         | 
| 355 | 
            +
                        address(clonedInstanceAdmin)); // grant ADMIN_ROLE to instance admin
         | 
| 356 | 
            +
             | 
| 357 | 
            +
                    clonedInstanceAdmin.initialize(
         | 
| 358 | 
            +
                        clonedAccessManager,
         | 
| 359 | 
            +
                        InstanceAdmin(_masterInstanceAdmin).getInstanceAuthorization());
         | 
| 360 | 
            +
                }
         | 
| 361 | 
            +
             | 
| 362 | 
            +
             | 
| 363 | 
            +
                /// @dev create new cloned instance
         | 
| 364 | 
            +
                /// function used to setup a new instance
         | 
| 365 | 
            +
                function _createInstance(
         | 
| 366 | 
            +
                    InstanceAdmin instanceAdmin,
         | 
| 367 | 
            +
                    address instanceOwner
         | 
| 368 | 
            +
                )
         | 
| 369 | 
            +
                    internal
         | 
| 370 | 
            +
                    virtual
         | 
| 371 | 
            +
                    returns (Instance clonedInstance)
         | 
| 372 | 
            +
                {
         | 
| 373 | 
            +
                    InstanceStore clonedInstanceStore = InstanceStore(Clones.clone(address(_masterInstanceStore)));
         | 
| 374 | 
            +
                    BundleSet clonedBundleSet = BundleSet(Clones.clone(_masterInstanceBundleSet));
         | 
| 375 | 
            +
                    InstanceReader clonedInstanceReader = InstanceReader(Clones.clone(address(_masterInstanceReader)));
         | 
| 376 | 
            +
             | 
| 377 | 
            +
                    // clone instance
         | 
| 378 | 
            +
                    clonedInstance = Instance(Clones.clone(_masterInstance));
         | 
| 379 | 
            +
                    clonedInstance.initialize(
         | 
| 380 | 
            +
                        instanceAdmin,
         | 
| 381 | 
            +
                        clonedInstanceStore,
         | 
| 382 | 
            +
                        clonedBundleSet,
         | 
| 383 | 
            +
                        clonedInstanceReader,
         | 
| 384 | 
            +
                        getRegistry(),
         | 
| 385 | 
            +
                        instanceOwner);
         | 
| 386 | 
            +
                }
         | 
| 387 | 
            +
             | 
| 365 388 |  | 
| 366 389 | 
             
                /// all gif targets MUST be children of instanceNftId
         | 
| 367 390 | 
             
                function _createGifTarget(
         | 
| @@ -398,21 +421,20 @@ contract InstanceService is | |
| 398 421 | 
             
                    bytes memory data
         | 
| 399 422 | 
             
                )
         | 
| 400 423 | 
             
                    internal
         | 
| 401 | 
            -
                    initializer
         | 
| 402 424 | 
             
                    virtual override
         | 
| 425 | 
            +
                    initializer()
         | 
| 403 426 | 
             
                {
         | 
| 404 427 | 
             
                    (
         | 
| 405 | 
            -
                        address registryAddress | 
| 406 | 
            -
                        //address managerAddress
         | 
| 428 | 
            +
                        address registryAddress,
         | 
| 407 429 | 
             
                        address authority
         | 
| 408 | 
            -
                    ) = abi.decode(data, (address, address | 
| 430 | 
            +
                    ) = abi.decode(data, (address, address));
         | 
| 409 431 |  | 
| 410 | 
            -
                     | 
| 432 | 
            +
                    _initializeService(registryAddress, authority, owner);
         | 
| 411 433 |  | 
| 412 434 | 
             
                    _registryService = IRegistryService(_getServiceAddress(REGISTRY()));
         | 
| 413 435 | 
             
                    _stakingService = IStakingService(_getServiceAddress(STAKING()));
         | 
| 414 436 |  | 
| 415 | 
            -
                     | 
| 437 | 
            +
                    _registerInterface(type(IInstanceService).interfaceId);
         | 
| 416 438 | 
             
                }
         | 
| 417 439 |  | 
| 418 440 |  | 
| @@ -1,13 +1,9 @@ | |
| 1 1 | 
             
            // SPDX-License-Identifier: Apache-2.0
         | 
| 2 2 | 
             
            pragma solidity ^0.8.20;
         | 
| 3 3 |  | 
| 4 | 
            -
            import { | 
| 5 | 
            -
            import { | 
| 6 | 
            -
            import {ProxyManager} from "../shared/ProxyManager.sol";
         | 
| 4 | 
            +
            import {IVersionable} from "../upgradeability/IVersionable.sol";
         | 
| 5 | 
            +
            import {ProxyManager} from "../upgradeability/ProxyManager.sol";
         | 
| 7 6 | 
             
            import {InstanceService} from "./InstanceService.sol";
         | 
| 8 | 
            -
            import {Registry} from "../registry/Registry.sol";
         | 
| 9 | 
            -
            import {RegistryService} from "../registry/RegistryService.sol";
         | 
| 10 | 
            -
            import {REGISTRY} from "../type/ObjectType.sol";
         | 
| 11 7 |  | 
| 12 8 | 
             
            contract InstanceServiceManager is ProxyManager {
         | 
| 13 9 |  | 
| @@ -16,16 +12,15 @@ contract InstanceServiceManager is ProxyManager { | |
| 16 12 | 
             
                /// @dev initializes proxy manager with instance service implementation
         | 
| 17 13 | 
             
                constructor(
         | 
| 18 14 | 
             
                    address authority, 
         | 
| 19 | 
            -
                    address  | 
| 15 | 
            +
                    address registry,
         | 
| 20 16 | 
             
                    bytes32 salt
         | 
| 21 17 | 
             
                ) 
         | 
| 22 | 
            -
                    ProxyManager(registryAddress)
         | 
| 23 18 | 
             
                {
         | 
| 24 | 
            -
                    InstanceService  | 
| 25 | 
            -
                     | 
| 26 | 
            -
                     | 
| 27 | 
            -
             | 
| 28 | 
            -
                        address( | 
| 19 | 
            +
                    InstanceService svc = new InstanceService{salt: salt}();
         | 
| 20 | 
            +
                    bytes memory data = abi.encode(registry, authority);
         | 
| 21 | 
            +
                    IVersionable versionable = initialize(
         | 
| 22 | 
            +
                        registry,
         | 
| 23 | 
            +
                        address(svc), 
         | 
| 29 24 | 
             
                        data,
         | 
| 30 25 | 
             
                        salt);
         | 
| 31 26 |  | 
| @@ -7,7 +7,7 @@ import {Amount} from "../type/Amount.sol"; | |
| 7 7 | 
             
            import {Key32} from "../type/Key32.sol";
         | 
| 8 8 | 
             
            import {NftId} from "../type/NftId.sol";
         | 
| 9 9 | 
             
            import {ClaimId} from "../type/ClaimId.sol";
         | 
| 10 | 
            -
            import {ObjectType, BUNDLE, POLICY, POOL, PRODUCT, COMPONENT, DISTRIBUTOR | 
| 10 | 
            +
            import {ObjectType, BUNDLE, POLICY, POOL, PREMIUM, PRODUCT, COMPONENT, DISTRIBUTOR} from "../type/ObjectType.sol";
         | 
| 11 11 | 
             
            import {RequestId} from "../type/RequestId.sol";
         | 
| 12 12 | 
             
            import {RiskId} from "../type/RiskId.sol";
         | 
| 13 13 | 
             
            import {StateId} from "../type/StateId.sol";
         | 
| @@ -116,6 +116,7 @@ contract InstanceStore is | |
| 116 116 |  | 
| 117 117 | 
             
                //--- Distributor -------------------------------------------------------//
         | 
| 118 118 | 
             
                function createDistributor(NftId distributorNftId, IDistribution.DistributorInfo memory info) external restricted() {
         | 
| 119 | 
            +
                    _registerBalanceTarget(distributorNftId);
         | 
| 119 120 | 
             
                    _create(_toNftKey32(distributorNftId, DISTRIBUTOR()), abi.encode(info));
         | 
| 120 121 | 
             
                }
         | 
| 121 122 |  | 
| @@ -194,6 +195,16 @@ contract InstanceStore is | |
| 194 195 | 
             
                    _updateState(_toNftKey32(policyNftId, POLICY()), newState);
         | 
| 195 196 | 
             
                }
         | 
| 196 197 |  | 
| 198 | 
            +
                
         | 
| 199 | 
            +
                //--- Premium (Policy) ----------------------------------------------//
         | 
| 200 | 
            +
                function createPremium(NftId policyNftId, IPolicy.PremiumInfo memory premium) external restricted() {
         | 
| 201 | 
            +
                    _create(_toNftKey32(policyNftId, PREMIUM()), abi.encode(premium));
         | 
| 202 | 
            +
                }
         | 
| 203 | 
            +
             | 
| 204 | 
            +
                function updatePremiumState(NftId policyNftId, StateId newState) external restricted() {
         | 
| 205 | 
            +
                    _updateState(_toNftKey32(policyNftId, PREMIUM()), newState);
         | 
| 206 | 
            +
                }
         | 
| 207 | 
            +
             | 
| 197 208 | 
             
                //--- Claim -------------------------------------------------------------//
         | 
| 198 209 | 
             
                function createClaim(NftId policyNftId, ClaimId claimId, IPolicy.ClaimInfo memory claim) external restricted() {
         | 
| 199 210 | 
             
                    _create(_toClaimKey32(policyNftId, claimId), abi.encode(claim));
         | 
| @@ -3,7 +3,7 @@ pragma solidity ^0.8.20; | |
| 3 3 |  | 
| 4 4 | 
             
            import {Initializable} from "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol"; 
         | 
| 5 5 |  | 
| 6 | 
            -
            import {COMPONENT, BUNDLE, POLICY, REQUEST, RISK, CLAIM, PAYOUT, POOL, PRODUCT, DISTRIBUTION, DISTRIBUTOR, DISTRIBUTOR_TYPE, REFERRAL} from "../../type/ObjectType.sol";
         | 
| 6 | 
            +
            import {COMPONENT, BUNDLE, POLICY, REQUEST, RISK, CLAIM, PAYOUT, POOL, PREMIUM, PRODUCT, DISTRIBUTION, DISTRIBUTOR, DISTRIBUTOR_TYPE, REFERRAL} from "../../type/ObjectType.sol";
         | 
| 7 7 | 
             
            import {ACTIVE, PAUSED, ARCHIVED, CLOSED, APPLIED, COLLATERALIZED, REVOKED, SUBMITTED, CONFIRMED, DECLINED, EXPECTED, PAID, FULFILLED, FAILED, CANCELLED} from "../../type/StateId.sol";
         | 
| 8 8 | 
             
            import {Lifecycle} from "../../shared/Lifecycle.sol";
         | 
| 9 9 |  | 
| @@ -23,6 +23,7 @@ contract ObjectLifecycle is | |
| 23 23 | 
             
                    _setupBundleLifecycle();
         | 
| 24 24 | 
             
                    _setupComponentLifecycle();
         | 
| 25 25 | 
             
                    _setupPolicyLifecycle();
         | 
| 26 | 
            +
                    _setupPremiumLifecycle();
         | 
| 26 27 | 
             
                    _setupClaimLifecycle();
         | 
| 27 28 | 
             
                    _setupPayoutLifecycle();
         | 
| 28 29 | 
             
                    _setupRiskLifecycle();
         | 
| @@ -54,9 +55,12 @@ contract ObjectLifecycle is | |
| 54 55 | 
             
                    setStateTransition(POLICY(), APPLIED(), REVOKED());
         | 
| 55 56 | 
             
                    setStateTransition(POLICY(), APPLIED(), DECLINED());
         | 
| 56 57 | 
             
                    setStateTransition(POLICY(), APPLIED(), COLLATERALIZED());
         | 
| 57 | 
            -
                    setStateTransition(POLICY(),  | 
| 58 | 
            -
             | 
| 59 | 
            -
             | 
| 58 | 
            +
                    setStateTransition(POLICY(), COLLATERALIZED(), CLOSED());
         | 
| 59 | 
            +
                }
         | 
| 60 | 
            +
             | 
| 61 | 
            +
                function _setupPremiumLifecycle() private {
         | 
| 62 | 
            +
                    setInitialState(PREMIUM(), EXPECTED());
         | 
| 63 | 
            +
                    setStateTransition(PREMIUM(), EXPECTED(), PAID());
         | 
| 60 64 | 
             
                }
         | 
| 61 65 |  | 
| 62 66 | 
             
                function _setupClaimLifecycle() private {
         | 
| @@ -68,6 +72,7 @@ contract ObjectLifecycle is | |
| 68 72 |  | 
| 69 73 | 
             
                function _setupPayoutLifecycle() private {
         | 
| 70 74 | 
             
                    setInitialState(PAYOUT(), EXPECTED());
         | 
| 75 | 
            +
                    // TODO: add state cancelled
         | 
| 71 76 | 
             
                    setStateTransition(PAYOUT(), EXPECTED(), PAID());
         | 
| 72 77 | 
             
                }
         | 
| 73 78 |  | 
| @@ -10,17 +10,17 @@ import {IRegistry} from "../../registry/IRegistry.sol"; | |
| 10 10 | 
             
            import {LibNftIdSet} from "../../type/NftIdSet.sol";
         | 
| 11 11 | 
             
            import {NftId} from "../../type/NftId.sol";
         | 
| 12 12 |  | 
| 13 | 
            -
            contract  | 
| 13 | 
            +
            contract ObjectSet is
         | 
| 14 14 | 
             
                Cloneable
         | 
| 15 15 | 
             
            {
         | 
| 16 16 |  | 
| 17 | 
            -
                event  | 
| 17 | 
            +
                event LogObjectSetInitialized(address instance);
         | 
| 18 18 |  | 
| 19 | 
            -
                error  | 
| 19 | 
            +
                error ErrorObjectSetNftIdInvalid(NftId instanceNftId);
         | 
| 20 20 |  | 
| 21 21 | 
             
                mapping(NftId compnentNftId => LibNftIdSet.Set objects) internal _activeObjects;
         | 
| 22 22 | 
             
                mapping(NftId compnentNftId => LibNftIdSet.Set objects) internal _allObjects;
         | 
| 23 | 
            -
                IInstance internal _instance; // store instance address -> more flexible, instance may not be registered during  | 
| 23 | 
            +
                IInstance internal _instance; // store instance address -> more flexible, instance may not be registered during ObjectSet initialization
         | 
| 24 24 |  | 
| 25 25 | 
             
                /// @dev This initializer needs to be called from the instance itself.
         | 
| 26 26 | 
             
                function initialize() 
         | 
| @@ -30,7 +30,7 @@ contract ObjectManager is | |
| 30 30 | 
             
                    _instance = IInstance(msg.sender);
         | 
| 31 31 | 
             
                    __Cloneable_init(_instance.authority(), address(_instance.getRegistry()));
         | 
| 32 32 |  | 
| 33 | 
            -
                    emit  | 
| 33 | 
            +
                    emit LogObjectSetInitialized(address(_instance));
         | 
| 34 34 | 
             
                }
         | 
| 35 35 |  | 
| 36 36 | 
             
                function getInstance() external view returns (IInstance) {
         | 
| @@ -13,7 +13,7 @@ interface IBundle { | |
| 13 13 | 
             
                    NftId poolNftId;
         | 
| 14 14 | 
             
                    Fee fee; // bundle fee on net premium amounts
         | 
| 15 15 | 
             
                    bytes filter; // required conditions for applications to be considered for collateralization by this bundle
         | 
| 16 | 
            -
                     | 
| 16 | 
            +
                    Timestamp activatedAt; 
         | 
| 17 17 | 
             
                    Timestamp expiredAt; // no new policies starting with this timestamp
         | 
| 18 18 | 
             
                    Timestamp closedAt; // no open policies, locked amount = 0
         | 
| 19 19 | 
             
                }
         | 
| @@ -21,10 +21,10 @@ interface IComponents { | |
| 21 21 | 
             
                    bytes data; // will hold component type specific additional info (eg encoded pool info)
         | 
| 22 22 | 
             
                }
         | 
| 23 23 |  | 
| 24 | 
            -
             | 
| 25 24 | 
             
                struct ProductInfo {
         | 
| 26 25 | 
             
                    NftId distributionNftId;
         | 
| 27 26 | 
             
                    NftId poolNftId;
         | 
| 27 | 
            +
                    bool isProcessingFundedClaims; // custom logic to react to pool events for funded claims
         | 
| 28 28 | 
             
                    Fee productFee; // product fee on net premium
         | 
| 29 29 | 
             
                    Fee processingFee; // product fee on payout amounts        
         | 
| 30 30 | 
             
                    Fee distributionFee; // distribution fee for sales that do not include commissions
         | 
| @@ -36,17 +36,13 @@ interface IComponents { | |
| 36 36 |  | 
| 37 37 |  | 
| 38 38 | 
             
                struct PoolInfo {
         | 
| 39 | 
            -
                     | 
| 39 | 
            +
                    Amount maxBalanceAmount; // max balance amount allowed for pool
         | 
| 40 40 | 
             
                    RoleId bundleOwnerRole; // the required role for bundle owners
         | 
| 41 | 
            -
                    //  | 
| 42 | 
            -
                     | 
| 43 | 
            -
                    bool isInterceptingBundleTransfers; // intercepts nft transfers for bundles
         | 
| 41 | 
            +
                    bool isInterceptingBundleTransfers; // custom logic for bundle nft transfers
         | 
| 42 | 
            +
                    bool isProcessingConfirmedClaims; // custom logic for claims confirmation
         | 
| 44 43 | 
             
                    bool isExternallyManaged; // funding bundles is restricted to book keeping, actual funds may be provided as needed to support payouts
         | 
| 45 44 | 
             
                    bool isVerifyingApplications; // underwriting requires the pool component checks/confirms the applications 
         | 
| 46 45 | 
             
                    UFixed collateralizationLevel; // factor to calculate collateral for sum insurance (default 100%)
         | 
| 47 46 | 
             
                    UFixed retentionLevel; // amount of collateral held in pool (default 100%)
         | 
| 48 | 
            -
                    Fee poolFee; // pool fee on net premium
         | 
| 49 | 
            -
                    Fee stakingFee; // pool fee on staked capital from investor
         | 
| 50 | 
            -
                    Fee performanceFee; // pool fee on profits from capital investors
         | 
| 51 47 | 
             
                }
         | 
| 52 48 | 
             
            }
         | 
| @@ -11,7 +11,7 @@ import {Timestamp} from "../../type/Timestamp.sol"; | |
| 11 11 |  | 
| 12 12 | 
             
            interface IPolicy {
         | 
| 13 13 |  | 
| 14 | 
            -
                struct  | 
| 14 | 
            +
                struct PremiumInfo {
         | 
| 15 15 | 
             
                    // premium splitting per target wallet
         | 
| 16 16 | 
             
                    Amount productFeeAmount;
         | 
| 17 17 | 
             
                    Amount distributionFeeAndCommissionAmount;
         | 
| @@ -19,26 +19,26 @@ interface IPolicy { | |
| 19 19 |  | 
| 20 20 | 
             
                    // detailed positions
         | 
| 21 21 | 
             
                    // this is the net premium calculated by the product 
         | 
| 22 | 
            -
                     | 
| 22 | 
            +
                    Amount netPremiumAmount;
         | 
| 23 23 | 
             
                    // fullPremium = netPremium + all fixed amounts + all variable amounts (excl commission and minDistribtuionOwnerFee variable part)
         | 
| 24 | 
            -
                     | 
| 25 | 
            -
                    // premium = fullPremium - discount
         | 
| 26 | 
            -
                     | 
| 27 | 
            -
                     | 
| 28 | 
            -
                     | 
| 29 | 
            -
                     | 
| 30 | 
            -
                     | 
| 31 | 
            -
                     | 
| 32 | 
            -
                     | 
| 33 | 
            -
                     | 
| 34 | 
            -
                     | 
| 35 | 
            -
                     | 
| 24 | 
            +
                    Amount fullPremiumAmount;
         | 
| 25 | 
            +
                    // effective premium = fullPremium - discount 
         | 
| 26 | 
            +
                    Amount premiumAmount;
         | 
| 27 | 
            +
                    Amount productFeeFixAmount;
         | 
| 28 | 
            +
                    Amount poolFeeFixAmount;
         | 
| 29 | 
            +
                    Amount bundleFeeFixAmount;
         | 
| 30 | 
            +
                    Amount distributionFeeFixAmount;
         | 
| 31 | 
            +
                    Amount productFeeVarAmount;
         | 
| 32 | 
            +
                    Amount poolFeeVarAmount;
         | 
| 33 | 
            +
                    Amount bundleFeeVarAmount;
         | 
| 34 | 
            +
                    Amount distributionFeeVarAmount;
         | 
| 35 | 
            +
                    Amount distributionOwnerFeeFixAmount;
         | 
| 36 36 | 
             
                    // this is the remaining amount when the commission and discount are subtracted from the distribution fee variable part (must be at least the minDistributionOwnerFee)
         | 
| 37 | 
            -
                     | 
| 37 | 
            +
                    Amount distributionOwnerFeeVarAmount;
         | 
| 38 38 | 
             
                    // this value is based on distributor type referenced in the referral 
         | 
| 39 | 
            -
                     | 
| 39 | 
            +
                    Amount commissionAmount;
         | 
| 40 40 | 
             
                    // this is based on referral used
         | 
| 41 | 
            -
                     | 
| 41 | 
            +
                    Amount discountAmount;
         | 
| 42 42 | 
             
                }
         | 
| 43 43 |  | 
| 44 44 | 
             
                /// @dev policy data for the full policy lifecycle
         | 
| @@ -49,7 +49,6 @@ interface IPolicy { | |
| 49 49 | 
             
                    RiskId riskId;
         | 
| 50 50 | 
             
                    Amount sumInsuredAmount;
         | 
| 51 51 | 
             
                    Amount premiumAmount; // expected premium at application time
         | 
| 52 | 
            -
                    Amount premiumPaidAmount; // actual paid premium 
         | 
| 53 52 | 
             
                    Seconds lifetime;
         | 
| 54 53 | 
             
                    // policy application data, no changes after applying for a policy
         | 
| 55 54 | 
             
                    bytes applicationData;
         | 
| @@ -67,10 +66,10 @@ interface IPolicy { | |
| 67 66 | 
             
                struct ClaimInfo {
         | 
| 68 67 | 
             
                    Amount claimAmount;
         | 
| 69 68 | 
             
                    Amount paidAmount;
         | 
| 70 | 
            -
                     | 
| 71 | 
            -
                     | 
| 72 | 
            -
                    bytes submissionData; // claim submission data, no changes after submitting the claim
         | 
| 73 | 
            -
                    bytes processData; // data that may include information supporting confirm or decline
         | 
| 69 | 
            +
                    uint24 payoutsCount;
         | 
| 70 | 
            +
                    uint24 openPayoutsCount;
         | 
| 71 | 
            +
                    bytes submissionData; // use case specific claim submission data, no changes after submitting the claim
         | 
| 72 | 
            +
                    bytes processData; // use case specific data that may include information supporting confirm or decline
         | 
| 74 73 | 
             
                    Timestamp closedAt; // payment of confirmed claim amount (or declinedAt)
         | 
| 75 74 | 
             
                }
         | 
| 76 75 |  | 
| @@ -78,7 +77,8 @@ interface IPolicy { | |
| 78 77 | 
             
                struct PayoutInfo {
         | 
| 79 78 | 
             
                    ClaimId claimId;
         | 
| 80 79 | 
             
                    Amount amount;
         | 
| 81 | 
            -
                     | 
| 82 | 
            -
                     | 
| 80 | 
            +
                    address beneficiary; // for address(0) beneficiary is policy nft owner
         | 
| 81 | 
            +
                    bytes data; // use case specific supporting data
         | 
| 82 | 
            +
                    Timestamp paidAt; // timestamp for actual payout
         | 
| 83 83 | 
             
                }
         | 
| 84 84 | 
             
            }
         | 
    
        package/contracts/mock/Dip.sol
    CHANGED
    
    
| @@ -11,7 +11,8 @@ import {UFixed} from "../type/UFixed.sol"; | |
| 11 11 | 
             
            import {Timestamp} from "../type/Timestamp.sol";
         | 
| 12 12 |  | 
| 13 13 | 
             
            interface IOracleComponent is IInstanceLinkedComponent {
         | 
| 14 | 
            -
             | 
| 14 | 
            +
                error ErrorOracleNotImplemented(string methodName);
         | 
| 15 | 
            +
                
         | 
| 15 16 | 
             
                /// @dev callback method for requesting some data from the oracle
         | 
| 16 17 | 
             
                function request(
         | 
| 17 18 | 
             
                    RequestId requestId,
         | 
| @@ -1,19 +1,17 @@ | |
| 1 1 | 
             
            // SPDX-License-Identifier: Apache-2.0
         | 
| 2 2 | 
             
            pragma solidity ^0.8.20;
         | 
| 3 3 |  | 
| 4 | 
            +
            import {Amount} from "../type/Amount.sol";
         | 
| 4 5 | 
             
            import {COMPONENT, ORACLE} from "../type/ObjectType.sol";
         | 
| 5 6 | 
             
            import {IAuthorization} from "../authorization/IAuthorization.sol";
         | 
| 6 7 | 
             
            import {IComponentService} from "../shared/IComponentService.sol";
         | 
| 8 | 
            +
            import {IInstanceLinkedComponent} from "../shared/IInstanceLinkedComponent.sol";
         | 
| 7 9 | 
             
            import {IOracleComponent} from "./IOracleComponent.sol";
         | 
| 8 10 | 
             
            import {IOracleService} from "./IOracleService.sol";
         | 
| 9 | 
            -
            import { | 
| 10 | 
            -
            import {ITransferInterceptor} from "../registry/ITransferInterceptor.sol";
         | 
| 11 | 
            -
            import {NftId, NftIdLib} from "../type/NftId.sol";
         | 
| 11 | 
            +
            import {NftId} from "../type/NftId.sol";
         | 
| 12 12 | 
             
            import {InstanceLinkedComponent} from "../shared/InstanceLinkedComponent.sol";
         | 
| 13 | 
            -
            import {InstanceReader} from "../instance/InstanceReader.sol";
         | 
| 14 13 | 
             
            import {RequestId} from "../type/RequestId.sol";
         | 
| 15 | 
            -
            import {Timestamp | 
| 16 | 
            -
            import {UFixed} from "../type/UFixed.sol";
         | 
| 14 | 
            +
            import {Timestamp} from "../type/Timestamp.sol";
         | 
| 17 15 |  | 
| 18 16 |  | 
| 19 17 | 
             
            abstract contract Oracle is
         | 
| @@ -73,6 +71,18 @@ abstract contract Oracle is | |
| 73 71 | 
             
                    return false;
         | 
| 74 72 | 
             
                }
         | 
| 75 73 |  | 
| 74 | 
            +
                /// @dev Not relevant for oracle components
         | 
| 75 | 
            +
                function withdrawFees(Amount amount)
         | 
| 76 | 
            +
                    external
         | 
| 77 | 
            +
                    virtual
         | 
| 78 | 
            +
                    override(IInstanceLinkedComponent, InstanceLinkedComponent)
         | 
| 79 | 
            +
                    onlyOwner()
         | 
| 80 | 
            +
                    restricted()
         | 
| 81 | 
            +
                    returns (Amount withdrawnAmount)
         | 
| 82 | 
            +
                {
         | 
| 83 | 
            +
                    revert ErrorOracleNotImplemented("withdrawFees");
         | 
| 84 | 
            +
                }
         | 
| 85 | 
            +
             | 
| 76 86 |  | 
| 77 87 | 
             
                function _initializeOracle(
         | 
| 78 88 | 
             
                    address registry,
         | 
| @@ -104,7 +114,7 @@ abstract contract Oracle is | |
| 104 114 | 
             
                    $._oracleService = IOracleService(_getServiceAddress(ORACLE())); 
         | 
| 105 115 | 
             
                    $._componentService = IComponentService(_getServiceAddress(COMPONENT())); 
         | 
| 106 116 |  | 
| 107 | 
            -
                     | 
| 117 | 
            +
                    _registerInterface(type(IOracleComponent).interfaceId);
         | 
| 108 118 | 
             
                }
         | 
| 109 119 |  | 
| 110 120 |  | 
| @@ -27,14 +27,16 @@ contract OracleService is | |
| 27 27 | 
             
                    bytes memory data
         | 
| 28 28 | 
             
                )
         | 
| 29 29 | 
             
                    internal
         | 
| 30 | 
            -
                    initializer
         | 
| 31 30 | 
             
                    virtual override
         | 
| 31 | 
            +
                    initializer()
         | 
| 32 32 | 
             
                {
         | 
| 33 | 
            -
                     | 
| 34 | 
            -
             | 
| 35 | 
            -
             | 
| 36 | 
            -
                     | 
| 37 | 
            -
             | 
| 33 | 
            +
                    (
         | 
| 34 | 
            +
                        address registryAddress,
         | 
| 35 | 
            +
                        address authority
         | 
| 36 | 
            +
                    ) = abi.decode(data, (address, address));
         | 
| 37 | 
            +
             | 
| 38 | 
            +
                    _initializeService(registryAddress, authority, owner);
         | 
| 39 | 
            +
                    _registerInterface(type(IOracleService).interfaceId);
         | 
| 38 40 | 
             
                }
         | 
| 39 41 |  | 
| 40 42 | 
             
                function request(
         | 
| @@ -64,6 +66,7 @@ contract OracleService is | |
| 64 66 | 
             
                        ORACLE(), 
         | 
| 65 67 | 
             
                        true); // only active
         | 
| 66 68 |  | 
| 69 | 
            +
                    // TODO move to stronger validation, requester and oracle need to belong to same product cluster
         | 
| 67 70 | 
             
                    // check that requester and oracle share same instance
         | 
| 68 71 | 
             
                    if (componentInfo.parentNftId != oracleInfo.parentNftId) {
         | 
| 69 72 | 
             
                        revert ErrorOracleServiceInstanceMismatch(componentInfo.parentNftId, oracleInfo.parentNftId);
         | 
| @@ -214,7 +217,7 @@ contract OracleService is | |
| 214 217 |  | 
| 215 218 | 
             
                    // call oracle component
         | 
| 216 219 | 
             
                    // TODO add check that oracle is active?
         | 
| 217 | 
            -
                    address oracleAddress = getRegistry(). | 
| 220 | 
            +
                    address oracleAddress = getRegistry().getObjectAddress(request.oracleNftId);
         | 
| 218 221 | 
             
                    IOracleComponent(oracleAddress).cancel(requestId);
         | 
| 219 222 |  | 
| 220 223 | 
             
                    emit LogOracleServiceRequestCancelled(requestId, requesterNftId);
         | 
| @@ -267,7 +270,7 @@ contract OracleService is | |
| 267 270 | 
             
                    returns(IInstance instance)
         | 
| 268 271 | 
             
                {
         | 
| 269 272 | 
             
                    NftId instanceNftId = getRegistry().getObjectInfo(componentNftId).parentNftId;
         | 
| 270 | 
            -
                    address instanceAddress = getRegistry(). | 
| 273 | 
            +
                    address instanceAddress = getRegistry().getObjectAddress(instanceNftId);
         | 
| 271 274 | 
             
                    return IInstance(instanceAddress);
         | 
| 272 275 | 
             
                }
         | 
| 273 276 |  |