@etherisc/gif-next 0.0.2-e987ccf-894 → 0.0.2-e9c5694-914
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 +1 -1
- 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 +151 -249
- 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 -213
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +141 -198
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +107 -107
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +78 -66
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +29 -0
- 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 +2072 -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 +165 -138
- 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 +310 -83
- 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 +207 -241
- 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/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +132 -230
- 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 +73 -61
- 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 +86 -208
- 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 -216
- 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 +178 -187
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +117 -105
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +53 -0
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +98 -58
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +200 -125
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +109 -203
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +308 -274
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +108 -88
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +71 -152
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +72 -84
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +140 -221
- 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 +288 -188
- 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 +29 -0
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +161 -7
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +141 -11
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +80 -51
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +131 -78
- 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 +258 -195
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +114 -98
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +154 -219
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +87 -91
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/product/Product.sol/Product.json +140 -221
- 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 +285 -33
- 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 +491 -94
- 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 +68 -175
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +351 -263
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +120 -110
- 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 -28
- 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 +73 -61
- 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 +86 -208
- 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 +2 -2
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +2 -2
- package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
- package/artifacts/contracts/staking/IStaking.sol/IStaking.json +82 -29
- 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 +83 -30
- package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
- package/artifacts/contracts/staking/Staking.sol/Staking.json +171 -224
- 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 +102 -87
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +7 -12
- 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 +144 -103
- 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/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 +26 -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 +2 -2
- 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 -39
- 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 +63 -44
- package/contracts/distribution/DistributionServiceManager.sol +6 -6
- package/contracts/distribution/IDistributionComponent.sol +1 -1
- package/contracts/examples/fire/DamageLevel.sol +59 -0
- package/contracts/examples/fire/FirePool.sol +73 -0
- package/contracts/examples/fire/FirePoolAuthorization.sol +34 -0
- package/contracts/examples/fire/FireProduct.sol +415 -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 +23 -31
- package/contracts/instance/InstanceAuthorizationV3.sol +10 -19
- package/contracts/instance/InstanceReader.sol +91 -18
- package/contracts/instance/InstanceService.sol +23 -77
- package/contracts/instance/InstanceServiceManager.sol +6 -7
- package/contracts/instance/InstanceStore.sol +0 -4
- package/contracts/instance/base/ObjectLifecycle.sol +2 -1
- package/contracts/instance/module/IComponents.sol +10 -5
- package/contracts/instance/module/IPolicy.sol +7 -7
- 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 +14 -26
- package/contracts/pool/BasicPoolAuthorization.sol +0 -1
- package/contracts/pool/BundleService.sol +83 -28
- package/contracts/pool/BundleServiceManager.sol +6 -6
- package/contracts/pool/IBundleService.sol +9 -0
- package/contracts/pool/IPoolComponent.sol +18 -8
- package/contracts/pool/IPoolService.sol +21 -14
- package/contracts/pool/Pool.sol +48 -39
- package/contracts/pool/PoolService.sol +121 -86
- package/contracts/pool/PoolServiceManager.sol +4 -4
- package/contracts/product/ApplicationService.sol +20 -10
- 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 +310 -114
- package/contracts/product/ClaimServiceManager.sol +4 -4
- package/contracts/product/IClaimService.sol +30 -7
- package/contracts/product/IPolicyService.sol +12 -5
- package/contracts/product/IPricingService.sol +9 -9
- package/contracts/product/IProductComponent.sol +23 -3
- package/contracts/product/{IProductService.sol → IRiskService.sol} +1 -2
- package/contracts/product/PolicyService.sol +168 -53
- package/contracts/product/PolicyServiceManager.sol +4 -4
- package/contracts/product/PricingService.sol +12 -13
- package/contracts/product/PricingServiceManager.sol +3 -3
- package/contracts/product/Product.sol +104 -55
- 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 +54 -17
- package/contracts/registry/IRegistryService.sol +5 -12
- package/contracts/registry/ITransferInterceptor.sol +1 -2
- package/contracts/registry/Registry.sol +341 -200
- package/contracts/registry/RegistryAdmin.sol +124 -50
- 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 +203 -187
- package/contracts/registry/ServiceAuthorizationV3.sol +14 -19
- package/contracts/shared/Component.sol +29 -32
- package/contracts/shared/ComponentService.sol +241 -137
- package/contracts/shared/ComponentServiceManager.sol +8 -5
- package/contracts/shared/ComponentVerifyingService.sol +22 -13
- package/contracts/shared/ContractLib.sol +38 -0
- package/contracts/shared/IComponent.sol +6 -2
- package/contracts/shared/IComponentService.sol +25 -13
- package/contracts/shared/IInstanceLinkedComponent.sol +2 -17
- 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 +71 -30
- package/contracts/shared/KeyValueStore.sol +1 -1
- package/contracts/shared/Lifecycle.sol +15 -4
- package/contracts/shared/NftOwnable.sol +26 -6
- 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/staking/IStaking.sol +2 -1
- package/contracts/staking/IStakingService.sol +0 -3
- package/contracts/staking/StakeManagerLib.sol +18 -0
- package/contracts/staking/Staking.sol +8 -8
- package/contracts/staking/StakingManager.sol +8 -6
- package/contracts/staking/StakingReader.sol +12 -5
- package/contracts/staking/StakingService.sol +17 -17
- package/contracts/staking/StakingServiceManager.sol +2 -2
- package/contracts/staking/TargetManagerLib.sol +7 -3
- package/contracts/type/Amount.sol +15 -0
- package/contracts/type/ClaimId.sol +6 -1
- package/contracts/type/NftId.sol +1 -0
- package/contracts/type/ObjectType.sol +1 -0
- 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 +8 -0
- package/contracts/type/StateId.sol +15 -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
@@ -23,17 +23,20 @@ interface IClaimService is
|
|
23
23
|
event LogClaimServiceClaimSubmitted(NftId policyNftId, ClaimId claimId, Amount claimAmount);
|
24
24
|
event LogClaimServiceClaimConfirmed(NftId policyNftId, ClaimId claimId, Amount confirmedAmount);
|
25
25
|
event LogClaimServiceClaimDeclined(NftId policyNftId, ClaimId claimId);
|
26
|
+
event LogClaimServiceClaimRevoked(NftId policyNftId, ClaimId claimId);
|
26
27
|
event LogClaimServiceClaimClosed(NftId policyNftId, ClaimId claimId);
|
27
28
|
|
28
|
-
event LogClaimServicePayoutCreated(NftId policyNftId, PayoutId payoutId, Amount amount);
|
29
|
-
event LogClaimServicePayoutProcessed(NftId policyNftId, PayoutId payoutId, Amount amount, address beneficiary, Amount netAmount);
|
29
|
+
event LogClaimServicePayoutCreated(NftId policyNftId, PayoutId payoutId, Amount amount, address beneficiary);
|
30
|
+
event LogClaimServicePayoutProcessed(NftId policyNftId, PayoutId payoutId, Amount amount, address beneficiary, Amount netAmount, Amount processingFeeAmount);
|
31
|
+
error ErrorClaimServiceBeneficiarySet(NftId policyNftId, PayoutId payoutId, address beneficiary);
|
30
32
|
|
31
33
|
error ErrorClaimServicePolicyProductMismatch(NftId policyNftId, NftId expectedProduct, NftId actualProduct);
|
32
34
|
error ErrorClaimServicePolicyNotOpen(NftId policyNftId);
|
33
35
|
error ErrorClaimServiceClaimExceedsSumInsured(NftId policyNftId, Amount sumInsured, Amount payoutsIncludingClaimAmount);
|
36
|
+
error ErrorClaimServiceBeneficiaryIsZero(NftId policyNftId, ClaimId claimId);
|
34
37
|
error ErrorClaimsServicePayoutAmountIsZero(NftId policyNftId, PayoutId payoutId);
|
35
38
|
|
36
|
-
error ErrorClaimServiceClaimWithOpenPayouts(NftId policyNftId, ClaimId claimId,
|
39
|
+
error ErrorClaimServiceClaimWithOpenPayouts(NftId policyNftId, ClaimId claimId, uint24 openPayouts);
|
37
40
|
error ErrorClaimServiceClaimWithMissingPayouts(NftId policyNftId, ClaimId claimId, Amount claimAmount, Amount paidAmount);
|
38
41
|
error ErrorClaimServiceClaimNotInExpectedState(NftId policyNftId, ClaimId claimId, StateId expectedState, StateId actualState);
|
39
42
|
|
@@ -47,9 +50,6 @@ interface IClaimService is
|
|
47
50
|
) external returns (ClaimId claimId);
|
48
51
|
|
49
52
|
|
50
|
-
// TODO add claim revoke functionality
|
51
|
-
|
52
|
-
|
53
53
|
/// @dev declines the specified claim
|
54
54
|
/// function can only be called by product, policy needs to match with calling product
|
55
55
|
function decline(
|
@@ -59,6 +59,14 @@ interface IClaimService is
|
|
59
59
|
) external;
|
60
60
|
|
61
61
|
|
62
|
+
/// @dev revokes the specified claim
|
63
|
+
/// function can only be called by product, policy needs to match with calling product
|
64
|
+
function revoke(
|
65
|
+
NftId policyNftId,
|
66
|
+
ClaimId claimId
|
67
|
+
) external;
|
68
|
+
|
69
|
+
|
62
70
|
/// @dev confirms the specified claim and specifies the payout amount
|
63
71
|
/// function can only be called by product, policy needs to match with calling product
|
64
72
|
function confirm(
|
@@ -77,7 +85,8 @@ interface IClaimService is
|
|
77
85
|
) external;
|
78
86
|
|
79
87
|
|
80
|
-
/// @dev
|
88
|
+
/// @dev Creates a new payout for the specified claim.
|
89
|
+
/// The beneficiary is the holder of the policy NFT
|
81
90
|
/// returns the id of the newly created payout, this id is unique for the specified policy
|
82
91
|
/// function can only be called by product, policy needs to match with calling product
|
83
92
|
function createPayout(
|
@@ -90,6 +99,20 @@ interface IClaimService is
|
|
90
99
|
returns (PayoutId payoutId);
|
91
100
|
|
92
101
|
|
102
|
+
/// @dev Creates a new payout for the specified claim and beneficiary.
|
103
|
+
/// returns the id of the newly created payout, this id is unique for the specified policy
|
104
|
+
/// function can only be called by product, policy needs to match with calling product
|
105
|
+
function createPayoutForBeneficiary(
|
106
|
+
NftId policyNftId,
|
107
|
+
ClaimId claimId,
|
108
|
+
Amount amount,
|
109
|
+
address beneficiary,
|
110
|
+
bytes memory data
|
111
|
+
)
|
112
|
+
external
|
113
|
+
returns (PayoutId payoutId);
|
114
|
+
|
115
|
+
|
93
116
|
/// @dev processes the specified payout
|
94
117
|
/// this includes moving the payout token to the beneficiary (default: policy holder)
|
95
118
|
/// function can only be called by product, policy needs to match with calling product
|
@@ -4,12 +4,20 @@ pragma solidity ^0.8.20;
|
|
4
4
|
import {IService} from "../shared/IService.sol";
|
5
5
|
|
6
6
|
import {Amount} from "../type/Amount.sol";
|
7
|
+
import {IInstance} from "../instance/IInstance.sol";
|
7
8
|
import {NftId} from "../type/NftId.sol";
|
8
9
|
import {StateId} from "../type/StateId.sol";
|
9
10
|
import {Timestamp} from "../type/Timestamp.sol";
|
10
11
|
|
11
12
|
interface IPolicyService is IService {
|
12
13
|
|
14
|
+
event LogPolicyServicePolicyCreated(NftId policyNftId, Amount premiumAmount, Timestamp activatedAt);
|
15
|
+
event LogPolicyServicePolicyDeclined(NftId policyNftId);
|
16
|
+
event LogPolicyServicePolicyPremiumCollected(NftId policyNftId, Amount premiumAmount);
|
17
|
+
event LogPolicyServicePolicyActivated(NftId policyNftId, Timestamp activatedAt);
|
18
|
+
event LogPolicyServicePolicyExpirationUpdated(NftId policyNftId, Timestamp originalExpiredAt, Timestamp expiredAt);
|
19
|
+
event LogPolicyServicePolicyClosed(NftId policyNftId);
|
20
|
+
|
13
21
|
error ErrorPolicyServicePolicyProductMismatch(NftId applicationNftId, NftId expectedProductNftId, NftId actualProductNftId);
|
14
22
|
error ErrorPolicyServicePolicyStateNotApplied(NftId applicationNftId);
|
15
23
|
error ErrorPolicyServicePolicyStateNotCollateralized(NftId applicationNftId);
|
@@ -19,11 +27,11 @@ interface IPolicyService is IService {
|
|
19
27
|
error ErrorPolicyServiceAllowanceInsufficient(address policyOwner, address tokenHandler, uint256 premiumAmount, uint256 allowance);
|
20
28
|
|
21
29
|
error ErrorPolicyServiceInsufficientAllowance(address customer, address tokenHandlerAddress, uint256 amount);
|
22
|
-
error ErrorPolicyServicePremiumAlreadyPaid(NftId policyNftId
|
30
|
+
error ErrorPolicyServicePremiumAlreadyPaid(NftId policyNftId);
|
23
31
|
error ErrorPolicyServicePolicyNotActivated(NftId policyNftId);
|
24
32
|
error ErrorPolicyServicePolicyAlreadyClosed(NftId policyNftId);
|
25
33
|
error ErrorPolicyServicePolicyNotActive(NftId policyNftId, StateId state);
|
26
|
-
error
|
34
|
+
error ErrorPolicyServicePremiumNotPaid(NftId policyNftId, Amount premiumAmount);
|
27
35
|
error ErrorPolicyServiceOpenClaims(NftId policyNftId, uint16 openClaimsCount);
|
28
36
|
error ErrorPolicyServicePolicyHasNotExpired(NftId policyNftId, Timestamp expiredAt);
|
29
37
|
error ErrorPolicyServicePolicyExpirationTooLate(NftId policyNftId, Timestamp upperLimit, Timestamp expiredAt);
|
@@ -32,9 +40,6 @@ interface IPolicyService is IService {
|
|
32
40
|
error ErrorPolicyServicePremiumMismatch(NftId policyNftId, Amount expectedPremiumAmount, Amount recalculatedPremiumAmount);
|
33
41
|
error ErrorPolicyServiceTransferredPremiumMismatch(NftId policyNftId, Amount expectedPremiumAmount, Amount transferredPremiumAmount);
|
34
42
|
|
35
|
-
event LogPolicyServicePolicyDeclined(NftId policyNftId);
|
36
|
-
event LogPolicyServicePolicyExpirationUpdated(NftId policyNftId, Timestamp expiredAt);
|
37
|
-
|
38
43
|
/// @dev creates the policy from {applicationNftId}.
|
39
44
|
/// After successful completion of the function the policy can be referenced using the application NftId.
|
40
45
|
/// Locks the sum insured amount in the pool, but does not transfer tokens. Call collectPremium to transfer tokens.
|
@@ -65,6 +70,8 @@ interface IPolicyService is IService {
|
|
65
70
|
/// @return expiredAt the effective expiry date
|
66
71
|
function expire(NftId policyNftId, Timestamp expireAt) external returns (Timestamp expiredAt);
|
67
72
|
|
73
|
+
function expirePolicy(IInstance instance, NftId policyNftId, Timestamp expireAt) external returns (Timestamp expiredAt);
|
74
|
+
|
68
75
|
/// @dev closes the specified policy and sets the closed data in the policy metadata
|
69
76
|
/// a policy can only be closed when it has been expired. in addition, it must not have any open claims
|
70
77
|
/// this function can only be called by a product. the policy needs to match with the calling product
|
@@ -14,15 +14,15 @@ interface IPricingService is IService
|
|
14
14
|
{
|
15
15
|
|
16
16
|
error ErrorPricingServiceTargetWalletAmountsMismatch();
|
17
|
-
error
|
18
|
-
error
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
17
|
+
error ErrorPricingServiceBundlePoolMismatch(NftId bundleNftId, NftId bundlePoolNftId, NftId poolNftId);
|
18
|
+
error ErrorPricingServiceFeeCalculationMismatch(
|
19
|
+
Amount distributionFeeFixAmount,
|
20
|
+
Amount distributionFeeVarAmount,
|
21
|
+
Amount distributionOwnerFeeFixAmount,
|
22
|
+
Amount distributionOwnerFeeVarAmount,
|
23
|
+
Amount commissionAmount,
|
24
|
+
Amount discountAmount
|
25
|
+
);
|
26
26
|
|
27
27
|
function calculatePremium(
|
28
28
|
NftId productNftId,
|
@@ -2,9 +2,11 @@
|
|
2
2
|
pragma solidity ^0.8.20;
|
3
3
|
|
4
4
|
import {Amount} from "../type/Amount.sol";
|
5
|
+
import {ClaimId} from "../type/ClaimId.sol";
|
5
6
|
import {IInstanceLinkedComponent} from "../shared/IInstanceLinkedComponent.sol";
|
6
7
|
import {IComponents} from "../instance/module/IComponents.sol";
|
7
8
|
import {NftId} from "../type/NftId.sol";
|
9
|
+
import {ObjectType} from "../type/ObjectType.sol";
|
8
10
|
import {ReferralId} from "../type/Referral.sol";
|
9
11
|
import {RiskId} from "../type/RiskId.sol";
|
10
12
|
import {Seconds} from "../type/Seconds.sol";
|
@@ -13,6 +15,23 @@ interface IProductComponent is
|
|
13
15
|
IInstanceLinkedComponent
|
14
16
|
{
|
15
17
|
|
18
|
+
// @dev register a new component for this product cluster.
|
19
|
+
function registerComponent(address component)
|
20
|
+
external
|
21
|
+
returns (NftId componentNftId);
|
22
|
+
|
23
|
+
/// @dev Callback function to inform product compnent about arrival of funding for a claim.
|
24
|
+
/// The callback is called by the pool service after the corresponding pool triggers this function.
|
25
|
+
/// The callback is only called when the product's property isProcessingFundedClaims is set.
|
26
|
+
function processFundedClaim(
|
27
|
+
NftId policyNftId,
|
28
|
+
ClaimId claimId,
|
29
|
+
Amount availableAmount
|
30
|
+
) external;
|
31
|
+
|
32
|
+
|
33
|
+
/// @dev Calculates the premium amount for the provided application data.
|
34
|
+
/// The returned premium amounts takes into account potential discounts and fees.
|
16
35
|
function calculatePremium(
|
17
36
|
Amount sumInsuredAmount,
|
18
37
|
RiskId riskId,
|
@@ -22,6 +41,10 @@ interface IProductComponent is
|
|
22
41
|
ReferralId referralId
|
23
42
|
) external view returns (Amount premiumAmount);
|
24
43
|
|
44
|
+
|
45
|
+
/// @dev Calculates the net premium amount for the provided application data.
|
46
|
+
/// The returned net premium amounts only covers the cost of collateralizing the application.
|
47
|
+
/// This amount purely depends on the use case specific risk and does not include any fees/commission.
|
25
48
|
function calculateNetPremium(
|
26
49
|
Amount sumInsuredAmount,
|
27
50
|
RiskId riskId,
|
@@ -29,9 +52,6 @@ interface IProductComponent is
|
|
29
52
|
bytes memory applicationData
|
30
53
|
) external view returns (Amount netPremiumAmount);
|
31
54
|
|
32
|
-
function getPoolNftId() external view returns (NftId poolNftId);
|
33
|
-
function getDistributionNftId() external view returns (NftId distributionNftId);
|
34
|
-
|
35
55
|
|
36
56
|
/// @dev returns initial pool specific infos for this pool
|
37
57
|
function getInitialProductInfo() external view returns (IComponents.ProductInfo memory info);
|
@@ -12,8 +12,7 @@ import {Timestamp} from "../type/Timestamp.sol";
|
|
12
12
|
import {UFixed} from "../type/UFixed.sol";
|
13
13
|
import {Fee} from "../type/Fee.sol";
|
14
14
|
|
15
|
-
|
16
|
-
interface IProductService is IService {
|
15
|
+
interface IRiskService is IService {
|
17
16
|
|
18
17
|
function createRisk(
|
19
18
|
RiskId riskId,
|
@@ -14,13 +14,14 @@ import {TokenHandler} from "../shared/TokenHandler.sol";
|
|
14
14
|
import {Amount, AmountLib} from "../type/Amount.sol";
|
15
15
|
import {Timestamp, TimestampLib, zeroTimestamp} from "../type/Timestamp.sol";
|
16
16
|
import {ObjectType, APPLICATION, COMPONENT, DISTRIBUTION, PRODUCT, POOL, POLICY, BUNDLE, CLAIM, PRICE} from "../type/ObjectType.sol";
|
17
|
-
import {APPLIED, COLLATERALIZED, KEEP_STATE, CLOSED, DECLINED} from "../type/StateId.sol";
|
18
|
-
import {NftId
|
17
|
+
import {APPLIED, COLLATERALIZED, KEEP_STATE, CLOSED, DECLINED, PAID} from "../type/StateId.sol";
|
18
|
+
import {NftId} from "../type/NftId.sol";
|
19
19
|
import {ReferralId} from "../type/Referral.sol";
|
20
20
|
import {StateId} from "../type/StateId.sol";
|
21
21
|
import {VersionPart} from "../type/Version.sol";
|
22
22
|
|
23
23
|
import {ComponentVerifyingService} from "../shared/ComponentVerifyingService.sol";
|
24
|
+
import {ContractLib} from "../shared/ContractLib.sol";
|
24
25
|
import {IApplicationService} from "./IApplicationService.sol";
|
25
26
|
import {IBundleService} from "../pool/IBundleService.sol";
|
26
27
|
import {IClaimService} from "./IClaimService.sol";
|
@@ -28,6 +29,7 @@ import {IComponentService} from "../shared/IComponentService.sol";
|
|
28
29
|
import {IDistributionService} from "../distribution/IDistributionService.sol";
|
29
30
|
import {InstanceReader} from "../instance/InstanceReader.sol";
|
30
31
|
import {InstanceStore} from "../instance/InstanceStore.sol";
|
32
|
+
import {IPolicyHolder} from "../shared/IPolicyHolder.sol";
|
31
33
|
import {IPolicyService} from "./IPolicyService.sol";
|
32
34
|
import {IPoolService} from "../pool/IPoolService.sol";
|
33
35
|
import {IPricingService} from "./IPricingService.sol";
|
@@ -36,19 +38,11 @@ contract PolicyService is
|
|
36
38
|
ComponentVerifyingService,
|
37
39
|
IPolicyService
|
38
40
|
{
|
39
|
-
using NftIdLib for NftId;
|
40
|
-
using TimestampLib for Timestamp;
|
41
|
-
|
42
|
-
IApplicationService internal _applicationService;
|
43
41
|
IComponentService internal _componentService;
|
44
|
-
IBundleService internal _bundleService;
|
45
|
-
IClaimService internal _claimService;
|
46
42
|
IDistributionService internal _distributionService;
|
47
43
|
IPoolService internal _poolService;
|
48
44
|
IPricingService internal _pricingService;
|
49
45
|
|
50
|
-
event LogProductServiceSender(address sender);
|
51
|
-
|
52
46
|
function _initialize(
|
53
47
|
address owner,
|
54
48
|
bytes memory data
|
@@ -58,23 +52,19 @@ contract PolicyService is
|
|
58
52
|
initializer
|
59
53
|
{
|
60
54
|
(
|
61
|
-
address registryAddress
|
62
|
-
//address managerAddress
|
55
|
+
address registryAddress,
|
63
56
|
address authority
|
64
|
-
) = abi.decode(data, (address, address
|
57
|
+
) = abi.decode(data, (address, address));
|
65
58
|
|
66
|
-
|
59
|
+
_initializeService(registryAddress, authority, owner);
|
67
60
|
|
68
61
|
VersionPart majorVersion = getVersion().toMajorPart();
|
69
|
-
_applicationService = IApplicationService(getRegistry().getServiceAddress(APPLICATION(), majorVersion));
|
70
|
-
_bundleService = IBundleService(getRegistry().getServiceAddress(BUNDLE(), majorVersion));
|
71
62
|
_componentService = IComponentService(getRegistry().getServiceAddress(COMPONENT(), majorVersion));
|
72
|
-
_claimService = IClaimService(getRegistry().getServiceAddress(CLAIM(), majorVersion));
|
73
63
|
_poolService = IPoolService(getRegistry().getServiceAddress(POOL(), majorVersion));
|
74
64
|
_distributionService = IDistributionService(getRegistry().getServiceAddress(DISTRIBUTION(), majorVersion));
|
75
65
|
_pricingService = IPricingService(getRegistry().getServiceAddress(PRICE(), majorVersion));
|
76
66
|
|
77
|
-
|
67
|
+
_registerInterface(type(IPolicyService).interfaceId);
|
78
68
|
}
|
79
69
|
|
80
70
|
|
@@ -82,8 +72,11 @@ contract PolicyService is
|
|
82
72
|
NftId applicationNftId // = policyNftId
|
83
73
|
)
|
84
74
|
external
|
85
|
-
virtual
|
75
|
+
virtual
|
76
|
+
nonReentrant()
|
86
77
|
{
|
78
|
+
_checkNftType(applicationNftId, POLICY());
|
79
|
+
|
87
80
|
(NftId productNftId,, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
|
88
81
|
InstanceReader instanceReader = instance.getInstanceReader();
|
89
82
|
|
@@ -117,8 +110,11 @@ contract PolicyService is
|
|
117
110
|
Timestamp activateAt
|
118
111
|
)
|
119
112
|
external
|
120
|
-
virtual
|
113
|
+
virtual
|
114
|
+
nonReentrant()
|
121
115
|
{
|
116
|
+
_checkNftType(applicationNftId, POLICY());
|
117
|
+
|
122
118
|
// check caller is registered product
|
123
119
|
(NftId productNftId,, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
|
124
120
|
InstanceReader instanceReader = instance.getInstanceReader();
|
@@ -177,16 +173,21 @@ contract PolicyService is
|
|
177
173
|
// update referral counter
|
178
174
|
{
|
179
175
|
IComponents.ProductInfo memory productInfo = instanceReader.getProductInfo(productNftId);
|
180
|
-
|
181
|
-
|
182
|
-
|
176
|
+
|
177
|
+
if (! productInfo.distributionNftId.eqz()) { // only call distribution service if a distribution component is connected to the product
|
178
|
+
_distributionService.processReferral(
|
179
|
+
productInfo.distributionNftId,
|
180
|
+
applicationInfo.referralId);
|
181
|
+
}
|
183
182
|
}
|
184
|
-
|
185
|
-
// TODO add calling pool contract if it needs to validate application
|
186
183
|
|
187
|
-
//
|
184
|
+
// log policy creation before interactions with token and policy holder
|
185
|
+
emit LogPolicyServicePolicyCreated(applicationNftId, premium.premiumAmount, activateAt);
|
186
|
+
|
187
|
+
// TODO add calling pool contract if it needs to validate application
|
188
188
|
|
189
|
-
//
|
189
|
+
// callback to policy holder if applicable
|
190
|
+
_policyHolderPolicyActivated(applicationNftId, activateAt);
|
190
191
|
}
|
191
192
|
|
192
193
|
|
@@ -197,7 +198,10 @@ contract PolicyService is
|
|
197
198
|
)
|
198
199
|
external
|
199
200
|
virtual
|
201
|
+
nonReentrant()
|
200
202
|
{
|
203
|
+
_checkNftType(policyNftId, POLICY());
|
204
|
+
|
201
205
|
// check caller is registered product
|
202
206
|
(,, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
|
203
207
|
InstanceReader instanceReader = instance.getInstanceReader();
|
@@ -208,16 +212,14 @@ contract PolicyService is
|
|
208
212
|
revert ErrorPolicyServicePolicyStateNotCollateralized(policyNftId);
|
209
213
|
}
|
210
214
|
|
211
|
-
IPolicy.PolicyInfo memory policyInfo = instanceReader.getPolicyInfo(policyNftId);
|
212
|
-
|
213
215
|
// check if premium is already collected
|
214
|
-
if (
|
215
|
-
revert ErrorPolicyServicePremiumAlreadyPaid(policyNftId
|
216
|
+
if (instanceReader.getPremiumInfoState(policyNftId) == PAID()) {
|
217
|
+
revert ErrorPolicyServicePremiumAlreadyPaid(policyNftId);
|
216
218
|
}
|
217
219
|
|
220
|
+
IPolicy.PolicyInfo memory policyInfo = instanceReader.getPolicyInfo(policyNftId);
|
218
221
|
IPolicy.PremiumInfo memory premium = instanceReader.getPremiumInfo(policyNftId);
|
219
|
-
|
220
|
-
|
222
|
+
|
221
223
|
_processPremium(
|
222
224
|
instance,
|
223
225
|
policyNftId,
|
@@ -230,16 +232,22 @@ contract PolicyService is
|
|
230
232
|
}
|
231
233
|
|
232
234
|
instance.getInstanceStore().updatePolicy(policyNftId, policyInfo, KEEP_STATE());
|
235
|
+
instance.getInstanceStore().updatePremiumState(policyNftId, PAID());
|
233
236
|
|
234
|
-
//
|
237
|
+
// log premium collection before interactions with token
|
238
|
+
emit LogPolicyServicePolicyPremiumCollected(policyNftId, premium.premiumAmount);
|
235
239
|
|
236
240
|
_transferFunds(instanceReader, policyNftId, policyInfo.productNftId, premium);
|
237
|
-
|
238
|
-
// TODO: add callback IPolicyHolder.policyActivated() if applicable
|
239
241
|
}
|
240
242
|
|
241
243
|
/// @inheritdoc IPolicyService
|
242
|
-
function activate(NftId policyNftId, Timestamp activateAt)
|
244
|
+
function activate(NftId policyNftId, Timestamp activateAt)
|
245
|
+
external
|
246
|
+
virtual
|
247
|
+
nonReentrant()
|
248
|
+
{
|
249
|
+
_checkNftType(policyNftId, POLICY());
|
250
|
+
|
243
251
|
// check caller is registered product
|
244
252
|
(,, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
|
245
253
|
InstanceReader instanceReader = instance.getInstanceReader();
|
@@ -249,9 +257,11 @@ contract PolicyService is
|
|
249
257
|
|
250
258
|
instance.getInstanceStore().updatePolicy(policyNftId, policyInfo, KEEP_STATE());
|
251
259
|
|
252
|
-
//
|
260
|
+
// log policy activation before interactions with policy holder
|
261
|
+
emit LogPolicyServicePolicyActivated(policyNftId, activateAt);
|
253
262
|
|
254
|
-
//
|
263
|
+
// callback to policy holder if applicable
|
264
|
+
_policyHolderPolicyActivated(policyNftId, activateAt);
|
255
265
|
}
|
256
266
|
|
257
267
|
|
@@ -261,15 +271,16 @@ contract PolicyService is
|
|
261
271
|
Timestamp expireAt
|
262
272
|
)
|
263
273
|
external
|
264
|
-
override
|
265
274
|
virtual
|
275
|
+
nonReentrant()
|
266
276
|
returns (Timestamp expiredAt)
|
267
277
|
{
|
268
|
-
(
|
269
|
-
InstanceReader instanceReader = instance.getInstanceReader();
|
278
|
+
_checkNftType(policyNftId, POLICY());
|
270
279
|
|
280
|
+
(NftId productNftId,, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
|
281
|
+
|
271
282
|
// check policy matches with calling product
|
272
|
-
IPolicy.PolicyInfo memory policyInfo =
|
283
|
+
IPolicy.PolicyInfo memory policyInfo = instance.getInstanceReader().getPolicyInfo(policyNftId);
|
273
284
|
if(policyInfo.productNftId != productNftId) {
|
274
285
|
revert ErrorPolicyServicePolicyProductMismatch(
|
275
286
|
policyNftId,
|
@@ -277,8 +288,46 @@ contract PolicyService is
|
|
277
288
|
productNftId);
|
278
289
|
}
|
279
290
|
|
291
|
+
return _expire(
|
292
|
+
instance,
|
293
|
+
policyNftId,
|
294
|
+
expireAt
|
295
|
+
);
|
296
|
+
}
|
297
|
+
|
298
|
+
/// @inheritdoc IPolicyService
|
299
|
+
function expirePolicy(
|
300
|
+
IInstance instance,
|
301
|
+
NftId policyNftId,
|
302
|
+
Timestamp expireAt
|
303
|
+
)
|
304
|
+
external
|
305
|
+
virtual
|
306
|
+
nonReentrant()
|
307
|
+
returns (Timestamp expiredAt)
|
308
|
+
{
|
309
|
+
_checkNftType(policyNftId, POLICY());
|
310
|
+
|
311
|
+
return _expire(
|
312
|
+
instance,
|
313
|
+
policyNftId,
|
314
|
+
expireAt
|
315
|
+
);
|
316
|
+
}
|
317
|
+
|
318
|
+
function _expire(
|
319
|
+
IInstance instance,
|
320
|
+
NftId policyNftId,
|
321
|
+
Timestamp expireAt
|
322
|
+
)
|
323
|
+
internal
|
324
|
+
returns (Timestamp expiredAt)
|
325
|
+
{
|
326
|
+
InstanceReader instanceReader = instance.getInstanceReader();
|
327
|
+
|
280
328
|
// check policy is active
|
281
329
|
StateId policyState = instanceReader.getPolicyState(policyNftId);
|
330
|
+
IPolicy.PolicyInfo memory policyInfo = instance.getInstanceReader().getPolicyInfo(policyNftId);
|
282
331
|
if (!_policyHasBeenActivated(policyState, policyInfo)) {
|
283
332
|
revert ErrorPolicyServicePolicyNotActive(policyNftId, policyState);
|
284
333
|
}
|
@@ -300,12 +349,14 @@ contract PolicyService is
|
|
300
349
|
}
|
301
350
|
|
302
351
|
// update policyInfo with new expiredAt timestamp
|
352
|
+
Timestamp originalExpiredAt = policyInfo.expiredAt;
|
303
353
|
policyInfo.expiredAt = expiredAt;
|
304
354
|
instance.getInstanceStore().updatePolicy(policyNftId, policyInfo, KEEP_STATE());
|
305
355
|
|
306
|
-
emit LogPolicyServicePolicyExpirationUpdated(policyNftId, expiredAt);
|
356
|
+
emit LogPolicyServicePolicyExpirationUpdated(policyNftId, originalExpiredAt, expiredAt);
|
307
357
|
|
308
|
-
//
|
358
|
+
// callback to policy holder if applicable
|
359
|
+
_policyHolderPolicyExpired(policyNftId, expiredAt);
|
309
360
|
}
|
310
361
|
|
311
362
|
|
@@ -313,8 +364,11 @@ contract PolicyService is
|
|
313
364
|
NftId policyNftId
|
314
365
|
)
|
315
366
|
external
|
316
|
-
|
367
|
+
virtual
|
368
|
+
nonReentrant()
|
317
369
|
{
|
370
|
+
_checkNftType(policyNftId, POLICY());
|
371
|
+
|
318
372
|
(,, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
|
319
373
|
InstanceReader instanceReader = instance.getInstanceReader();
|
320
374
|
|
@@ -337,8 +391,8 @@ contract PolicyService is
|
|
337
391
|
|
338
392
|
// TODO consider to allow for underpaid premiums (with the effects of reducing max payouts accordingly)
|
339
393
|
// TODO consider to remove requirement for fully paid premiums altogether
|
340
|
-
if (!
|
341
|
-
revert
|
394
|
+
if (! instanceReader.getPremiumInfoState(policyNftId).eq(PAID())) {
|
395
|
+
revert ErrorPolicyServicePremiumNotPaid(policyNftId, policyInfo.premiumAmount);
|
342
396
|
}
|
343
397
|
|
344
398
|
// release (remaining) collateral that was blocked by policy
|
@@ -354,7 +408,7 @@ contract PolicyService is
|
|
354
408
|
policyInfo.closedAt = TimestampLib.blockTimestamp();
|
355
409
|
instance.getInstanceStore().updatePolicy(policyNftId, policyInfo, CLOSED());
|
356
410
|
|
357
|
-
|
411
|
+
emit LogPolicyServicePolicyClosed(policyNftId);
|
358
412
|
}
|
359
413
|
|
360
414
|
|
@@ -442,10 +496,12 @@ contract PolicyService is
|
|
442
496
|
premium.productFeeVarAmount + premium.productFeeFixAmount);
|
443
497
|
|
444
498
|
// update distribution fees and distributor commission and pool fees
|
445
|
-
|
446
|
-
|
447
|
-
|
448
|
-
|
499
|
+
if (!distributionNftId.eqz()) { // only call distribution service if a distribution component is connected to the product
|
500
|
+
_distributionService.processSale(
|
501
|
+
distributionNftId,
|
502
|
+
referralId,
|
503
|
+
premium);
|
504
|
+
}
|
449
505
|
|
450
506
|
// update pool and bundle fees
|
451
507
|
_poolService.processSale(
|
@@ -528,6 +584,64 @@ contract PolicyService is
|
|
528
584
|
}
|
529
585
|
|
530
586
|
|
587
|
+
function _policyHolderPolicyActivated(
|
588
|
+
NftId policyNftId,
|
589
|
+
Timestamp activateAt
|
590
|
+
)
|
591
|
+
internal
|
592
|
+
virtual
|
593
|
+
{
|
594
|
+
// immediately return if policy is not activated
|
595
|
+
if (activateAt.eqz()) {
|
596
|
+
return;
|
597
|
+
}
|
598
|
+
|
599
|
+
// get policy holder address
|
600
|
+
IPolicyHolder policyHolder = _getPolicyHolder(policyNftId);
|
601
|
+
|
602
|
+
// execute callback if policy holder implements IPolicyHolder
|
603
|
+
if (address(policyHolder) != address(0)) {
|
604
|
+
policyHolder.policyActivated(policyNftId, activateAt);
|
605
|
+
}
|
606
|
+
}
|
607
|
+
|
608
|
+
|
609
|
+
function _policyHolderPolicyExpired(
|
610
|
+
NftId policyNftId,
|
611
|
+
Timestamp expiredAt
|
612
|
+
)
|
613
|
+
internal
|
614
|
+
virtual
|
615
|
+
{
|
616
|
+
// immediately return if policy is not activated
|
617
|
+
if (expiredAt.eqz()) {
|
618
|
+
return;
|
619
|
+
}
|
620
|
+
|
621
|
+
// get policy holder address
|
622
|
+
IPolicyHolder policyHolder = _getPolicyHolder(policyNftId);
|
623
|
+
|
624
|
+
// execute callback if policy holder implements IPolicyHolder
|
625
|
+
if (address(policyHolder) != address(0)) {
|
626
|
+
policyHolder.policyExpired(policyNftId, expiredAt);
|
627
|
+
}
|
628
|
+
}
|
629
|
+
|
630
|
+
|
631
|
+
function _getPolicyHolder(NftId policyNftId)
|
632
|
+
internal
|
633
|
+
view
|
634
|
+
returns (IPolicyHolder policyHolder)
|
635
|
+
{
|
636
|
+
address policyHolderAddress = getRegistry().ownerOf(policyNftId);
|
637
|
+
policyHolder = IPolicyHolder(policyHolderAddress);
|
638
|
+
|
639
|
+
if (!ContractLib.isPolicyHolder(policyHolderAddress)) {
|
640
|
+
policyHolder = IPolicyHolder(address(0));
|
641
|
+
}
|
642
|
+
}
|
643
|
+
|
644
|
+
|
531
645
|
function _getTokenHandler(
|
532
646
|
InstanceReader instanceReader,
|
533
647
|
NftId productNftId
|
@@ -542,6 +656,7 @@ contract PolicyService is
|
|
542
656
|
tokenHandler = instanceReader.getComponentInfo(productNftId).tokenHandler;
|
543
657
|
}
|
544
658
|
|
659
|
+
|
545
660
|
function _getDistributionNftAndWallets(
|
546
661
|
InstanceReader instanceReader,
|
547
662
|
NftId productNftId
|
@@ -12,14 +12,14 @@ contract PolicyServiceManager is ProxyManager {
|
|
12
12
|
/// @dev initializes proxy manager with product 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
19
|
PolicyService svc = new PolicyService{salt: salt}();
|
21
|
-
bytes memory data = abi.encode(
|
22
|
-
IVersionable versionable =
|
20
|
+
bytes memory data = abi.encode(registry, authority);
|
21
|
+
IVersionable versionable = initialize(
|
22
|
+
registry,
|
23
23
|
address(svc),
|
24
24
|
data,
|
25
25
|
salt);
|