@etherisc/gif-next 0.0.2-f36fd21-685 → 0.0.2-f47f21f-178
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 +105 -65
- 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 +67 -11
- 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 +60 -32
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +40 -3
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +19 -0
- package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.dbg.json +4 -0
- package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.json +1196 -0
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +68 -5
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +163 -309
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +82 -22
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +91 -277
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +174 -292
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +99 -123
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +78 -92
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +78 -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 +1538 -0
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +470 -0
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +2077 -0
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +470 -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 +1471 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1231 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1592 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2095 -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/IInstance.sol/IInstance.json +53 -31
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +29 -84
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +56 -123
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +166 -139
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +57 -97
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +459 -131
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +77 -242
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +75 -87
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +330 -233
- 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 +46 -5
- 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 +137 -283
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +84 -24
- 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 +66 -80
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +43 -9
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +79 -265
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +91 -159
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +75 -83
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +109 -330
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +82 -22
- package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +359 -194
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +145 -97
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +178 -23
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +88 -130
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +384 -179
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +99 -313
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +506 -334
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +111 -87
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +76 -168
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +72 -92
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +136 -281
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +82 -22
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +303 -187
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +119 -103
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +34 -0
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +176 -6
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +310 -118
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +114 -85
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +124 -97
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
- package/artifacts/contracts/product/{IProductService.sol/IProductService.json → IRiskService.sol/IRiskService.json} +31 -2
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +433 -327
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +119 -103
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +199 -309
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +96 -120
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/product/Product.sol/Product.json +136 -281
- package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
- package/artifacts/contracts/product/RiskService.sol/RiskService.json +622 -0
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +694 -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 +286 -34
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +114 -35
- package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
- package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +5 -18
- package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
- package/artifacts/contracts/registry/Registry.sol/Registry.json +492 -95
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +283 -143
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +78 -284
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +67 -75
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +47 -6
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +129 -221
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +66 -8
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +2 -2
- package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
- package/artifacts/contracts/shared/Component.sol/Component.json +65 -236
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +355 -283
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +122 -120
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +47 -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 +55 -54
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +321 -19
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +66 -80
- 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/INftOwnable.sol/INftOwnable.json +16 -0
- 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/IRegisterable.sol/IRegisterable.json +29 -0
- 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/IService.sol/IService.json +29 -0
- 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 +79 -265
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +42 -1
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +42 -1
- package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +1 -1
- package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +2 -2
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +22 -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 +58 -89
- 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 +47 -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 +82 -55
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +29 -21
- 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 +176 -293
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +46 -5
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +106 -91
- 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 +71 -165
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +71 -79
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +169 -128
- 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 +55 -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 +64 -59
- package/contracts/authorization/Authorization.sol +111 -40
- package/contracts/authorization/IAccess.sol +1 -0
- package/contracts/authorization/IAccessAdmin.sol +4 -3
- package/contracts/authorization/IAuthorization.sol +13 -7
- package/contracts/authorization/IServiceAuthorization.sol +3 -1
- package/contracts/authorization/ReleaseAccessManager.sol +38 -0
- package/contracts/authorization/ServiceAuthorization.sol +26 -10
- package/contracts/distribution/BasicDistribution.sol +2 -1
- package/contracts/distribution/Distribution.sol +7 -17
- package/contracts/distribution/DistributionService.sol +83 -65
- package/contracts/distribution/DistributionServiceManager.sol +6 -6
- package/contracts/distribution/IDistributionComponent.sol +1 -1
- 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 +418 -0
- package/contracts/examples/fire/FireProductAuthorization.sol +44 -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 +10 -30
- package/contracts/instance/IInstanceService.sol +0 -20
- package/contracts/instance/Instance.sol +29 -51
- package/contracts/instance/InstanceAdmin.sol +42 -31
- package/contracts/instance/InstanceAuthorizationV3.sol +11 -21
- package/contracts/instance/InstanceReader.sol +115 -25
- package/contracts/instance/InstanceService.sol +65 -97
- 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 +10 -10
- package/contracts/instance/module/IPolicy.sol +24 -24
- package/contracts/mock/Dip.sol +1 -1
- package/contracts/oracle/BasicOracle.sol +0 -1
- package/contracts/oracle/IOracleService.sol +2 -1
- package/contracts/oracle/Oracle.sol +6 -16
- package/contracts/oracle/OracleService.sol +47 -34
- package/contracts/oracle/OracleServiceManager.sol +6 -6
- package/contracts/pool/BasicPool.sol +21 -31
- package/contracts/pool/BasicPoolAuthorization.sol +5 -3
- package/contracts/pool/BundleService.sol +213 -61
- 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 +56 -39
- package/contracts/pool/Pool.sol +60 -53
- package/contracts/pool/PoolService.sol +250 -140
- package/contracts/pool/PoolServiceManager.sol +4 -4
- package/contracts/product/ApplicationService.sol +59 -30
- package/contracts/product/ApplicationServiceManager.sol +4 -4
- package/contracts/product/BasicProduct.sol +7 -6
- package/contracts/product/BasicProductAuthorization.sol +0 -1
- package/contracts/product/ClaimService.sol +313 -118
- 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 +10 -10
- package/contracts/product/IProductComponent.sol +23 -4
- package/contracts/product/{IProductService.sol → IRiskService.sol} +1 -1
- package/contracts/product/PolicyService.sol +394 -196
- package/contracts/product/PolicyServiceManager.sol +4 -4
- package/contracts/product/PricingService.sol +54 -54
- package/contracts/product/PricingServiceManager.sol +3 -3
- package/contracts/product/Product.sol +125 -71
- package/contracts/product/{ProductService.sol → RiskService.sol} +7 -10
- package/contracts/product/RiskServiceManager.sol +39 -0
- package/contracts/registry/ChainNft.sol +68 -38
- package/contracts/registry/IRegistry.sol +55 -18
- package/contracts/registry/IRegistryService.sol +5 -12
- package/contracts/registry/ITransferInterceptor.sol +1 -2
- package/contracts/registry/Registry.sol +342 -201
- package/contracts/registry/RegistryAdmin.sol +134 -51
- package/contracts/registry/RegistryService.sol +35 -46
- package/contracts/registry/RegistryServiceManager.sol +2 -2
- package/contracts/registry/ReleaseLifecycle.sol +6 -3
- package/contracts/registry/ReleaseRegistry.sol +204 -188
- package/contracts/registry/ServiceAuthorizationV3.sol +16 -22
- package/contracts/shared/Component.sol +40 -55
- package/contracts/shared/ComponentService.sol +235 -151
- package/contracts/shared/ComponentServiceManager.sol +8 -5
- package/contracts/shared/ComponentVerifyingService.sol +23 -14
- package/contracts/shared/ContractLib.sol +38 -0
- package/contracts/shared/IComponent.sol +10 -6
- package/contracts/shared/IComponentService.sol +25 -13
- package/contracts/shared/IInstanceLinkedComponent.sol +7 -22
- package/contracts/shared/ILifecycle.sol +3 -1
- package/contracts/shared/INftOwnable.sol +2 -0
- package/contracts/shared/IPolicyHolder.sol +12 -22
- package/contracts/shared/IRegisterable.sol +11 -0
- package/contracts/shared/InitializableERC165.sol +2 -2
- package/contracts/shared/InstanceLinkedComponent.sol +72 -31
- package/contracts/shared/KeyValueStore.sol +1 -1
- package/contracts/shared/Lifecycle.sol +15 -4
- package/contracts/shared/NftOwnable.sol +27 -7
- package/contracts/shared/PolicyHolder.sol +15 -52
- package/contracts/shared/Registerable.sol +19 -9
- package/contracts/shared/RegistryLinked.sol +3 -2
- package/contracts/shared/Service.sol +20 -18
- package/contracts/shared/TokenHandler.sol +100 -19
- package/contracts/shared/TokenHandlerDeployerLib.sol +12 -0
- package/contracts/staking/IStaking.sol +2 -1
- package/contracts/staking/IStakingService.sol +0 -3
- package/contracts/staking/StakeManagerLib.sol +18 -25
- package/contracts/staking/Staking.sol +13 -32
- package/contracts/staking/StakingManager.sol +8 -6
- package/contracts/staking/StakingReader.sol +12 -5
- package/contracts/staking/StakingService.sol +11 -29
- 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/RoleId.sol +0 -12
- 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 +68 -34
- package/contracts/upgradeability/Versionable.sol +2 -2
- package/package.json +2 -1
- package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +0 -4
- package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.json +0 -290
- package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +0 -4
- package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +0 -390
- 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/authorization/IModuleAuthorization.sol +0 -21
- package/contracts/authorization/ModuleAuthorization.sol +0 -78
- package/contracts/product/ProductServiceManager.sol +0 -39
- package/contracts/shared/InitializableCustom.sol +0 -177
| @@ -12,7 +12,7 @@ import {NftId} from "../type/NftId.sol"; | |
| 12 12 | 
             
            import {RoleId} from "../type/RoleId.sol";
         | 
