@etherisc/gif-next 0.0.2-f1e0c66-773 → 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 +7 -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 +63 -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 +21 -222
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +134 -286
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +84 -120
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +21 -37
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +49 -62
- 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 +1 -1
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +2 -2
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +10 -99
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +145 -111
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +14 -14
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +437 -124
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +39 -146
- 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 -218
- 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 +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/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 +47 -232
- 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 +15 -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 +15 -216
- 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 +51 -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 +319 -188
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +130 -94
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +149 -23
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +44 -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 +41 -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 +43 -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 +282 -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 +43 -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 +399 -327
- 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 +115 -267
- 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 +43 -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 +238 -34
- 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 +436 -95
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +261 -143
- 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 +1 -1
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +117 -215
- 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 +89 -212
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +96 -114
- 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/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +15 -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 +1 -1
- package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +2 -22
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +15 -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 +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 +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 +63 -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 +168 -127
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +54 -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 +32 -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 +2 -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 +2 -2
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +15 -2
- 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 +39 -70
- 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 +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/Distribution.sol +1 -1
- package/contracts/distribution/DistributionService.sol +32 -33
- package/contracts/distribution/DistributionServiceManager.sol +6 -6
- package/contracts/distribution/IDistributionService.sol +9 -5
- 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/IInstance.sol +7 -30
- package/contracts/instance/Instance.sol +10 -35
- package/contracts/instance/InstanceAdmin.sol +29 -7
- package/contracts/instance/InstanceAuthorizationV3.sol +3 -3
- package/contracts/instance/InstanceReader.sol +115 -25
- package/contracts/instance/InstanceService.sol +63 -41
- package/contracts/instance/InstanceServiceManager.sol +6 -7
- package/contracts/instance/InstanceStore.sol +11 -1
- package/contracts/instance/base/ObjectLifecycle.sol +9 -4
- package/contracts/instance/module/IBundle.sol +1 -1
- package/contracts/instance/module/IComponents.sol +4 -7
- package/contracts/instance/module/IPolicy.sol +24 -24
- package/contracts/mock/Dip.sol +1 -1
- package/contracts/oracle/Oracle.sol +2 -1
- package/contracts/oracle/OracleService.sol +11 -8
- package/contracts/oracle/OracleServiceManager.sol +6 -6
- package/contracts/pool/BasicPool.sol +7 -5
- package/contracts/pool/BasicPoolAuthorization.sol +5 -2
- package/contracts/pool/BundleService.sol +166 -46
- package/contracts/pool/BundleServiceManager.sol +6 -6
- package/contracts/pool/IBundleService.sol +31 -8
- package/contracts/pool/IPoolComponent.sol +18 -8
- package/contracts/pool/IPoolService.sol +57 -36
- package/contracts/pool/Pool.sol +59 -34
- package/contracts/pool/PoolService.sol +231 -102
- package/contracts/pool/PoolServiceManager.sol +4 -4
- package/contracts/product/ApplicationService.sol +50 -29
- package/contracts/product/ApplicationServiceManager.sol +4 -4
- package/contracts/product/BasicProduct.sol +1 -0
- package/contracts/product/ClaimService.sol +251 -87
- package/contracts/product/ClaimServiceManager.sol +4 -4
- package/contracts/product/IApplicationService.sol +1 -0
- package/contracts/product/IClaimService.sol +31 -7
- package/contracts/product/IPolicyService.sol +34 -34
- package/contracts/product/IPricingService.sol +7 -7
- package/contracts/product/IProductComponent.sol +17 -4
- package/contracts/product/{IProductService.sol → IRiskService.sol} +1 -1
- package/contracts/product/PolicyService.sol +379 -192
- package/contracts/product/PolicyServiceManager.sol +4 -4
- package/contracts/product/PricingService.sol +46 -46
- package/contracts/product/PricingServiceManager.sol +3 -3
- package/contracts/product/Product.sol +81 -50
- package/contracts/product/{ProductService.sol → RiskService.sol} +7 -10
- package/contracts/product/RiskServiceManager.sol +39 -0
- package/contracts/registry/ChainNft.sol +65 -32
- package/contracts/registry/IRegistry.sol +51 -18
- package/contracts/registry/IRegistryService.sol +0 -9
- package/contracts/registry/Registry.sol +328 -197
- package/contracts/registry/RegistryAdmin.sol +134 -51
- package/contracts/registry/RegistryService.sol +55 -48
- package/contracts/registry/RegistryServiceManager.sol +2 -2
- package/contracts/registry/ReleaseLifecycle.sol +6 -3
- package/contracts/registry/ReleaseRegistry.sol +194 -183
- package/contracts/registry/ServiceAuthorizationV3.sol +8 -10
- package/contracts/shared/Component.sol +25 -29
- package/contracts/shared/ComponentService.sol +20 -30
- package/contracts/shared/ComponentServiceManager.sol +8 -5
- package/contracts/shared/ComponentVerifyingService.sol +2 -3
- package/contracts/shared/ContractLib.sol +38 -0
- package/contracts/shared/IComponent.sol +7 -4
- package/contracts/shared/IInstanceLinkedComponent.sol +8 -15
- package/contracts/shared/ILifecycle.sol +3 -1
- package/contracts/shared/IPolicyHolder.sol +12 -22
- package/contracts/shared/InitializableERC165.sol +2 -2
- package/contracts/shared/InstanceLinkedComponent.sol +5 -6
- package/contracts/shared/KeyValueStore.sol +1 -1
- package/contracts/shared/Lifecycle.sol +13 -2
- package/contracts/shared/NftOwnable.sol +5 -5
- package/contracts/shared/PolicyHolder.sol +15 -52
- package/contracts/shared/Registerable.sol +4 -4
- package/contracts/shared/RegistryLinked.sol +3 -2
- package/contracts/shared/Service.sol +16 -11
- package/contracts/shared/TokenHandler.sol +100 -19
- package/contracts/shared/TokenHandlerDeployerLib.sol +12 -0
- package/contracts/staking/IStaking.sol +2 -1
- package/contracts/staking/StakeManagerLib.sol +18 -25
- package/contracts/staking/Staking.sol +11 -29
- package/contracts/staking/StakingManager.sol +8 -6
- package/contracts/staking/StakingReader.sol +12 -5
- package/contracts/staking/StakingService.sol +10 -14
- package/contracts/staking/StakingServiceManager.sol +2 -2
- package/contracts/staking/TargetManagerLib.sol +7 -3
- package/contracts/type/Amount.sol +15 -0
- 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 +16 -11
- package/contracts/type/PayoutId.sol +10 -10
- 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 +4 -0
- package/contracts/upgradeability/ProxyManager.sol +67 -34
- package/contracts/upgradeability/Versionable.sol +2 -2
- package/package.json +2 -1
- package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +0 -4
- package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +0 -4
- package/artifacts/contracts/product/ProductService.sol/ProductService.json +0 -708
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +0 -702
- package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +0 -4
- package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +0 -39
- package/contracts/product/ProductServiceManager.sol +0 -39
- package/contracts/shared/InitializableCustom.sol +0 -177
| @@ -1,25 +1,20 @@ | |
| 1 1 | 
             
            // SPDX-License-Identifier: Apache-2.0
         | 
