@etherisc/gif-next 0.0.2-bb1081a-994 → 0.0.2-bc0a9a8-101
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 +10 -14
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +4 -0
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +1416 -0
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +4 -0
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +1349 -0
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +818 -0
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
- package/artifacts/contracts/{components/IPoolComponent.sol/IPoolComponent.json → distribution/IDistributionComponent.sol/IDistributionComponent.json} +398 -276
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +4 -0
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +814 -0
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +1 -1
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +68 -54
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +268 -1576
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +296 -211
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +455 -2542
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +708 -0
- package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +204 -0
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +609 -425
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +464 -375
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +368 -107
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +3458 -0
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +4 -0
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +318 -0
- package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +4 -0
- package/artifacts/contracts/instance/{Cloneable.sol → base/Cloneable.sol}/Cloneable.json +6 -1
- package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +4 -0
- package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +256 -0
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +25 -150
- package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
- package/artifacts/contracts/instance/module/{ISetup.sol/ISetup.json → IComponents.sol/IComponents.json} +2 -2
- 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 +4 -0
- package/artifacts/contracts/mock/Dip.sol/Dip.json +376 -0
- package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +4 -0
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +1105 -0
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +746 -0
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
- package/artifacts/contracts/{instance/service → pool}/IBundleService.sol/IBundleService.json +256 -346
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
- package/artifacts/contracts/{components/Pool.sol/Pool.json → pool/IPoolComponent.sol/IPoolComponent.json} +448 -290
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +1065 -0
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
- package/artifacts/contracts/pool/Pool.sol/Pool.json +1565 -0
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1432 -0
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +738 -0
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +834 -0
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +722 -0
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1278 -0
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +810 -0
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +4 -0
- package/artifacts/contracts/{instance/service/IProductService.sol/IProductService.json → product/IApplicationService.sol/IApplicationService.json} +203 -235
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +759 -0
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
- package/artifacts/contracts/{instance/service → product}/IPolicyService.sol/IPolicyService.json +244 -303
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +4 -0
- package/artifacts/contracts/{instance/service/IPoolService.sol/IPoolService.json → product/IPricingService.sol/IPricingService.json} +263 -221
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
- package/artifacts/contracts/{components/Product.sol/Product.json → product/IProductComponent.sol/IProductComponent.json} +370 -281
- package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +4 -0
- package/artifacts/contracts/{instance/service/IDistributionService.sol/IDistributionService.json → product/IProductService.sol/IProductService.json} +116 -170
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1146 -0
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +754 -0
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +983 -0
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +778 -0
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
- package/artifacts/contracts/{components/IProductComponent.sol/IProductComponent.json → product/Product.sol/Product.json} +822 -220
- package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +4 -0
- package/artifacts/contracts/product/ProductService.sol/ProductService.json +679 -0
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +694 -0
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +15 -2
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +203 -21
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +349 -220
- package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
- package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +18 -0
- package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
- package/artifacts/contracts/registry/Registry.sol/Registry.json +440 -36
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +407 -0
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +480 -265
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +340 -95
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +834 -89
- package/artifacts/contracts/registry/ServiceAuthorizationsLib.sol/ServiceAuthorizationsLib.dbg.json +4 -0
- package/artifacts/contracts/registry/ServiceAuthorizationsLib.sol/ServiceAuthorizationsLib.json +137 -0
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +349 -82
- package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.dbg.json +4 -0
- package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.json +1193 -0
- package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.dbg.json +4 -0
- package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.json +1715 -0
- package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.dbg.json +4 -0
- package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.json +1728 -0
- package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.dbg.json +4 -0
- package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.json +1806 -0
- package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.dbg.json +4 -0
- package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.json +1824 -0
- package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
- package/artifacts/contracts/{components/Distribution.sol/Distribution.json → shared/Component.sol/Component.json} +361 -271
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1475 -0
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +788 -0
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +4 -0
- package/artifacts/contracts/{components/IComponent.sol/IComponent.json → shared/ComponentVerifyingService.sol/ComponentVerifyingService.json} +209 -185
- package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
- package/artifacts/contracts/shared/ERC165.sol/ERC165.json +41 -3
- package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.dbg.json +4 -0
- package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.json +1562 -0
- package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.dbg.json +4 -0
- package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.json +1600 -0
- package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
- package/artifacts/contracts/{components/Component.sol/Component.json → shared/IComponent.sol/IComponent.json} +205 -187
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +860 -0
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
- package/artifacts/contracts/{components/IDistributionComponent.sol/IDistributionComponent.json → shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json} +221 -211
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
- package/artifacts/contracts/{instance/base → shared}/IKeyValueStore.sol/IKeyValueStore.json +50 -11
- package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
- package/artifacts/contracts/{instance/base → shared}/ILifecycle.sol/ILifecycle.json +1 -1
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +34 -30
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +207 -0
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +15 -30
- package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
- package/artifacts/contracts/{experiment/inheritance/IA.sol/ISharedA.json → shared/IRegistryLinked.sol/IRegistryLinked.json} +15 -17
- package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
- package/artifacts/contracts/shared/IService.sol/IService.json +75 -158
- package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
- package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +2 -152
- package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +4 -0
- package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +39 -0
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +4 -0
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +1036 -0
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +571 -0
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +194 -0
- package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.dbg.json +4 -0
- package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.json +306 -0
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +108 -35
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +320 -0
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +330 -75
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +131 -60
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +71 -0
- package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
- package/artifacts/contracts/shared/Service.sol/Service.json +178 -160
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +60 -6
- package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
- package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +2 -2
- package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
- package/artifacts/contracts/shared/Versionable.sol/Versionable.json +2 -152
- package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +4 -0
- package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1438 -0
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +993 -0
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +4 -0
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +444 -0
- package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
- package/artifacts/contracts/staking/Staking.sol/Staking.json +2045 -0
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +777 -0
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +592 -0
- package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingService.sol/StakingService.json +1324 -0
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +726 -0
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2189 -0
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +571 -0
- package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
- package/artifacts/contracts/{types → type}/AddressSet.sol/LibAddressSet.json +3 -3
- package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
- package/artifacts/contracts/type/Amount.sol/AmountLib.json +345 -0
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +225 -0
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +179 -0
- package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
- package/artifacts/contracts/{types → type}/DistributorType.sol/DistributorTypeLib.json +5 -5
- package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
- package/artifacts/contracts/type/Fee.sol/FeeLib.json +312 -0
- package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
- package/artifacts/contracts/{types → type}/Key32.sol/Key32Lib.json +3 -3
- package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
- package/artifacts/contracts/type/NftId.sol/NftIdLib.json +209 -0
- package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
- package/artifacts/contracts/{types → type}/NftIdSet.sol/LibNftIdSet.json +3 -3
- package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
- package/artifacts/contracts/{types → type}/ObjectType.sol/ObjectTypeLib.json +3 -3
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +209 -0
- package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
- package/artifacts/contracts/type/Referral.sol/ReferralLib.json +142 -0
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +4 -0
- package/artifacts/contracts/{types → type}/RiskId.sol/RiskIdLib.json +5 -5
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
- package/artifacts/contracts/{types → type}/RoleId.sol/RoleIdLib.json +5 -5
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +198 -0
- package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +4 -0
- package/artifacts/contracts/{types → type}/StateId.sol/StateIdLib.json +3 -3
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
- package/artifacts/contracts/{types → type}/Timestamp.sol/TimestampLib.json +39 -8
- package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +4 -0
- package/artifacts/contracts/{types → type}/UFixed.sol/MathLib.json +3 -3
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
- package/artifacts/contracts/{types → type}/UFixed.sol/UFixedLib.json +3 -3
- package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
- package/artifacts/contracts/{types → type}/Version.sol/VersionLib.json +3 -3
- package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
- package/artifacts/contracts/{types → type}/Version.sol/VersionPartLib.json +3 -3
- package/contracts/distribution/Distribution.sol +261 -0
- package/contracts/distribution/DistributionService.sol +298 -0
- package/contracts/distribution/DistributionServiceManager.sol +42 -0
- package/contracts/distribution/IDistributionComponent.sol +66 -0
- package/contracts/distribution/IDistributionService.sol +81 -0
- package/contracts/instance/BundleManager.sol +15 -14
- package/contracts/instance/IInstance.sol +53 -46
- package/contracts/instance/IInstanceService.sol +58 -17
- package/contracts/instance/Instance.sol +145 -179
- package/contracts/instance/InstanceAdmin.sol +331 -0
- package/contracts/instance/InstanceAuthorizationsLib.sol +349 -0
- package/contracts/instance/InstanceReader.sol +135 -63
- package/contracts/instance/InstanceService.sol +250 -250
- package/contracts/instance/InstanceServiceManager.sol +12 -22
- package/contracts/instance/InstanceStore.sol +260 -0
- package/contracts/instance/base/BalanceStore.sol +118 -0
- package/contracts/instance/{Cloneable.sol → base/Cloneable.sol} +8 -3
- package/contracts/instance/{ObjectManager.sol → base/ObjectManager.sol} +12 -14
- package/contracts/instance/module/IAccess.sol +19 -21
- package/contracts/instance/module/IBundle.sol +8 -8
- package/contracts/instance/module/IComponents.sol +52 -0
- package/contracts/instance/module/IDistribution.sol +7 -4
- package/contracts/instance/module/IPolicy.sol +56 -17
- package/contracts/instance/module/IRisk.sol +1 -1
- package/contracts/{test/TestToken.sol → mock/Dip.sol} +5 -5
- package/contracts/pool/BundleService.sol +296 -0
- package/contracts/pool/BundleServiceManager.sol +42 -0
- package/contracts/pool/IBundleService.sol +106 -0
- package/contracts/pool/IPoolComponent.sol +112 -0
- package/contracts/pool/IPoolService.sol +150 -0
- package/contracts/pool/Pool.sol +299 -0
- package/contracts/pool/PoolService.sol +453 -0
- package/contracts/pool/PoolServiceManager.sol +42 -0
- package/contracts/product/ApplicationService.sol +254 -0
- package/contracts/product/ApplicationServiceManager.sol +38 -0
- package/contracts/product/ClaimService.sol +442 -0
- package/contracts/product/ClaimServiceManager.sol +38 -0
- package/contracts/product/IApplicationService.sol +62 -0
- package/contracts/product/IClaimService.sol +93 -0
- package/contracts/product/IPolicyService.sol +78 -0
- package/contracts/product/IPricingService.sol +39 -0
- package/contracts/product/IProductComponent.sol +42 -0
- package/contracts/product/IProductService.sol +33 -0
- package/contracts/product/PolicyService.sol +475 -0
- package/contracts/product/PolicyServiceManager.sol +42 -0
- package/contracts/product/PricingService.sol +301 -0
- package/contracts/product/PricingServiceManager.sol +42 -0
- package/contracts/product/Product.sol +377 -0
- package/contracts/product/ProductService.sol +124 -0
- package/contracts/product/ProductServiceManager.sol +42 -0
- package/contracts/registry/ChainNft.sol +16 -1
- package/contracts/registry/IRegistry.sol +47 -21
- package/contracts/registry/IRegistryService.sol +42 -38
- package/contracts/registry/ITransferInterceptor.sol +1 -0
- package/contracts/registry/Registry.sol +220 -96
- package/contracts/registry/RegistryAdmin.sol +237 -0
- package/contracts/registry/RegistryService.sol +108 -104
- package/contracts/registry/RegistryServiceManager.sol +22 -26
- package/contracts/registry/ReleaseManager.sol +458 -191
- package/contracts/registry/ServiceAuthorizationsLib.sol +173 -0
- package/contracts/registry/TokenRegistry.sol +263 -60
- package/contracts/shared/AccessManagerCustom.sol +736 -0
- package/contracts/shared/AccessManagerExtended.sol +470 -0
- package/contracts/shared/AccessManagerExtendedInitializeable.sol +13 -0
- package/contracts/shared/AccessManagerExtendedWithDisable.sol +137 -0
- package/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol +14 -0
- package/contracts/shared/Component.sol +278 -0
- package/contracts/shared/ComponentService.sol +596 -0
- package/contracts/shared/ComponentServiceManager.sol +35 -0
- package/contracts/shared/ComponentVerifyingService.sol +111 -0
- package/contracts/shared/ERC165.sol +15 -13
- package/contracts/shared/IAccessManagerExtended.sol +74 -0
- package/contracts/shared/IAccessManagerExtendedWithDisable.sol +18 -0
- package/contracts/shared/IComponent.sol +70 -0
- package/contracts/shared/IComponentService.sol +91 -0
- package/contracts/shared/IInstanceLinkedComponent.sol +46 -0
- package/contracts/{instance/base → shared}/IKeyValueStore.sol +15 -11
- package/contracts/{instance/base → shared}/ILifecycle.sol +3 -3
- package/contracts/shared/INftOwnable.sol +13 -12
- package/contracts/shared/IPolicyHolder.sol +45 -0
- package/contracts/shared/IRegisterable.sol +3 -3
- package/contracts/shared/IRegistryLinked.sol +11 -0
- package/contracts/shared/IService.sol +7 -5
- package/contracts/shared/IVersionable.sol +5 -48
- package/contracts/shared/InitializableCustom.sol +177 -0
- package/contracts/shared/InstanceLinkedComponent.sol +144 -0
- package/contracts/shared/KeyValueStore.sol +127 -0
- package/contracts/{instance/base → shared}/Lifecycle.sol +28 -7
- package/contracts/shared/NftIdSetManager.sol +65 -0
- package/contracts/shared/NftOwnable.sol +59 -91
- package/contracts/shared/PolicyHolder.sol +102 -0
- package/contracts/shared/ProxyManager.sol +131 -26
- package/contracts/shared/Registerable.sol +19 -30
- package/contracts/shared/RegistryLinked.sol +43 -0
- package/contracts/shared/Service.sol +38 -21
- package/contracts/shared/TokenHandler.sol +37 -6
- package/contracts/shared/Versionable.sol +4 -92
- package/contracts/staking/IStaking.sol +168 -0
- package/contracts/staking/IStakingService.sol +149 -0
- package/contracts/staking/StakeManagerLib.sol +179 -0
- package/contracts/staking/Staking.sol +551 -0
- package/contracts/staking/StakingManager.sol +54 -0
- package/contracts/staking/StakingReader.sol +187 -0
- package/contracts/staking/StakingService.sol +406 -0
- package/contracts/staking/StakingServiceManager.sol +45 -0
- package/contracts/staking/StakingStore.sol +572 -0
- package/contracts/staking/TargetManagerLib.sol +207 -0
- package/contracts/{types → type}/AddressSet.sol +1 -1
- package/contracts/type/Amount.sol +128 -0
- package/contracts/{types → type}/Blocknumber.sol +21 -3
- package/contracts/type/ClaimId.sol +75 -0
- package/contracts/{types → type}/DistributorType.sol +2 -2
- package/contracts/{types → type}/Fee.sol +33 -23
- package/contracts/{types → type}/NftId.sol +21 -15
- package/contracts/{types → type}/NftIdSet.sol +2 -2
- package/contracts/{types → type}/ObjectType.sol +26 -9
- package/contracts/type/PayoutId.sol +82 -0
- package/contracts/{types → type}/Referral.sol +5 -1
- package/contracts/{types → type}/RiskId.sol +1 -1
- package/contracts/type/RoleId.sol +143 -0
- package/contracts/type/Seconds.sol +81 -0
- package/contracts/{types → type}/StateId.sol +24 -6
- package/contracts/{types → type}/Timestamp.sol +18 -13
- package/contracts/{types → type}/UFixed.sol +1 -0
- package/contracts/{types → type}/Version.sol +2 -1
- package/package.json +5 -5
- package/artifacts/contracts/components/Component.sol/Component.dbg.json +0 -4
- package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +0 -4
- package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +0 -4
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +0 -4
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +0 -4
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +0 -4
- package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
- package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +0 -4
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.json +0 -66
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +0 -4
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.json +0 -24
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +0 -4
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.json +0 -42
- package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
- package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
- package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
- package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
- package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
- package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
- package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
- package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
- package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
- package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
- package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
- package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
- package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
- package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
- package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.json +0 -124
- package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
- package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
- package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
- package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
- package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
- package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
- package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
- package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
- package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
- package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
- package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +0 -4
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +0 -4
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +0 -1034
- package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +0 -4
- package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +0 -261
- package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.dbg.json +0 -4
- package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.json +0 -603
- package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
- package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +0 -4
- package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
- package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +0 -502
- package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +0 -4
- package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +0 -169
- package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +0 -4
- package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +0 -4
- package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.json +0 -10
- package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +0 -1167
- package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +0 -4
- package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +0 -449
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +0 -772
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +0 -4
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +0 -437
- package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +0 -1227
- package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +0 -4
- package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +0 -505
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +0 -806
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +0 -4
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +0 -437
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +0 -856
- package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
- package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +0 -437
- package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +0 -4
- package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +0 -285
- package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +0 -4
- package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +0 -107
- package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +0 -4
- package/artifacts/contracts/test/TestFee.sol/TestFee.json +0 -119
- package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +0 -4
- package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +0 -313
- package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +0 -4
- package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +0 -116
- package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +0 -4
- package/artifacts/contracts/test/TestService.sol/TestService.json +0 -608
- package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +0 -4
- package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +0 -376
- package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +0 -4
- package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +0 -218
- package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +0 -4
- package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +0 -286
- package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +0 -4
- package/artifacts/contracts/test/Usdc.sol/USDC.json +0 -376
- package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +0 -4
- package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
- package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +0 -174
- package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
- package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +0 -10
- package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +0 -4
- package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +0 -4
- package/artifacts/contracts/types/Fee.sol/FeeLib.json +0 -257
- package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +0 -4
- package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
- package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -153
- package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +0 -4
- package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +0 -4
- package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +0 -100
- package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +0 -4
- package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +0 -4
- package/artifacts/contracts/types/Referral.sol/ReferralLib.json +0 -123
- package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +0 -4
- package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +0 -4
- package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +0 -4
- package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
- package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +0 -4
- package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +0 -4
- package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +0 -4
- package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +0 -4
- package/contracts/components/Component.sol +0 -247
- package/contracts/components/Distribution.sol +0 -143
- package/contracts/components/IComponent.sol +0 -50
- package/contracts/components/IDistributionComponent.sol +0 -47
- package/contracts/components/IPoolComponent.sol +0 -77
- package/contracts/components/IProductComponent.sol +0 -39
- package/contracts/components/Pool.sol +0 -257
- package/contracts/components/Product.sol +0 -263
- package/contracts/experiment/cloning/Cloner.sol +0 -47
- package/contracts/experiment/errors/Require.sol +0 -38
- package/contracts/experiment/errors/Revert.sol +0 -44
- package/contracts/experiment/inheritance/A.sol +0 -53
- package/contracts/experiment/inheritance/B.sol +0 -28
- package/contracts/experiment/inheritance/C.sol +0 -34
- package/contracts/experiment/inheritance/IA.sol +0 -13
- package/contracts/experiment/inheritance/IB.sol +0 -10
- package/contracts/experiment/inheritance/IC.sol +0 -12
- package/contracts/experiment/statemachine/Dummy.sol +0 -27
- package/contracts/experiment/statemachine/ISM.sol +0 -25
- package/contracts/experiment/statemachine/SM.sol +0 -57
- package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
- package/contracts/experiment/types/TypeA.sol +0 -47
- package/contracts/experiment/types/TypeB.sol +0 -29
- package/contracts/instance/InstanceAccessManager.sol +0 -298
- package/contracts/instance/base/ComponentService.sol +0 -134
- package/contracts/instance/base/KeyValueStore.sol +0 -172
- package/contracts/instance/module/ISetup.sol +0 -46
- package/contracts/instance/module/ITreasury.sol +0 -23
- package/contracts/instance/service/BundleService.sol +0 -299
- package/contracts/instance/service/BundleServiceManager.sol +0 -51
- package/contracts/instance/service/DistributionService.sol +0 -106
- package/contracts/instance/service/DistributionServiceManager.sol +0 -51
- package/contracts/instance/service/IBundleService.sol +0 -54
- package/contracts/instance/service/IDistributionService.sol +0 -12
- package/contracts/instance/service/IPolicyService.sol +0 -94
- package/contracts/instance/service/IPoolService.sol +0 -20
- package/contracts/instance/service/IProductService.sol +0 -40
- package/contracts/instance/service/PolicyService.sol +0 -519
- package/contracts/instance/service/PolicyServiceManager.sol +0 -54
- package/contracts/instance/service/PoolService.sol +0 -109
- package/contracts/instance/service/PoolServiceManager.sol +0 -51
- package/contracts/instance/service/ProductService.sol +0 -232
- package/contracts/instance/service/ProductServiceManager.sol +0 -54
- package/contracts/registry/RegistryAccessManager.sol +0 -216
- package/contracts/shared/ContractDeployerLib.sol +0 -72
- package/contracts/test/TestFee.sol +0 -25
- package/contracts/test/TestRegisterable.sol +0 -18
- package/contracts/test/TestRoleId.sol +0 -14
- package/contracts/test/TestService.sol +0 -25
- package/contracts/test/TestVersion.sol +0 -44
- package/contracts/test/TestVersionable.sol +0 -17
- package/contracts/test/Usdc.sol +0 -26
- package/contracts/types/ChainId.sol +0 -38
- package/contracts/types/NumberId.sol +0 -52
- package/contracts/types/RoleId.sol +0 -90
- /package/contracts/{types → type}/Key32.sol +0 -0
@@ -0,0 +1,261 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.20;
|
3
|
+
|
4
|
+
import {COMPONENT, DISTRIBUTION} from "../type/ObjectType.sol";
|
5
|
+
import {IDistributionService} from "./IDistributionService.sol";
|
6
|
+
import {IProductService} from "../product/IProductService.sol";
|
7
|
+
import {NftId, NftIdLib} from "../type/NftId.sol";
|
8
|
+
import {ReferralId, ReferralStatus, ReferralLib} from "../type/Referral.sol";
|
9
|
+
import {Fee, FeeLib} from "../type/Fee.sol";
|
10
|
+
import {InstanceLinkedComponent} from "../shared/InstanceLinkedComponent.sol";
|
11
|
+
import {IComponentService} from "../shared/IComponentService.sol";
|
12
|
+
import {IDistribution} from "../instance/module/IDistribution.sol";
|
13
|
+
import {IDistributionComponent} from "./IDistributionComponent.sol";
|
14
|
+
import {IRegistry} from "../registry/IRegistry.sol";
|
15
|
+
import {TokenHandler} from "../shared/TokenHandler.sol";
|
16
|
+
import {InstanceReader} from "../instance/InstanceReader.sol";
|
17
|
+
import {UFixed} from "../type/UFixed.sol";
|
18
|
+
import {DistributorType} from "../type/DistributorType.sol";
|
19
|
+
import {Timestamp, TimestampLib} from "../type/Timestamp.sol";
|
20
|
+
import {ITransferInterceptor} from "../registry/ITransferInterceptor.sol";
|
21
|
+
|
22
|
+
|
23
|
+
abstract contract Distribution is
|
24
|
+
InstanceLinkedComponent,
|
25
|
+
IDistributionComponent
|
26
|
+
{
|
27
|
+
// keccak256(abi.encode(uint256(keccak256("etherisc.storage.Distribution")) - 1)) & ~bytes32(uint256(0xff));
|
28
|
+
bytes32 public constant DISTRIBUTION_STORAGE_LOCATION_V1 = 0xaab7c5ea03d290056d6c060e0833d3ebcbe647f7694616a2ec52738a64b2f900;
|
29
|
+
|
30
|
+
struct DistributionStorage {
|
31
|
+
IComponentService _componentService;
|
32
|
+
IDistributionService _distributionService;
|
33
|
+
mapping(address distributor => NftId distributorNftId) _distributorNftId;
|
34
|
+
}
|
35
|
+
|
36
|
+
error ErrorDistributionAlreadyDistributor(address distributor, NftId distributorNftId);
|
37
|
+
|
38
|
+
function initializeDistribution(
|
39
|
+
address registry,
|
40
|
+
NftId instanceNftId,
|
41
|
+
address initialOwner,
|
42
|
+
string memory name,
|
43
|
+
address token,
|
44
|
+
bytes memory registryData, // writeonly data that will saved in the object info record of the registry
|
45
|
+
bytes memory componentData // component specifidc data
|
46
|
+
)
|
47
|
+
public
|
48
|
+
virtual
|
49
|
+
onlyInitializing()
|
50
|
+
{
|
51
|
+
initializeInstanceLinkedComponent(registry, instanceNftId, name, token, DISTRIBUTION(), true, initialOwner, registryData, componentData);
|
52
|
+
|
53
|
+
DistributionStorage storage $ = _getDistributionStorage();
|
54
|
+
$._distributionService = IDistributionService(_getServiceAddress(DISTRIBUTION()));
|
55
|
+
$._componentService = IComponentService(_getServiceAddress(COMPONENT()));
|
56
|
+
|
57
|
+
registerInterface(type(IDistributionComponent).interfaceId);
|
58
|
+
}
|
59
|
+
|
60
|
+
function register()
|
61
|
+
external
|
62
|
+
virtual
|
63
|
+
onlyOwner()
|
64
|
+
{
|
65
|
+
_getDistributionStorage()._componentService.registerDistribution();
|
66
|
+
}
|
67
|
+
|
68
|
+
function setFees(
|
69
|
+
Fee memory distributionFee,
|
70
|
+
Fee memory minDistributionOwnerFee
|
71
|
+
)
|
72
|
+
external
|
73
|
+
override
|
74
|
+
onlyOwner()
|
75
|
+
restricted()
|
76
|
+
{
|
77
|
+
_getDistributionStorage()._componentService.setDistributionFees(
|
78
|
+
distributionFee,
|
79
|
+
minDistributionOwnerFee);
|
80
|
+
}
|
81
|
+
|
82
|
+
|
83
|
+
function createDistributorType(
|
84
|
+
string memory name,
|
85
|
+
UFixed minDiscountPercentage,
|
86
|
+
UFixed maxDiscountPercentage,
|
87
|
+
UFixed commissionPercentage,
|
88
|
+
uint32 maxReferralCount,
|
89
|
+
uint32 maxReferralLifetime,
|
90
|
+
bool allowSelfReferrals,
|
91
|
+
bool allowRenewals,
|
92
|
+
bytes memory data
|
93
|
+
)
|
94
|
+
public
|
95
|
+
returns (DistributorType distributorType)
|
96
|
+
{
|
97
|
+
DistributionStorage storage $ = _getDistributionStorage();
|
98
|
+
distributorType = $._distributionService.createDistributorType(
|
99
|
+
name,
|
100
|
+
minDiscountPercentage,
|
101
|
+
maxDiscountPercentage,
|
102
|
+
commissionPercentage,
|
103
|
+
maxReferralCount,
|
104
|
+
maxReferralLifetime,
|
105
|
+
allowSelfReferrals,
|
106
|
+
allowRenewals,
|
107
|
+
data);
|
108
|
+
}
|
109
|
+
|
110
|
+
function createDistributor(
|
111
|
+
address distributor,
|
112
|
+
DistributorType distributorType,
|
113
|
+
bytes memory data
|
114
|
+
)
|
115
|
+
public
|
116
|
+
returns(NftId distributorNftId)
|
117
|
+
{
|
118
|
+
DistributionStorage storage $ = _getDistributionStorage();
|
119
|
+
if($._distributorNftId[distributor].gtz()) {
|
120
|
+
revert ErrorDistributionAlreadyDistributor(distributor, $._distributorNftId[distributor]);
|
121
|
+
}
|
122
|
+
|
123
|
+
distributorNftId = $._distributionService.createDistributor(
|
124
|
+
distributor,
|
125
|
+
distributorType,
|
126
|
+
data);
|
127
|
+
|
128
|
+
$._distributorNftId[distributor] = distributorNftId;
|
129
|
+
}
|
130
|
+
|
131
|
+
function updateDistributorType(
|
132
|
+
NftId distributorNftId,
|
133
|
+
DistributorType distributorType,
|
134
|
+
bytes memory data
|
135
|
+
)
|
136
|
+
public
|
137
|
+
// TODO figure out what we need for authz
|
138
|
+
// and add it
|
139
|
+
{
|
140
|
+
DistributionStorage storage $ = _getDistributionStorage();
|
141
|
+
// TODO re-enable once implemented
|
142
|
+
// $._distributionService.updateDistributorType(
|
143
|
+
// distributorNftId,
|
144
|
+
// distributorType,
|
145
|
+
// data);
|
146
|
+
}
|
147
|
+
|
148
|
+
/**
|
149
|
+
* @dev lets distributors create referral codes.
|
150
|
+
* referral codes need to be unique
|
151
|
+
*/
|
152
|
+
function _createReferral(
|
153
|
+
NftId distributorNftId,
|
154
|
+
string memory code,
|
155
|
+
UFixed discountPercentage,
|
156
|
+
uint32 maxReferrals,
|
157
|
+
Timestamp expiryAt,
|
158
|
+
bytes memory data
|
159
|
+
)
|
160
|
+
internal
|
161
|
+
returns (ReferralId referralId)
|
162
|
+
{
|
163
|
+
DistributionStorage storage $ = _getDistributionStorage();
|
164
|
+
referralId = $._distributionService.createReferral(
|
165
|
+
distributorNftId,
|
166
|
+
code,
|
167
|
+
discountPercentage,
|
168
|
+
maxReferrals,
|
169
|
+
expiryAt,
|
170
|
+
data);
|
171
|
+
}
|
172
|
+
|
173
|
+
function isDistributor(address candidate)
|
174
|
+
public
|
175
|
+
view
|
176
|
+
returns (bool)
|
177
|
+
{
|
178
|
+
DistributionStorage storage $ = _getDistributionStorage();
|
179
|
+
return $._distributorNftId[candidate].gtz();
|
180
|
+
}
|
181
|
+
|
182
|
+
function getDistributorNftId(address distributor)
|
183
|
+
public
|
184
|
+
view
|
185
|
+
returns (NftId distributorNftId)
|
186
|
+
{
|
187
|
+
DistributionStorage storage $ = _getDistributionStorage();
|
188
|
+
return $._distributorNftId[distributor];
|
189
|
+
}
|
190
|
+
|
191
|
+
function getDiscountPercentage(string memory referralCode)
|
192
|
+
external
|
193
|
+
view
|
194
|
+
returns (
|
195
|
+
UFixed discountPercentage,
|
196
|
+
ReferralStatus status
|
197
|
+
)
|
198
|
+
{
|
199
|
+
ReferralId referralId = getReferralId(referralCode);
|
200
|
+
return _getInstanceReader().getDiscountPercentage(referralId);
|
201
|
+
}
|
202
|
+
|
203
|
+
|
204
|
+
function getReferralId(
|
205
|
+
string memory referralCode
|
206
|
+
)
|
207
|
+
public
|
208
|
+
view
|
209
|
+
returns (ReferralId referralId)
|
210
|
+
{
|
211
|
+
return ReferralLib.toReferralId(
|
212
|
+
getNftId(),
|
213
|
+
referralCode);
|
214
|
+
}
|
215
|
+
|
216
|
+
function calculateRenewalFeeAmount(
|
217
|
+
ReferralId referralId,
|
218
|
+
uint256 netPremiumAmount
|
219
|
+
)
|
220
|
+
external
|
221
|
+
view
|
222
|
+
virtual override
|
223
|
+
returns (uint256 feeAmount)
|
224
|
+
{
|
225
|
+
// default is no fees
|
226
|
+
return 0 * netPremiumAmount;
|
227
|
+
}
|
228
|
+
|
229
|
+
function processRenewal(
|
230
|
+
ReferralId referralId,
|
231
|
+
uint256 feeAmount
|
232
|
+
)
|
233
|
+
external
|
234
|
+
onlyOwner
|
235
|
+
restricted()
|
236
|
+
virtual override
|
237
|
+
{
|
238
|
+
// default is no action
|
239
|
+
}
|
240
|
+
|
241
|
+
|
242
|
+
function _nftTransferFrom(address from, address to, uint256 tokenId) internal virtual override {
|
243
|
+
// keep track of distributor nft owner
|
244
|
+
emit LogDistributorUpdated(to, msg.sender);
|
245
|
+
DistributionStorage storage $ = _getDistributionStorage();
|
246
|
+
$._distributorNftId[from] = NftIdLib.zero();
|
247
|
+
$._distributorNftId[to] = NftIdLib.toNftId(tokenId);
|
248
|
+
}
|
249
|
+
|
250
|
+
|
251
|
+
/// @dev returns true iff the component needs to be called when selling/renewing policis
|
252
|
+
function isVerifying() external pure returns (bool verifying) {
|
253
|
+
return true;
|
254
|
+
}
|
255
|
+
|
256
|
+
function _getDistributionStorage() private pure returns (DistributionStorage storage $) {
|
257
|
+
assembly {
|
258
|
+
$.slot := DISTRIBUTION_STORAGE_LOCATION_V1
|
259
|
+
}
|
260
|
+
}
|
261
|
+
}
|
@@ -0,0 +1,298 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.20;
|
3
|
+
|
4
|
+
import {IRegistry} from "../registry/IRegistry.sol";
|
5
|
+
import {IInstance} from "../instance/IInstance.sol";
|
6
|
+
import {InstanceAdmin} from "../instance/InstanceAdmin.sol";
|
7
|
+
import {IComponentService} from "../shared/IComponentService.sol";
|
8
|
+
import {IInstanceService} from "../instance/IInstanceService.sol";
|
9
|
+
import {IRegistryService} from "../registry/IRegistryService.sol";
|
10
|
+
import {InstanceReader} from "../instance/InstanceReader.sol";
|
11
|
+
import {IComponents} from "../instance/module/IComponents.sol";
|
12
|
+
import {IPolicy} from "../instance/module/IPolicy.sol";
|
13
|
+
|
14
|
+
import {Amount, AmountLib} from "../type/Amount.sol";
|
15
|
+
import {NftId, NftIdLib} from "../type/NftId.sol";
|
16
|
+
import {Fee, FeeLib} from "../type/Fee.sol";
|
17
|
+
import {PRODUCT_SERVICE_ROLE, DISTRIBUTION_OWNER_ROLE} from "../type/RoleId.sol";
|
18
|
+
import {KEEP_STATE} from "../type/StateId.sol";
|
19
|
+
import {ObjectType, COMPONENT, DISTRIBUTION, INSTANCE, DISTRIBUTION, DISTRIBUTOR, REGISTRY} from "../type/ObjectType.sol";
|
20
|
+
import {Version, VersionLib} from "../type/Version.sol";
|
21
|
+
import {RoleId} from "../type/RoleId.sol";
|
22
|
+
|
23
|
+
import {IVersionable} from "../shared/IVersionable.sol";
|
24
|
+
import {Versionable} from "../shared/Versionable.sol";
|
25
|
+
|
26
|
+
import {IService} from "../shared/IService.sol";
|
27
|
+
import {Service} from "../shared/Service.sol";
|
28
|
+
import {ComponentVerifyingService} from "../shared/ComponentVerifyingService.sol";
|
29
|
+
import {InstanceService} from "../instance/InstanceService.sol";
|
30
|
+
import {IComponent} from "../shared/IComponent.sol";
|
31
|
+
import {IDistributionComponent} from "../distribution/IDistributionComponent.sol";
|
32
|
+
import {IDistributionService} from "./IDistributionService.sol";
|
33
|
+
import {IPricingService} from "../product/IPricingService.sol";
|
34
|
+
|
35
|
+
import {UFixed, UFixedLib} from "../type/UFixed.sol";
|
36
|
+
import {DistributorType, DistributorTypeLib} from "../type/DistributorType.sol";
|
37
|
+
import {ReferralId, ReferralStatus, ReferralLib} from "../type/Referral.sol";
|
38
|
+
import {Timestamp, TimestampLib, zeroTimestamp} from "../type/Timestamp.sol";
|
39
|
+
import {Key32} from "../type/Key32.sol";
|
40
|
+
import {IDistribution} from "../instance/module/IDistribution.sol";
|
41
|
+
import {InstanceStore} from "../instance/InstanceStore.sol";
|
42
|
+
|
43
|
+
|
44
|
+
contract DistributionService is
|
45
|
+
ComponentVerifyingService,
|
46
|
+
IDistributionService
|
47
|
+
{
|
48
|
+
using NftIdLib for NftId;
|
49
|
+
using TimestampLib for Timestamp;
|
50
|
+
using UFixedLib for UFixed;
|
51
|
+
using FeeLib for Fee;
|
52
|
+
using ReferralLib for ReferralId;
|
53
|
+
|
54
|
+
IComponentService private _componentService;
|
55
|
+
IInstanceService private _instanceService;
|
56
|
+
IRegistryService private _registryService;
|
57
|
+
|
58
|
+
function _initialize(
|
59
|
+
address owner,
|
60
|
+
bytes memory data
|
61
|
+
)
|
62
|
+
internal
|
63
|
+
initializer
|
64
|
+
virtual override
|
65
|
+
{
|
66
|
+
address initialOwner;
|
67
|
+
address registryAddress;
|
68
|
+
(registryAddress, initialOwner) = abi.decode(data, (address, address));
|
69
|
+
// TODO while DistributionService is not deployed in DistributionServiceManager constructor
|
70
|
+
// owner is DistributionServiceManager deployer
|
71
|
+
initializeService(registryAddress, address(0), owner);
|
72
|
+
|
73
|
+
_componentService = IComponentService(_getServiceAddress(COMPONENT()));
|
74
|
+
_instanceService = IInstanceService(_getServiceAddress(INSTANCE()));
|
75
|
+
_registryService = IRegistryService(_getServiceAddress(REGISTRY()));
|
76
|
+
|
77
|
+
registerInterface(type(IDistributionService).interfaceId);
|
78
|
+
}
|
79
|
+
|
80
|
+
function getDomain() public pure override returns(ObjectType) {
|
81
|
+
return DISTRIBUTION();
|
82
|
+
}
|
83
|
+
|
84
|
+
|
85
|
+
function createDistributorType(
|
86
|
+
string memory name,
|
87
|
+
UFixed minDiscountPercentage,
|
88
|
+
UFixed maxDiscountPercentage,
|
89
|
+
UFixed commissionPercentage,
|
90
|
+
uint32 maxReferralCount,
|
91
|
+
uint32 maxReferralLifetime,
|
92
|
+
bool allowSelfReferrals,
|
93
|
+
bool allowRenewals,
|
94
|
+
bytes memory data
|
95
|
+
)
|
96
|
+
external
|
97
|
+
returns (DistributorType distributorType)
|
98
|
+
{
|
99
|
+
(NftId distributionNftId,, IInstance instance) = _getAndVerifyActiveComponent(DISTRIBUTION());
|
100
|
+
InstanceReader instanceReader = instance.getInstanceReader();
|
101
|
+
|
102
|
+
{
|
103
|
+
NftId productNftId = _getProductNftId(instanceReader, distributionNftId);
|
104
|
+
IComponents.ProductInfo memory productInfo = instance.getInstanceReader().getProductInfo(productNftId);
|
105
|
+
UFixed variableFeesPartsTotal = productInfo.minDistributionOwnerFee.fractionalFee.add(commissionPercentage);
|
106
|
+
UFixed maxDiscountPercentageLimit = productInfo.distributionFee.fractionalFee.sub(variableFeesPartsTotal);
|
107
|
+
if (maxDiscountPercentage.gt(maxDiscountPercentageLimit)) {
|
108
|
+
revert ErrorIDistributionServiceMaxDiscountTooHigh(maxDiscountPercentage.toInt(), maxDiscountPercentageLimit.toInt());
|
109
|
+
}
|
110
|
+
}
|
111
|
+
|
112
|
+
distributorType = DistributorTypeLib.toDistributorType(distributionNftId, name);
|
113
|
+
IDistribution.DistributorTypeInfo memory info = IDistribution.DistributorTypeInfo(
|
114
|
+
name,
|
115
|
+
minDiscountPercentage,
|
116
|
+
maxDiscountPercentage,
|
117
|
+
commissionPercentage,
|
118
|
+
maxReferralCount,
|
119
|
+
maxReferralLifetime,
|
120
|
+
allowSelfReferrals,
|
121
|
+
allowRenewals,
|
122
|
+
data);
|
123
|
+
|
124
|
+
instance.getInstanceStore().createDistributorType(distributorType, info);
|
125
|
+
}
|
126
|
+
|
127
|
+
|
128
|
+
function createDistributor(
|
129
|
+
address distributor,
|
130
|
+
DistributorType distributorType,
|
131
|
+
bytes memory data
|
132
|
+
)
|
133
|
+
external
|
134
|
+
virtual
|
135
|
+
returns (NftId distributorNftId)
|
136
|
+
{
|
137
|
+
(NftId distributionNftId,, IInstance instance) = _getAndVerifyActiveComponent(DISTRIBUTION());
|
138
|
+
|
139
|
+
distributorNftId = _registryService.registerDistributor(
|
140
|
+
IRegistry.ObjectInfo(
|
141
|
+
NftIdLib.zero(),
|
142
|
+
distributionNftId,
|
143
|
+
DISTRIBUTOR(),
|
144
|
+
true, // intercepting property for bundles is defined on pool
|
145
|
+
address(0),
|
146
|
+
distributor,
|
147
|
+
""
|
148
|
+
));
|
149
|
+
|
150
|
+
IDistribution.DistributorInfo memory info = IDistribution.DistributorInfo(
|
151
|
+
distributorType,
|
152
|
+
true, // active
|
153
|
+
data,
|
154
|
+
AmountLib.zero(),
|
155
|
+
0);
|
156
|
+
|
157
|
+
instance.getInstanceStore().createDistributor(distributorNftId, info);
|
158
|
+
}
|
159
|
+
|
160
|
+
// function updateDistributorType(
|
161
|
+
// NftId distributorNftId,
|
162
|
+
// DistributorType distributorType,
|
163
|
+
// bytes memory data
|
164
|
+
// )
|
165
|
+
// external
|
166
|
+
// virtual
|
167
|
+
// {
|
168
|
+
// (, IInstance instance) = _getAndVerifyCallingDistribution();
|
169
|
+
// InstanceReader instanceReader = instance.getInstanceReader();
|
170
|
+
// IDistribution.DistributorInfo memory distributorInfo = instanceReader.getDistributorInfo(distributorNftId);
|
171
|
+
// distributorInfo.distributorType = distributorType;
|
172
|
+
// distributorInfo.data = data;
|
173
|
+
// instance.updateDistributor(distributorNftId, distributorInfo, KEEP_STATE());
|
174
|
+
// }
|
175
|
+
|
176
|
+
|
177
|
+
function createReferral(
|
178
|
+
NftId distributorNftId,
|
179
|
+
string memory code,
|
180
|
+
UFixed discountPercentage,
|
181
|
+
uint32 maxReferrals,
|
182
|
+
Timestamp expiryAt,
|
183
|
+
bytes memory data
|
184
|
+
)
|
185
|
+
external
|
186
|
+
virtual
|
187
|
+
returns (ReferralId referralId)
|
188
|
+
{
|
189
|
+
(NftId distributionNftId,, IInstance instance) = _getAndVerifyActiveComponent(DISTRIBUTION());
|
190
|
+
|
191
|
+
if (bytes(code).length == 0) {
|
192
|
+
revert ErrorIDistributionServiceInvalidReferral(code);
|
193
|
+
}
|
194
|
+
if (expiryAt.eqz()) {
|
195
|
+
revert ErrorIDistributionServiceExpirationInvalid(expiryAt);
|
196
|
+
}
|
197
|
+
|
198
|
+
InstanceReader instanceReader = instance.getInstanceReader();
|
199
|
+
DistributorType distributorType = instanceReader.getDistributorInfo(distributorNftId).distributorType;
|
200
|
+
IDistribution.DistributorTypeInfo memory distributorTypeData = instanceReader.getDistributorTypeInfo(distributorType);
|
201
|
+
|
202
|
+
if (distributorTypeData.maxReferralCount < maxReferrals) {
|
203
|
+
revert ErrorIDistributionServiceMaxReferralsExceeded(distributorTypeData.maxReferralCount);
|
204
|
+
}
|
205
|
+
if (distributorTypeData.minDiscountPercentage > discountPercentage) {
|
206
|
+
revert ErrorIDistributionServiceDiscountTooLow(distributorTypeData.minDiscountPercentage.toInt(), discountPercentage.toInt());
|
207
|
+
}
|
208
|
+
if (distributorTypeData.maxDiscountPercentage < discountPercentage) {
|
209
|
+
revert ErrorIDistributionServiceDiscountTooHigh(distributorTypeData.maxDiscountPercentage.toInt(), discountPercentage.toInt());
|
210
|
+
}
|
211
|
+
if (expiryAt.toInt() - TimestampLib.blockTimestamp().toInt() > distributorTypeData.maxReferralLifetime) {
|
212
|
+
revert ErrorIDistributionServiceExpiryTooLong(distributorTypeData.maxReferralLifetime, expiryAt.toInt());
|
213
|
+
}
|
214
|
+
|
215
|
+
referralId = ReferralLib.toReferralId(distributionNftId, code);
|
216
|
+
IDistribution.ReferralInfo memory info = IDistribution.ReferralInfo(
|
217
|
+
distributorNftId,
|
218
|
+
code,
|
219
|
+
discountPercentage,
|
220
|
+
maxReferrals,
|
221
|
+
0, // used referrals
|
222
|
+
expiryAt,
|
223
|
+
data
|
224
|
+
);
|
225
|
+
|
226
|
+
instance.getInstanceStore().createReferral(referralId, info);
|
227
|
+
return referralId;
|
228
|
+
}
|
229
|
+
|
230
|
+
|
231
|
+
function processSale(
|
232
|
+
NftId distributionNftId, // assume always of distribution type
|
233
|
+
ReferralId referralId,
|
234
|
+
IPolicy.Premium memory premium
|
235
|
+
)
|
236
|
+
external
|
237
|
+
virtual
|
238
|
+
restricted
|
239
|
+
{
|
240
|
+
IInstance instance = _getInstanceForDistribution(distributionNftId);
|
241
|
+
InstanceReader reader = instance.getInstanceReader();
|
242
|
+
InstanceStore store = instance.getInstanceStore();
|
243
|
+
|
244
|
+
// get distribution owner fee amount
|
245
|
+
Amount distributionOwnerFee = AmountLib.toAmount(premium.distributionOwnerFeeFixAmount + premium.distributionOwnerFeeVarAmount);
|
246
|
+
|
247
|
+
// update referral/distributor info if applicable
|
248
|
+
if (referralIsValid(distributionNftId, referralId)) {
|
249
|
+
|
250
|
+
// increase distribution balance by commission amount and distribution owner fee
|
251
|
+
Amount commissionAmount = AmountLib.toAmount(premium.commissionAmount);
|
252
|
+
_componentService.increaseDistributionBalance(store, distributionNftId, commissionAmount, distributionOwnerFee);
|
253
|
+
|
254
|
+
// update book keeping for referral info
|
255
|
+
IDistribution.ReferralInfo memory referralInfo = reader.getReferralInfo(referralId);
|
256
|
+
referralInfo.usedReferrals += 1;
|
257
|
+
store.updateReferral(referralId, referralInfo, KEEP_STATE());
|
258
|
+
|
259
|
+
// update book keeping for distributor info
|
260
|
+
IDistribution.DistributorInfo memory distributorInfo = reader.getDistributorInfo(referralInfo.distributorNftId);
|
261
|
+
// TODO refactor sum of commission amount into a fee balance for distributors
|
262
|
+
distributorInfo.commissionAmount = distributorInfo.commissionAmount + commissionAmount;
|
263
|
+
distributorInfo.numPoliciesSold += 1;
|
264
|
+
store.updateDistributor(referralInfo.distributorNftId, distributorInfo, KEEP_STATE());
|
265
|
+
} else {
|
266
|
+
|
267
|
+
// increase distribution balance by distribution owner fee
|
268
|
+
_componentService.increaseDistributionBalance(store, distributionNftId, AmountLib.zero(), distributionOwnerFee);
|
269
|
+
}
|
270
|
+
}
|
271
|
+
|
272
|
+
function referralIsValid(NftId distributionNftId, ReferralId referralId) public view returns (bool isValid) {
|
273
|
+
if (distributionNftId.eqz() || referralId.eqz()) {
|
274
|
+
return false;
|
275
|
+
}
|
276
|
+
|
277
|
+
IInstance instance = _getInstanceForDistribution(distributionNftId);
|
278
|
+
IDistribution.ReferralInfo memory info = instance.getInstanceReader().getReferralInfo(referralId);
|
279
|
+
|
280
|
+
if (info.distributorNftId.eqz()) {
|
281
|
+
return false;
|
282
|
+
}
|
283
|
+
|
284
|
+
isValid = info.expiryAt.eqz() || (info.expiryAt.gtz() && TimestampLib.blockTimestamp() <= info.expiryAt);
|
285
|
+
isValid = isValid && info.usedReferrals < info.maxReferrals;
|
286
|
+
}
|
287
|
+
|
288
|
+
function _getInstanceForDistribution(NftId distributionNftId)
|
289
|
+
internal
|
290
|
+
view
|
291
|
+
returns(IInstance instance)
|
292
|
+
{
|
293
|
+
NftId instanceNftId = getRegistry().getObjectInfo(distributionNftId).parentNftId;
|
294
|
+
address instanceAddress = getRegistry().getObjectInfo(instanceNftId).objectAddress;
|
295
|
+
return IInstance(instanceAddress);
|
296
|
+
}
|
297
|
+
|
298
|
+
}
|
@@ -0,0 +1,42 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.20;
|
3
|
+
|
4
|
+
import {IVersionable} from "../shared/IVersionable.sol";
|
5
|
+
import {ProxyManager} from "../shared/ProxyManager.sol";
|
6
|
+
import {DistributionService} from "./DistributionService.sol";
|
7
|
+
import {Registry} from "../registry/Registry.sol";
|
8
|
+
import {RegistryService} from "../registry/RegistryService.sol";
|
9
|
+
import {REGISTRY} from "../type/ObjectType.sol";
|
10
|
+
|
11
|
+
contract DistributionServiceManager is ProxyManager {
|
12
|
+
|
13
|
+
DistributionService private _distributionService;
|
14
|
+
|
15
|
+
/// @dev initializes proxy manager with distribution service implementation and deploys instance
|
16
|
+
constructor(
|
17
|
+
address authority,
|
18
|
+
address registryAddress,
|
19
|
+
bytes32 salt
|
20
|
+
)
|
21
|
+
ProxyManager(registryAddress)
|
22
|
+
{
|
23
|
+
DistributionService distSrv = new DistributionService{salt: salt}();
|
24
|
+
bytes memory data = abi.encode(registryAddress, address(this), authority);
|
25
|
+
IVersionable versionable = deployDetermenistic(
|
26
|
+
address(distSrv),
|
27
|
+
data,
|
28
|
+
salt);
|
29
|
+
|
30
|
+
_distributionService = DistributionService(address(versionable));
|
31
|
+
}
|
32
|
+
|
33
|
+
//--- view functions ----------------------------------------------------//
|
34
|
+
function getDistributionService()
|
35
|
+
external
|
36
|
+
view
|
37
|
+
returns (DistributionService distributionService)
|
38
|
+
{
|
39
|
+
return _distributionService;
|
40
|
+
}
|
41
|
+
|
42
|
+
}
|
@@ -0,0 +1,66 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.20;
|
3
|
+
|
4
|
+
import {Fee} from "../type/Fee.sol";
|
5
|
+
import {IInstanceLinkedComponent} from "../shared/IInstanceLinkedComponent.sol";
|
6
|
+
import {ReferralId, ReferralStatus} from "../type/Referral.sol";
|
7
|
+
import {NftId} from "../type/NftId.sol";
|
8
|
+
import {DistributorType} from "../type/DistributorType.sol";
|
9
|
+
import {UFixed} from "../type/UFixed.sol";
|
10
|
+
import {Timestamp} from "../type/Timestamp.sol";
|
11
|
+
|
12
|
+
interface IDistributionComponent is IInstanceLinkedComponent {
|
13
|
+
|
14
|
+
event LogDistributorUpdated(address to, address caller);
|
15
|
+
|
16
|
+
function setFees(
|
17
|
+
Fee memory distributionFee,
|
18
|
+
Fee memory minDistributionOwnerFee
|
19
|
+
) external;
|
20
|
+
|
21
|
+
function createDistributorType(
|
22
|
+
string memory name,
|
23
|
+
UFixed minDiscountPercentage,
|
24
|
+
UFixed maxDiscountPercentage,
|
25
|
+
UFixed commissionPercentage,
|
26
|
+
uint32 maxReferralCount,
|
27
|
+
uint32 maxReferralLifetime,
|
28
|
+
bool allowSelfReferrals,
|
29
|
+
bool allowRenewals,
|
30
|
+
bytes memory data
|
31
|
+
) external returns (DistributorType distributorType);
|
32
|
+
|
33
|
+
function createDistributor(
|
34
|
+
address distributor,
|
35
|
+
DistributorType distributorType,
|
36
|
+
bytes memory data
|
37
|
+
) external returns(NftId distributorNftId);
|
38
|
+
|
39
|
+
function updateDistributorType(
|
40
|
+
NftId distributorNftId,
|
41
|
+
DistributorType distributorType,
|
42
|
+
bytes memory data
|
43
|
+
) external;
|
44
|
+
|
45
|
+
function calculateRenewalFeeAmount(
|
46
|
+
ReferralId referralId,
|
47
|
+
uint256 netPremiumAmount
|
48
|
+
) external view returns (uint256 feeAmount);
|
49
|
+
|
50
|
+
/// @dev callback from product service when a policy is renews for a specific referralId
|
51
|
+
function processRenewal(
|
52
|
+
ReferralId referralId,
|
53
|
+
uint256 feeAmount
|
54
|
+
) external;
|
55
|
+
|
56
|
+
function getDiscountPercentage(
|
57
|
+
string memory referralCode
|
58
|
+
) external view returns (UFixed discountPercentage, ReferralStatus status);
|
59
|
+
|
60
|
+
function getReferralId(
|
61
|
+
string memory referralCode
|
62
|
+
) external returns (ReferralId referralId);
|
63
|
+
|
64
|
+
/// @dev returns true iff the component needs to be called when selling/renewing policis
|
65
|
+
function isVerifying() external view returns (bool verifying);
|
66
|
+
}
|