| 13 13 | 
             
            import {SecondsLib} from "../type/Seconds.sol";
         | 
| 14 14 | 
             
            import {UFixed, UFixedLib} from "../type/UFixed.sol";
         | 
| 15 | 
            -
            import {ADMIN_ROLE | 
| 15 | 
            +
            import {ADMIN_ROLE} from "../type/RoleId.sol";
         | 
| 16 16 | 
             
            import {ObjectType, INSTANCE, BUNDLE, APPLICATION, CLAIM, DISTRIBUTION, INSTANCE, POLICY, POOL, PRODUCT, REGISTRY, STAKING} from "../type/ObjectType.sol";
         | 
| 17 17 |  | 
| 18 18 | 
             
            import {Service} from "../shared/Service.sol";
         | 
| @@ -29,7 +29,6 @@ import {IStakingService} from "../staking/IStakingService.sol"; | |
| 29 29 | 
             
            import {TargetManagerLib} from "../staking/TargetManagerLib.sol";
         | 
| 30 30 |  | 
| 31 31 | 
             
            import {Instance} from "./Instance.sol";
         | 
| 32 | 
            -
            import {IModuleAuthorization} from "../authorization/IModuleAuthorization.sol";
         | 
| 33 32 | 
             
            import {IInstance} from "./IInstance.sol";
         | 
| 34 33 | 
             
            import {InstanceAdmin} from "./InstanceAdmin.sol";
         | 
| 35 34 | 
             
            import {IInstanceService} from "./IInstanceService.sol";
         | 
| @@ -60,7 +59,7 @@ contract InstanceService is | |
| 60 59 |  | 
| 61 60 | 
             
                modifier onlyInstance() {        
         | 
| 62 61 | 
             
                    address instanceAddress = msg.sender;
         | 
| 63 | 
            -
                    NftId instanceNftId = getRegistry(). | 
| 62 | 
            +
                    NftId instanceNftId = getRegistry().getNftIdForAddress(msg.sender);
         | 
| 64 63 | 
             
                    if (instanceNftId.eqz()) {
         | 
| 65 64 | 
             
                        revert ErrorInstanceServiceNotRegistered(instanceAddress);
         | 
| 66 65 | 
             
                    }
         | 
| @@ -70,7 +69,7 @@ contract InstanceService is | |
| 70 69 | 
             
                        revert ErrorInstanceServiceNotInstance(instanceAddress, objectType);
         | 
| 71 70 | 
             
                    }
         | 
| 72 71 |  | 
| 73 | 
            -
                    VersionPart instanceVersion = IInstance(instanceAddress). | 
| 72 | 
            +
                    VersionPart instanceVersion = IInstance(instanceAddress).getRelease();
         | 
| 74 73 | 
             
                    if (instanceVersion != getVersion().toMajorPart()) {
         | 
| 75 74 | 
             
                        revert ErrorInstanceServiceInstanceVersionMismatch(instanceAddress, instanceVersion);
         | 
| 76 75 | 
             
                    }
         | 
| @@ -104,32 +103,9 @@ contract InstanceService is | |
| 104 103 | 
             
                    // tx sender will become instance owner
         | 
| 105 104 | 
             
                    address instanceOwner = msg.sender;
         | 
| 106 105 |  | 
| 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);
         | 