| 2 2 | 
             
            pragma solidity ^0.8.20;
         | 
| 3 3 |  | 
| 4 | 
            -
            import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
         | 
| 5 | 
            -
             | 
| 6 4 | 
             
            import {Amount} from "../type/Amount.sol";
         | 
| 7 | 
            -
            import {ClaimId} from "../type/ClaimId.sol";
         | 
| 5 | 
            +
            import {ClaimId, ClaimIdLib} from "../type/ClaimId.sol";
         | 
| 8 6 | 
             
            import {DistributorType} from "../type/DistributorType.sol";
         | 
| 9 | 
            -
            import {Fee, FeeLib} from "../type/Fee.sol";
         | 
| 10 7 | 
             
            import {Key32} from "../type/Key32.sol";
         | 
| 11 8 | 
             
            import {NftId} from "../type/NftId.sol";
         | 
| 12 | 
            -
            import { | 
| 13 | 
            -
            import {PayoutId} from "../type/PayoutId.sol";
         | 
| 9 | 
            +
            import {COMPONENT, DISTRIBUTOR, DISTRIBUTION, PREMIUM, PRODUCT, POLICY, POOL, BUNDLE} from "../type/ObjectType.sol";
         | 
| 10 | 
            +
            import {PayoutId, PayoutIdLib} from "../type/PayoutId.sol";
         | 
| 14 11 | 
             
            import {ReferralId, ReferralStatus, ReferralLib, REFERRAL_OK, REFERRAL_ERROR_UNKNOWN, REFERRAL_ERROR_EXPIRED, REFERRAL_ERROR_EXHAUSTED} from "../type/Referral.sol";
         | 
| 15 12 | 
             
            import {RequestId} from "../type/RequestId.sol";
         | 
| 16 13 | 
             
            import {RiskId} from "../type/RiskId.sol";
         | 
| 17 14 | 
             
            import {RoleId} from "../type/RoleId.sol";
         | 
| 18 15 | 
             
            import {StateId} from "../type/StateId.sol";
         | 
| 19 | 
            -
            import {UFixed,  | 
| 20 | 
            -
            import {Version} from "../type/Version.sol";
         | 
| 16 | 
            +
            import {UFixed, UFixedLib} from "../type/UFixed.sol";
         | 
| 21 17 |  | 
| 22 | 
            -
            import {IRegistry} from "../registry/IRegistry.sol";
         | 
| 23 18 | 
             
            import {IBundle} from "../instance/module/IBundle.sol";
         | 
| 24 19 | 
             
            import {IComponents} from "../instance/module/IComponents.sol";
         | 
| 25 20 | 
             
            import {IDistribution} from "../instance/module/IDistribution.sol";
         | 
| @@ -31,6 +26,7 @@ import {IRisk} from "../instance/module/IRisk.sol"; | |
| 31 26 | 
             
            import {TimestampLib} from "../type/Timestamp.sol";
         | 
| 32 27 |  | 
| 33 28 | 
             
            import {InstanceStore} from "./InstanceStore.sol";
         | 
| 29 | 
            +
            import {BundleSet} from "./BundleSet.sol";
         | 
| 34 30 |  | 
| 35 31 |  | 
| 36 32 | 
             
            contract InstanceReader {
         | 
| @@ -42,6 +38,7 @@ contract InstanceReader { | |
| 42 38 |  | 
| 43 39 | 
             
                IInstance internal _instance;
         | 
| 44 40 | 
             
                InstanceStore internal _store;
         | 
| 41 | 
            +
                BundleSet internal _bundleSet;
         | 
| 45 42 |  | 
| 46 43 | 
             
                /// @dev This initializer needs to be called from the instance itself.
         | 
| 47 44 | 
             
                function initialize() public {
         | 
| @@ -61,6 +58,7 @@ contract InstanceReader { | |
| 61 58 | 
             
                    _initialized = true;
         | 
| 62 59 | 
             
                    _instance = IInstance(instanceAddress);
         | 
| 63 60 | 
             
                    _store = _instance.getInstanceStore();
         | 
| 61 | 
            +
                    _bundleSet = _instance.getBundleSet();
         | 
| 64 62 | 
             
                }
         | 
| 65 63 |  | 
| 66 64 |  | 
| @@ -85,14 +83,51 @@ contract InstanceReader { | |
| 85 83 | 
             
                    return _store.getState(toPolicyKey(policyNftId));
         | 
| 86 84 | 
             
                }
         | 
| 87 85 |  | 
| 88 | 
            -
                 | 
| 89 | 
            -
             | 
| 90 | 
            -
             | 
| 91 | 
            -
             | 
| 92 | 
            -
                 | 
| 93 | 
            -
             | 
| 94 | 
            -
             | 
| 95 | 
            -
             | 
| 86 | 
            +
                function getPremiumInfo(NftId policyNftId) 
         | 
| 87 | 
            +
                    public
         | 
| 88 | 
            +
                    view
         | 
| 89 | 
            +
                    returns (IPolicy.PremiumInfo memory info)
         | 
| 90 | 
            +
                {
         | 
| 91 | 
            +
                    bytes memory data = _store.getData(toPremiumKey(policyNftId));
         | 
| 92 | 
            +
                    if (data.length > 0) {
         | 
| 93 | 
            +
                        return abi.decode(data, (IPolicy.PremiumInfo));
         | 
| 94 | 
            +
                    }
         | 
| 95 | 
            +
                }
         | 
| 96 | 
            +
             | 
| 97 | 
            +
                function getPremiumInfoState(NftId policyNftId) 
         | 
| 98 | 
            +
                    public
         | 
| 99 | 
            +
                    view
         | 
| 100 | 
            +
                    returns (StateId state)
         | 
| 101 | 
            +
                {
         | 
| 102 | 
            +
                    return _store.getState(toPremiumKey(policyNftId));
         | 
| 103 | 
            +
                }
         | 
| 104 | 
            +
             | 
| 105 | 
            +
                function activeBundles(NftId poolNftId)
         | 
| 106 | 
            +
                    public
         | 
| 107 | 
            +
                    view
         | 
| 108 | 
            +
                    returns (uint256 bundles)
         | 
| 109 | 
            +
                {
         | 
| 110 | 
            +
                    return _bundleSet.activeBundles(poolNftId);
         | 
| 111 | 
            +
                }
         | 
| 112 | 
            +
             | 
| 113 | 
            +
                function getActiveBundleNftId(NftId poolNftId, uint256 idx)
         | 
| 114 | 
            +
                    public
         | 
| 115 | 
            +
                    view
         | 
| 116 | 
            +
                    returns (NftId bundleNftId)
         | 
| 117 | 
            +
                {
         | 
| 118 | 
            +
                    return _bundleSet.getActiveBundleNftId(poolNftId, idx);
         | 
| 119 | 
            +
                }
         | 
| 120 | 
            +
             | 
| 121 | 
            +
                function getBundleState(NftId bundleNftId)
         | 
| 122 | 
            +
                    public
         | 
| 123 | 
            +
                    view
         | 
| 124 | 
            +
                    returns (StateId state)
         | 
| 125 | 
            +
                {
         | 
| 126 | 
            +
                    return _store.getState(toBundleKey(bundleNftId));
         | 
| 127 | 
            +
                }
         | 
| 128 | 
            +
             | 
| 129 | 
            +
                /// @dev Returns true iff policy is active.
         | 
| 130 | 
            +
                function policyIsActive(NftId policyNftId)
         | 
| 96 131 | 
             
                    public
         | 
| 97 132 | 
             
                    view
         | 
| 98 133 | 
             
                    returns (bool isCloseable)
         | 
| @@ -101,17 +136,27 @@ contract InstanceReader { | |
| 101 136 |  | 
| 102 137 | 
             
                    if (info.productNftId.eqz()) { return false; } // not closeable: policy does not exist (or does not belong to this instance)
         | 
| 103 138 | 
             
                    if (info.activatedAt.eqz()) { return false; } // not closeable: not yet activated
         | 
| 104 | 
            -
                    if (info. | 
| 105 | 
            -
                    if (info. | 
| 139 | 
            +
                    if (info.activatedAt > TimestampLib.blockTimestamp()) { return false; } // not yet active
         | 
| 140 | 
            +
                    if (info.expiredAt <= TimestampLib.blockTimestamp()) { return false; } // already expired
         | 
| 141 | 
            +
             | 
| 142 | 
            +
                    return true;
         | 
| 143 | 
            +
                }
         | 
| 106 144 |  | 
| 107 | 
            -
             | 
| 108 | 
            -
                     | 
| 145 | 
            +
                function claims(NftId policyNftId)
         | 
| 146 | 
            +
                    public
         | 
| 147 | 
            +
                    view
         | 
| 148 | 
            +
                    returns (uint16 claims)
         | 
| 149 | 
            +
                {
         | 
| 150 | 
            +
                    return getPolicyInfo(policyNftId).claimsCount;
         | 
| 151 | 
            +
                }
         | 
| 109 152 |  | 
| 110 | 
            -
                    // not closeable: not yet expired
         | 
| 111 | 
            -
                    if (TimestampLib.blockTimestamp() < info.expiredAt) { return false; }
         | 
| 112 153 |  | 
| 113 | 
            -
             | 
| 114 | 
            -
                     | 
| 154 | 
            +
                function getClaimId(uint idx)
         | 
| 155 | 
            +
                    public
         | 
| 156 | 
            +
                    view
         | 
| 157 | 
            +
                    returns (ClaimId claimId)
         | 
| 158 | 
            +
                {
         | 
| 159 | 
            +
                    return ClaimIdLib.toClaimId(idx + 1);
         | 
| 115 160 | 
             
                }
         | 
| 116 161 |  | 
| 117 162 | 
             
                function getClaimInfo(NftId policyNftId, ClaimId claimId)
         | 
| @@ -125,6 +170,7 @@ contract InstanceReader { | |
| 125 170 | 
             
                    }
         | 
| 126 171 | 
             
                }
         | 
| 127 172 |  | 
| 173 | 
            +
             | 
| 128 174 | 
             
                function getClaimState(NftId policyNftId, ClaimId claimId)
         | 
| 129 175 | 
             
                    public
         | 
| 130 176 | 
             
                    view
         | 
| @@ -133,6 +179,34 @@ contract InstanceReader { | |
| 133 179 | 
             
                    return _store.getState(claimId.toKey32(policyNftId));
         | 
| 134 180 | 
             
                }
         | 
| 135 181 |  | 
| 182 | 
            +
             | 
| 183 | 
            +
                function payouts(NftId policyNftId, ClaimId claimId)
         | 
| 184 | 
            +
                    public
         | 
| 185 | 
            +
                    view
         | 
| 186 | 
            +
                    returns (uint24 payouts)
         | 
| 187 | 
            +
                {
         | 
| 188 | 
            +
                    return getClaimInfo(policyNftId, claimId).payoutsCount;
         | 
| 189 | 
            +
                }
         | 
| 190 | 
            +
             | 
| 191 | 
            +
             | 
| 192 | 
            +
                function getPayoutId(ClaimId claimId, uint24 idx)
         | 
| 193 | 
            +
                    public
         | 
| 194 | 
            +
                    view
         | 
| 195 | 
            +
                    returns (PayoutId payoutId)
         | 
| 196 | 
            +
                {
         | 
| 197 | 
            +
                    return PayoutIdLib.toPayoutId(claimId, idx + 1);
         | 
| 198 | 
            +
                }
         | 
| 199 | 
            +
             | 
| 200 | 
            +
             | 
| 201 | 
            +
                function getRemainingClaimableAmount(NftId policyNftId)
         | 
| 202 | 
            +
                    public
         | 
| 203 | 
            +
                    view
         | 
| 204 | 
            +
                    returns (Amount remainingClaimableAmount)
         | 
| 205 | 
            +
                {
         | 
| 206 | 
            +
                    IPolicy.PolicyInfo memory info = getPolicyInfo(policyNftId);
         | 
| 207 | 
            +
                    return info.sumInsuredAmount - info.claimAmount;
         | 
| 208 | 
            +
                }
         | 
| 209 | 
            +
             | 
| 136 210 | 
             
                function getPayoutInfo(NftId policyNftId, PayoutId payoutId)
         | 
| 137 211 | 
             
                    public
         | 
| 138 212 | 
             
                    view
         | 
| @@ -163,6 +237,19 @@ contract InstanceReader { | |
| 163 237 | 
             
                    }
         | 
| 164 238 | 
             
                }
         | 
| 165 239 |  | 
| 240 | 
            +
                function getWallet(NftId componentNftId)
         | 
| 241 | 
            +
                    public
         | 
| 242 | 
            +
                    view
         | 
| 243 | 
            +
                    returns (address tokenHandler)
         | 
| 244 | 
            +
                {
         | 
| 245 | 
            +
                    bytes memory data = _store.getData(toComponentKey(componentNftId));
         | 
| 246 | 
            +
             | 
| 247 | 
            +
                    if (data.length > 0) {
         | 
| 248 | 
            +
                        IComponents.ComponentInfo memory info = abi.decode(data, (IComponents.ComponentInfo));
         | 
| 249 | 
            +
                        return info.wallet;
         | 
| 250 | 
            +
                    }
         | 
| 251 | 
            +
                }
         | 
| 252 | 
            +
             | 
| 166 253 | 
             
                function getTokenHandler(NftId componentNftId)
         | 
| 167 254 | 
             
                    public
         | 
| 168 255 | 
             
                    view
         | 
| @@ -361,6 +448,9 @@ contract InstanceReader { | |
| 361 448 | 
             
                    return policyNftId.toKey32(POLICY());
         | 
| 362 449 | 
             
                }
         | 
| 363 450 |  | 
| 451 | 
            +
                function toPremiumKey(NftId policyNftId) public pure returns (Key32) { 
         | 
| 452 | 
            +
                    return policyNftId.toKey32(PREMIUM());
         | 
| 453 | 
            +
                }
         | 
| 364 454 |  | 
| 365 455 | 
             
                function toDistributorKey(NftId distributorNftId) public pure returns (Key32) { 
         | 
| 366 456 | 
             
                    return distributorNftId.toKey32(DISTRIBUTOR());
         | 
| @@ -60,7 +60,7 @@ contract InstanceService is | |
| 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 | 
             
                    }
         | 
| @@ -104,32 +104,9 @@ contract InstanceService is | |
| 104 104 | 
             
                    // tx sender will become instance owner
         | 
| 105 105 | 
             
                    address instanceOwner = msg.sender;
         | 
| 106 106 |  | 
| 107 | 
            -
                    //  | 
| 108 | 
            -
                     | 
| 109 | 
            -
             | 
| 110 | 
            -
                    
         | 
| 111 | 
            -
                    // set up the instance admin
         | 
| 112 | 
            -
                    InstanceAdmin clonedInstanceAdmin = InstanceAdmin(Clones.clone(_masterInstanceAdmin));
         | 
| 113 | 
            -
                    clonedAccessManager.initialize(
         | 
| 114 | 
            -
                        address(clonedInstanceAdmin)); // grant ADMIN_ROLE to instance admin
         | 
| 115 | 
            -
             | 
| 116 | 
            -
                    clonedInstanceAdmin.initialize(
         | 
| 117 | 
            -
                        clonedAccessManager,
         | 
| 118 | 
            -
                        InstanceAdmin(_masterInstanceAdmin).getInstanceAuthorization());
         | 
| 119 | 
            -
             | 
| 120 | 
            -
                    InstanceStore clonedInstanceStore = InstanceStore(Clones.clone(address(_masterInstanceStore)));
         | 
| 121 | 
            -
                    BundleSet clonedBundleSet = BundleSet(Clones.clone(_masterInstanceBundleSet));
         | 
| 122 | 
            -
                    InstanceReader clonedInstanceReader = InstanceReader(Clones.clone(address(_masterInstanceReader)));
         | 
| 123 | 
            -
             | 
| 124 | 
            -
                    // clone instance
         | 
| 125 | 
            -
                    clonedInstance = Instance(Clones.clone(_masterInstance));
         | 
| 126 | 
            -
                    clonedInstance.initialize(
         | 
| 127 | 
            -
                        clonedInstanceAdmin,
         | 
| 128 | 
            -
                        clonedInstanceStore,
         | 
| 129 | 
            -
                        clonedBundleSet,
         | 
| 130 | 
            -
                        clonedInstanceReader,
         | 
| 131 | 
            -
                        getRegistry(),
         | 
| 132 | 
            -
                        instanceOwner);
         | 
| 107 | 
            +
                    // create instance admin and instance
         | 
| 108 | 
            +
                    InstanceAdmin instanceAdmin = _createInstanceAdmin();
         | 
| 109 | 
            +
                    clonedInstance = _createInstance(instanceAdmin, instanceOwner);
         | 
| 133 110 |  | 
| 134 111 | 
             
                    // register cloned instance with registry
         | 
| 135 112 | 
             
                    clonedInstanceNftId = _registryService.registerInstance(
         | 
| @@ -142,7 +119,7 @@ contract InstanceService is | |
| 142 119 | 
             
                        TargetManagerLib.getDefaultRewardRate());
         | 
| 143 120 |  | 
| 144 121 | 
             
                    // MUST be set after instance is set up and registered
         | 
| 145 | 
            -
                     | 
| 122 | 
            +
                    instanceAdmin.initializeInstanceAuthorization(address(clonedInstance));
         | 
| 146 123 |  | 
| 147 124 | 
             
                    emit LogInstanceCloned(
         | 
| 148 125 | 
             
                        clonedInstanceNftId,
         | 
| @@ -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
         | 
| @@ -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 |  | 
| @@ -12,16 +12,15 @@ contract InstanceServiceManager is ProxyManager { | |
| 12 12 | 
             
                /// @dev initializes proxy manager with instance service implementation
         | 
| 13 13 | 
             
                constructor(
         | 
| 14 14 | 
             
                    address authority, 
         | 
| 15 | 
            -
                    address  | 
| 15 | 
            +
                    address registry,
         | 
| 16 16 | 
             
                    bytes32 salt
         | 
| 17 17 | 
             
                ) 
         | 
| 18 | 
            -
                    ProxyManager(registryAddress)
         | 
| 19 18 | 
             
                {
         | 
| 20 | 
            -
                    InstanceService  | 
| 21 | 
            -
                     | 
| 22 | 
            -
                     | 
| 23 | 
            -
             | 
| 24 | 
            -
                        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), 
         | 
| 25 24 | 
             
                        data,
         | 
| 26 25 | 
             
                        salt);
         | 
| 27 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} from "../type/ObjectType.sol";
         | 
| 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";
         | 
| @@ -195,6 +195,16 @@ contract InstanceStore is | |
| 195 195 | 
             
                    _updateState(_toNftKey32(policyNftId, POLICY()), newState);
         | 
| 196 196 | 
             
                }
         | 
| 197 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 | 
            +
             | 
| 198 208 | 
             
                //--- Claim -------------------------------------------------------------//
         | 
| 199 209 | 
             
                function createClaim(NftId policyNftId, ClaimId claimId, IPolicy.ClaimInfo memory claim) external restricted() {
         | 
| 200 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 |  | 
| @@ -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 | 
             
                }
         | 
| @@ -24,6 +24,7 @@ interface IComponents { | |
| 24 24 | 
             
                struct ProductInfo {
         | 
| 25 25 | 
             
                    NftId distributionNftId;
         | 
| 26 26 | 
             
                    NftId poolNftId;
         | 
| 27 | 
            +
                    bool isProcessingFundedClaims; // custom logic to react to pool events for funded claims
         | 
| 27 28 | 
             
                    Fee productFee; // product fee on net premium
         | 
| 28 29 | 
             
                    Fee processingFee; // product fee on payout amounts        
         | 
| 29 30 | 
             
                    Fee distributionFee; // distribution fee for sales that do not include commissions
         | 
| @@ -35,17 +36,13 @@ interface IComponents { | |
| 35 36 |  | 
| 36 37 |  | 
| 37 38 | 
             
                struct PoolInfo {
         | 
| 38 | 
            -
                     | 
| 39 | 
            +
                    Amount maxBalanceAmount; // max balance amount allowed for pool
         | 
| 39 40 | 
             
                    RoleId bundleOwnerRole; // the required role for bundle owners
         | 
| 40 | 
            -
                    //  | 
| 41 | 
            -
                     | 
| 42 | 
            -
                    bool isInterceptingBundleTransfers; // intercepts nft transfers for bundles
         | 
| 41 | 
            +
                    bool isInterceptingBundleTransfers; // custom logic for bundle nft transfers
         | 
| 42 | 
            +
                    bool isProcessingConfirmedClaims; // custom logic for claims confirmation
         | 
| 43 43 | 
             
                    bool isExternallyManaged; // funding bundles is restricted to book keeping, actual funds may be provided as needed to support payouts
         | 
| 44 44 | 
             
                    bool isVerifyingApplications; // underwriting requires the pool component checks/confirms the applications 
         | 
| 45 45 | 
             
                    UFixed collateralizationLevel; // factor to calculate collateral for sum insurance (default 100%)
         | 
| 46 46 | 
             
                    UFixed retentionLevel; // amount of collateral held in pool (default 100%)
         | 
| 47 | 
            -
                    Fee poolFee; // pool fee on net premium
         | 
| 48 | 
            -
                    Fee stakingFee; // pool fee on staked capital from investor
         | 
| 49 | 
            -
                    Fee performanceFee; // pool fee on profits from capital investors
         | 
| 50 47 | 
             
                }
         | 
| 51 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
    
    
| @@ -71,6 +71,7 @@ abstract contract Oracle is | |
| 71 71 | 
             
                    return false;
         | 
| 72 72 | 
             
                }
         | 
| 73 73 |  | 
| 74 | 
            +
                /// @dev Not relevant for oracle components
         | 
| 74 75 | 
             
                function withdrawFees(Amount amount)
         | 
| 75 76 | 
             
                    external
         | 
| 76 77 | 
             
                    virtual
         | 
| @@ -113,7 +114,7 @@ abstract contract Oracle is | |
| 113 114 | 
             
                    $._oracleService = IOracleService(_getServiceAddress(ORACLE())); 
         | 
| 114 115 | 
             
                    $._componentService = IComponentService(_getServiceAddress(COMPONENT())); 
         | 
| 115 116 |  | 
| 116 | 
            -
                     | 
| 117 | 
            +
                    _registerInterface(type(IOracleComponent).interfaceId);
         | 
| 117 118 | 
             
                }
         | 
| 118 119 |  | 
| 119 120 |  |