| 106 | 
            +
                    // create instance admin and instance
         | 
| 107 | 
            +
                    InstanceAdmin instanceAdmin = _createInstanceAdmin();
         | 
| 108 | 
            +
                    clonedInstance = _createInstance(instanceAdmin, instanceOwner);
         | 
| 133 109 |  | 
| 134 110 | 
             
                    // register cloned instance with registry
         | 
| 135 111 | 
             
                    clonedInstanceNftId = _registryService.registerInstance(
         | 
| @@ -142,7 +118,7 @@ contract InstanceService is | |
| 142 118 | 
             
                        TargetManagerLib.getDefaultRewardRate());
         | 
| 143 119 |  | 
| 144 120 | 
             
                    // MUST be set after instance is set up and registered
         | 
| 145 | 
            -
                     | 
| 121 | 
            +
                    instanceAdmin.initializeInstanceAuthorization(address(clonedInstance));
         | 
| 146 122 |  | 
| 147 123 | 
             
                    emit LogInstanceCloned(
         | 
| 148 124 | 
             
                        clonedInstanceNftId,
         | 
| @@ -155,7 +131,7 @@ contract InstanceService is | |
| 155 131 | 
             
                    virtual
         | 
| 156 132 | 
             
                    onlyInstance()
         | 
| 157 133 | 
             
                {
         | 
| 158 | 
            -
                    NftId instanceNftId = getRegistry(). | 
| 134 | 
            +
                    NftId instanceNftId = getRegistry().getNftIdForAddress(msg.sender);
         | 
| 159 135 | 
             
                    _stakingService.setInstanceLockingPeriod(
         | 
| 160 136 | 
             
                        instanceNftId,
         | 
| 161 137 | 
             
                        stakeLockingPeriod);
         | 
| @@ -167,7 +143,7 @@ contract InstanceService is | |
| 167 143 | 
             
                    virtual
         | 
| 168 144 | 
             
                    onlyInstance()
         | 
| 169 145 | 
             
                {
         | 
| 170 | 
            -
                    NftId instanceNftId = getRegistry(). | 
| 146 | 
            +
                    NftId instanceNftId = getRegistry().getNftIdForAddress(msg.sender);
         | 
| 171 147 | 
             
                    _stakingService.setInstanceRewardRate(
         | 
| 172 148 | 
             
                        instanceNftId,
         | 
| 173 149 | 
             
                        rewardRate);
         | 
| @@ -179,7 +155,7 @@ contract InstanceService is | |
| 179 155 | 
             
                    virtual
         | 
| 180 156 | 
             
                    onlyInstance()
         | 
| 181 157 | 
             
                {
         | 
| 182 | 
            -
                    NftId instanceNftId = getRegistry(). | 
| 158 | 
            +
                    NftId instanceNftId = getRegistry().getNftIdForAddress(msg.sender);
         | 
| 183 159 | 
             
                    _stakingService.refillInstanceRewardReserves(
         | 
| 184 160 | 
             
                        instanceNftId,
         | 
| 185 161 | 
             
                        rewardProvider,
         | 
| @@ -193,7 +169,7 @@ contract InstanceService is | |
| 193 169 | 
             
                    onlyInstance()
         | 
| 194 170 | 
             
                    returns (Amount newBalance)
         | 
| 195 171 | 
             
                {
         | 
| 196 | 
            -
                    NftId instanceNftId = getRegistry(). | 
| 172 | 
            +
                    NftId instanceNftId = getRegistry().getNftIdForAddress(msg.sender);
         | 
| 197 173 | 
             
                    _stakingService.withdrawInstanceRewardReserves(
         | 
| 198 174 | 
             
                        instanceNftId,
         | 
| 199 175 | 
             
                        dipAmount);
         | 
| @@ -216,8 +192,7 @@ contract InstanceService is | |
| 216 192 | 
             
                    NftId instanceNftId = registry.getObjectInfo(componentAddress).parentNftId;
         | 
| 217 193 |  | 
| 218 194 | 
             
                    IInstance instance = IInstance(
         | 
| 219 | 
            -
                        registry. | 
| 220 | 
            -
                            instanceNftId).objectAddress);
         | 
| 195 | 
            +
                        registry.getObjectAddress(instanceNftId));
         | 
| 221 196 |  | 
| 222 197 | 
             
                    // no revert in case already locked
         | 
| 223 198 | 
             
                    // TODO refactor/implement
         | 
| @@ -291,6 +266,7 @@ contract InstanceService is | |
| 291 266 | 
             
                function upgradeInstanceReader(NftId instanceNftId) 
         | 
| 292 267 | 
             
                    external 
         | 
| 293 268 | 
             
                    onlyInstanceOwner(instanceNftId) 
         | 
| 269 | 
            +
                    onlyNftOfType(instanceNftId, INSTANCE())
         | 
| 294 270 | 
             
                {
         | 
| 295 271 | 
             
                    IRegistry registry = getRegistry();
         | 
| 296 272 | 
             
                    IRegistry.ObjectInfo memory instanceInfo = registry.getObjectInfo(instanceNftId);
         | 
| @@ -301,65 +277,51 @@ contract InstanceService is | |
| 301 277 | 
             
                    instance.setInstanceReader(upgradedInstanceReaderClone);
         | 
| 302 278 | 
             
                }
         | 
| 303 279 |  | 
| 304 | 
            -
             | 
| 305 | 
            -
                function  | 
| 306 | 
            -
             | 
| 307 | 
            -
                     | 
| 308 | 
            -
                    string memory targetName,
         | 
| 309 | 
            -
                    bytes4[][] memory selectors,
         | 
| 310 | 
            -
                    RoleId[] memory roles
         | 
| 311 | 
            -
                )
         | 
| 312 | 
            -
                    external
         | 
| 313 | 
            -
                    virtual
         | 
| 314 | 
            -
                    restricted()
         | 
| 315 | 
            -
                {
         | 
| 316 | 
            -
                    _createGifTarget(
         | 
| 317 | 
            -
                        instanceNftId,
         | 
| 318 | 
            -
                        targetAddress,
         | 
| 319 | 
            -
                        targetName,
         | 
| 320 | 
            -
                        roles,
         | 
| 321 | 
            -
                        selectors
         | 
| 322 | 
            -
                    );
         | 
| 323 | 
            -
                }
         | 
| 324 | 
            -
             | 
| 325 | 
            -
             | 
| 326 | 
            -
                function initializeAuthorization(
         | 
| 327 | 
            -
                    NftId instanceNftId, 
         | 
| 328 | 
            -
                    IInstanceLinkedComponent component
         | 
| 329 | 
            -
                )
         | 
| 330 | 
            -
                    external
         | 
| 280 | 
            +
                /// @dev create new cloned instance admin
         | 
| 281 | 
            +
                /// function used to setup a new instance
         | 
| 282 | 
            +
                function _createInstanceAdmin()
         | 
| 283 | 
            +
                    internal
         | 
| 331 284 | 
             
                    virtual
         | 
| 332 | 
            -
                     | 
| 285 | 
            +
                    returns (InstanceAdmin clonedInstanceAdmin)
         | 
| 333 286 | 
             
                {
         | 
| 334 | 
            -
                     | 
| 335 | 
            -
             | 
| 336 | 
            -
                         | 
| 287 | 
            +
                    // start with setting up a new OZ access manager
         | 
| 288 | 
            +
                    AccessManagerCloneable clonedAccessManager = AccessManagerCloneable(
         | 
| 289 | 
            +
                        Clones.clone(_masterAccessManager));
         | 
| 290 | 
            +
                    
         | 
| 291 | 
            +
                    // set up the instance admin
         | 
| 292 | 
            +
                    clonedInstanceAdmin = InstanceAdmin(Clones.clone(_masterInstanceAdmin));
         | 
| 293 | 
            +
                    clonedAccessManager.initialize(
         | 
| 294 | 
            +
                        address(clonedInstanceAdmin)); // grant ADMIN_ROLE to instance admin
         | 
| 337 295 |  | 
| 338 | 
            -
                     | 
| 339 | 
            -
             | 
| 340 | 
            -
                         | 
| 341 | 
            -
                        component.getAuthorization());
         | 
| 296 | 
            +
                    clonedInstanceAdmin.initialize(
         | 
| 297 | 
            +
                        clonedAccessManager,
         | 
| 298 | 
            +
                        InstanceAdmin(_masterInstanceAdmin).getInstanceAuthorization());
         | 
| 342 299 | 
             
                }
         | 
| 343 300 |  | 
| 344 301 |  | 
| 345 | 
            -
                 | 
| 346 | 
            -
             | 
| 347 | 
            -
             | 
| 348 | 
            -
                     | 
| 349 | 
            -
                     | 
| 350 | 
            -
                    RoleId[] memory roles
         | 
| 302 | 
            +
                /// @dev create new cloned instance
         | 
| 303 | 
            +
                /// function used to setup a new instance
         | 
| 304 | 
            +
                function _createInstance(
         | 
| 305 | 
            +
                    InstanceAdmin instanceAdmin,
         | 
| 306 | 
            +
                    address instanceOwner
         | 
| 351 307 | 
             
                )
         | 
| 352 | 
            -
                     | 
| 308 | 
            +
                    internal
         | 
| 353 309 | 
             
                    virtual
         | 
| 354 | 
            -
                     | 
| 310 | 
            +
                    returns (Instance clonedInstance)
         | 
| 355 311 | 
             
                {
         | 
| 356 | 
            -
                     | 
| 357 | 
            -
             | 
| 358 | 
            -
             | 
| 359 | 
            -
             | 
| 360 | 
            -
             | 
| 361 | 
            -
             | 
| 362 | 
            -
                     | 
| 312 | 
            +
                    InstanceStore clonedInstanceStore = InstanceStore(Clones.clone(address(_masterInstanceStore)));
         | 
| 313 | 
            +
                    BundleSet clonedBundleSet = BundleSet(Clones.clone(_masterInstanceBundleSet));
         | 
| 314 | 
            +
                    InstanceReader clonedInstanceReader = InstanceReader(Clones.clone(address(_masterInstanceReader)));
         | 
| 315 | 
            +
             | 
| 316 | 
            +
                    // clone instance
         | 
| 317 | 
            +
                    clonedInstance = Instance(Clones.clone(_masterInstance));
         | 
| 318 | 
            +
                    clonedInstance.initialize(
         | 
| 319 | 
            +
                        instanceAdmin,
         | 
| 320 | 
            +
                        clonedInstanceStore,
         | 
| 321 | 
            +
                        clonedBundleSet,
         | 
| 322 | 
            +
                        clonedInstanceReader,
         | 
| 323 | 
            +
                        getRegistry(),
         | 
| 324 | 
            +
                        instanceOwner);
         | 
| 363 325 | 
             
                }
         | 
| 364 326 |  | 
| 365 327 |  | 
| @@ -398,21 +360,20 @@ contract InstanceService is | |
| 398 360 | 
             
                    bytes memory data
         | 
| 399 361 | 
             
                )
         | 
| 400 362 | 
             
                    internal
         | 
| 401 | 
            -
                    initializer
         | 
| 402 363 | 
             
                    virtual override
         | 
| 364 | 
            +
                    initializer()
         | 
| 403 365 | 
             
                {
         | 
| 404 366 | 
             
                    (
         | 
| 405 | 
            -
                        address registryAddress | 
| 406 | 
            -
                        //address managerAddress
         | 
| 367 | 
            +
                        address registryAddress,
         | 
| 407 368 | 
             
                        address authority
         | 
| 408 | 
            -
                    ) = abi.decode(data, (address, address | 
| 369 | 
            +
                    ) = abi.decode(data, (address, address));
         | 
| 409 370 |  | 
| 410 | 
            -
                     | 
| 371 | 
            +
                    _initializeService(registryAddress, authority, owner);
         | 
| 411 372 |  | 
| 412 373 | 
             
                    _registryService = IRegistryService(_getServiceAddress(REGISTRY()));
         | 
| 413 374 | 
             
                    _stakingService = IStakingService(_getServiceAddress(STAKING()));
         | 
| 414 375 |  | 
| 415 | 
            -
                     | 
| 376 | 
            +
                    _registerInterface(type(IInstanceService).interfaceId);
         | 
| 416 377 | 
             
                }
         | 
| 417 378 |  | 
| 418 379 |  | 
| @@ -427,13 +388,20 @@ contract InstanceService is | |
| 427 388 | 
             
                        revert ErrorInstanceServiceNotInstanceNftId(instanceNftId);
         | 
| 428 389 | 
             
                    }
         | 
| 429 390 |  | 
| 430 | 
            -
                     | 
| 431 | 
            -
             | 
| 432 | 
            -
             | 
| 391 | 
            +
                    if (registry.getNftIdForAddress(componentAddress).gtz()) {
         | 
| 392 | 
            +
                        IRegistry.ObjectInfo memory componentInfo = registry.getObjectInfo(componentAddress);
         | 
| 393 | 
            +
             | 
| 394 | 
            +
                        if(componentInfo.parentNftId != instanceNftId) {
         | 
| 395 | 
            +
                            revert ErrorInstanceServiceInstanceComponentMismatch(instanceNftId, componentInfo.nftId);
         | 
| 396 | 
            +
                        }
         | 
| 397 | 
            +
             | 
| 398 | 
            +
                        componentNftId = componentInfo.nftId;
         | 
| 399 | 
            +
                    } else {
         | 
| 400 | 
            +
             | 
| 433 401 | 
             
                    }
         | 
| 434 402 |  | 
| 435 403 | 
             
                    instance = Instance(instanceInfo.objectAddress);
         | 
| 436 | 
            -
                     | 
| 404 | 
            +
                    
         | 
| 437 405 | 
             
                }
         | 
| 438 406 |  | 
| 439 407 | 
             
                // From IService
         | 
| @@ -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 | 
             
                }
         | 
| @@ -14,7 +14,6 @@ interface IComponents { | |
| 14 14 |  | 
| 15 15 | 
             
                struct ComponentInfo {
         | 
| 16 16 | 
             
                    string name; // component name (needs to be unique per instance)
         | 
| 17 | 
            -
                    NftId productNftId;
         | 
| 18 17 | 
             
                    IERC20Metadata token;
         | 
| 19 18 | 
             
                    TokenHandler tokenHandler;
         | 
| 20 19 | 
             
                    address wallet;
         | 
| @@ -22,8 +21,13 @@ interface IComponents { | |
| 22 21 | 
             
                }
         | 
| 23 22 |  | 
| 24 23 | 
             
                struct ProductInfo {
         | 
| 25 | 
            -
                     | 
| 26 | 
            -
                     | 
| 24 | 
            +
                    bool isProcessingFundedClaims; // custom logic to react to pool events for funded claims
         | 
| 25 | 
            +
                    bool hasDistribution; // flag to indicate if distribution is enabled
         | 
| 26 | 
            +
                    uint8 expectedNumberOfOracles; // expected number of oracles
         | 
| 27 | 
            +
                    uint8 numberOfOracles; // actual number of oracles
         | 
| 28 | 
            +
                    NftId poolNftId; // mandatory
         | 
| 29 | 
            +
                    NftId distributionNftId; // 0..1 (optional)
         | 
| 30 | 
            +
                    NftId [] oracleNftId; // 0..n (optional)
         | 
| 27 31 | 
             
                    Fee productFee; // product fee on net premium
         | 
| 28 32 | 
             
                    Fee processingFee; // product fee on payout amounts        
         | 
| 29 33 | 
             
                    Fee distributionFee; // distribution fee for sales that do not include commissions
         | 
| @@ -35,17 +39,13 @@ interface IComponents { | |
| 35 39 |  | 
| 36 40 |  | 
| 37 41 | 
             
                struct PoolInfo {
         | 
| 38 | 
            -
                     | 
| 42 | 
            +
                    Amount maxBalanceAmount; // max balance amount allowed for pool
         | 
| 39 43 | 
             
                    RoleId bundleOwnerRole; // the required role for bundle owners
         | 
| 40 | 
            -
                    //  | 
| 41 | 
            -
                     | 
| 42 | 
            -
                    bool isInterceptingBundleTransfers; // intercepts nft transfers for bundles
         | 
| 44 | 
            +
                    bool isInterceptingBundleTransfers; // custom logic for bundle nft transfers
         | 
| 45 | 
            +
                    bool isProcessingConfirmedClaims; // custom logic for claims confirmation
         | 
| 43 46 | 
             
                    bool isExternallyManaged; // funding bundles is restricted to book keeping, actual funds may be provided as needed to support payouts
         | 
| 44 47 | 
             
                    bool isVerifyingApplications; // underwriting requires the pool component checks/confirms the applications 
         | 
| 45 48 | 
             
                    UFixed collateralizationLevel; // factor to calculate collateral for sum insurance (default 100%)
         | 
| 46 49 | 
             
                    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 50 | 
             
                }
         | 
| 51 51 | 
             
            }
         | 
| @@ -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
    
    
| @@ -3,6 +3,7 @@ pragma solidity ^0.8.20; | |
| 3 3 |  | 
| 4 4 | 
             
            import {IService} from "../shared/IService.sol";
         | 
| 5 5 | 
             
            import {NftId} from "../type/NftId.sol";
         | 
| 6 | 
            +
            import {ObjectType} from "../type/ObjectType.sol";
         | 
| 6 7 | 
             
            import {RequestId} from "../type/RequestId.sol";
         | 
| 7 8 | 
             
            import {StateId} from "../type/StateId.sol";
         | 
| 8 9 | 
             
            import {Timestamp} from "../type/Timestamp.sol";
         | 
| @@ -17,7 +18,7 @@ interface IOracleService is IService { | |
| 17 18 | 
             
                event LogOracleServiceRequestCancelled(RequestId requestId, NftId requesterNftId);
         | 
| 18 19 |  | 
| 19 20 | 
             
                // create request
         | 
| 20 | 
            -
                error  | 
| 21 | 
            +
                error ErrorOracleServiceProductMismatch(ObjectType callerObjectType, NftId productNft, NftId oracleParentNftId);
         | 
| 21 22 | 
             
                error ErrorOracleServiceExpiryInThePast(Timestamp blockTimestamp, Timestamp expiryAt);
         | 
| 22 23 | 
             
                error ErrorOracleServiceCallbackMethodNameEmpty();
         | 
| 23 24 |  | 
| @@ -2,7 +2,7 @@ | |
| 2 2 | 
             
            pragma solidity ^0.8.20;
         | 
| 3 3 |  | 
| 4 4 | 
             
            import {Amount} from "../type/Amount.sol";
         | 
| 5 | 
            -
            import {COMPONENT, ORACLE} from "../type/ObjectType.sol";
         | 
| 5 | 
            +
            import {COMPONENT, PRODUCT, ORACLE} from "../type/ObjectType.sol";
         | 
| 6 6 | 
             
            import {IAuthorization} from "../authorization/IAuthorization.sol";
         | 
| 7 7 | 
             
            import {IComponentService} from "../shared/IComponentService.sol";
         | 
| 8 8 | 
             
            import {IInstanceLinkedComponent} from "../shared/IInstanceLinkedComponent.sol";
         | 
| @@ -27,15 +27,6 @@ abstract contract Oracle is | |
| 27 27 | 
             
                }
         | 
| 28 28 |  | 
| 29 29 |  | 
| 30 | 
            -
                function register()
         | 
| 31 | 
            -
                    external
         | 
| 32 | 
            -
                    virtual
         | 
| 33 | 
            -
                    onlyOwner()
         | 
| 34 | 
            -
                {
         | 
| 35 | 
            -
                    _getOracleStorage()._componentService.registerOracle();
         | 
| 36 | 
            -
                }
         | 
| 37 | 
            -
             | 
| 38 | 
            -
             | 
| 39 30 | 
             
                function request(
         | 
| 40 31 | 
             
                    RequestId requestId,
         | 
| 41 32 | 
             
                    NftId requesterId,
         | 
| @@ -71,6 +62,7 @@ abstract contract Oracle is | |
| 71 62 | 
             
                    return false;
         | 
| 72 63 | 
             
                }
         | 
| 73 64 |  | 
| 65 | 
            +
                /// @dev Not relevant for oracle components
         | 
| 74 66 | 
             
                function withdrawFees(Amount amount)
         | 
| 75 67 | 
             
                    external
         | 
| 76 68 | 
             
                    virtual
         | 
| @@ -85,12 +77,11 @@ abstract contract Oracle is | |
| 85 77 |  | 
| 86 78 | 
             
                function _initializeOracle(
         | 
| 87 79 | 
             
                    address registry,
         | 
| 88 | 
            -
                    NftId  | 
| 80 | 
            +
                    NftId productNftId,
         | 
| 89 81 | 
             
                    IAuthorization authorization,
         | 
| 90 82 | 
             
                    address initialOwner,
         | 
| 91 83 | 
             
                    string memory name,
         | 
| 92 84 | 
             
                    address token,
         | 
| 93 | 
            -
                    bytes memory registryData, // writeonly data that will saved in the object info record of the registry
         | 
| 94 85 | 
             
                    bytes memory componentData // component specifidc data 
         | 
| 95 86 | 
             
                )
         | 
| 96 87 | 
             
                    internal
         | 
| @@ -99,21 +90,20 @@ abstract contract Oracle is | |
| 99 90 | 
             
                {
         | 
| 100 91 | 
             
                    _initializeInstanceLinkedComponent(
         | 
| 101 92 | 
             
                        registry, 
         | 
| 102 | 
            -
                         | 
| 93 | 
            +
                        productNftId, 
         | 
| 103 94 | 
             
                        name, 
         | 
| 104 95 | 
             
                        token, 
         | 
| 105 96 | 
             
                        ORACLE(), 
         | 
| 106 97 | 
             
                        authorization,
         | 
| 107 98 | 
             
                        true, 
         | 
| 108 99 | 
             
                        initialOwner, 
         | 
| 109 | 
            -
                        registryData, 
         | 
| 110 100 | 
             
                        componentData);
         | 
| 111 101 |  | 
| 112 102 | 
             
                    OracleStorage storage $ = _getOracleStorage();
         | 
| 113 | 
            -
                    $._oracleService = IOracleService(_getServiceAddress(ORACLE())); 
         | 
| 114 103 | 
             
                    $._componentService = IComponentService(_getServiceAddress(COMPONENT())); 
         | 
| 104 | 
            +
                    $._oracleService = IOracleService(_getServiceAddress(ORACLE())); 
         | 
| 115 105 |  | 
| 116 | 
            -
                     | 
| 106 | 
            +
                    _registerInterface(type(IOracleComponent).interfaceId);
         | 
| 117 107 | 
             
                }
         | 
| 118 108 |  | 
| 119 109 |  |