Distribution
Contains interfaces and contracts related to distribution.
Contracts
IDistributionComponent 
import "@etherisc/gif-next/contracts/distribution/IDistributionComponent.sol";
- 
[
getDiscountPercentage(referralCode)] - 
[
getReferralId(referralCode)] - 
[
calculateRenewalFeeAmount(referralId, netPremiumAmount)] - 
[
processRenewal(referralId, feeAmount)] - 
[
isVerifying()] - 
[
withdrawCommission(distributorNftId, amount)] 
- 
[
withdrawFees(amount)] - 
[
getInstance()] 
- 
[
getAuthorization()] 
- 
[
getName()] - 
[
getToken()] - 
[
getTokenHandler()] - 
[
getWallet()] - 
[
isNftInterceptor()] - 
[
isRegistered()] - 
[
getComponentInfo()] - 
[
getInitialComponentInfo()] 
- 
[
nftTransferFrom(from, to, tokenId, operator)] 
- 
[
isActive()] - 
[
getInitialInfo()] 
- 
[
getRelease()] 
- 
[
linkToRegisteredNftId()] - 
[
getNftId()] - 
[
getOwner()] 
- 
[
getRegistry()] 
- 
[
supportsInterface(interfaceId)] 
- 
[
authority()] - 
[
setAuthority()] - 
[
isConsumingScheduledOp()] 
- 
[
LogNftOwnableNftLinkedToAddress(nftId, owner)] 
- 
[
AuthorityUpdated(authority)] 
getDiscountPercentage(string referralCode) → UFixed discountPercentage, ReferralStatus status external
calculateRenewalFeeAmount(ReferralId referralId, uint256 netPremiumAmount) → uint256 feeAmount external
processRenewal(ReferralId referralId, uint256 feeAmount) external
Callback function to process a renewal of a policy. The default implementation is empty. Overwrite this function to implement a use case specific behaviour.
IDistributionService 
import "@etherisc/gif-next/contracts/distribution/IDistributionService.sol";
- 
[
createDistributorType(name, minDiscountPercentage, maxDiscountPercentage, commissionPercentage, maxReferralCount, maxReferralLifetime, allowSelfReferrals, allowRenewals, data)] - 
[
createDistributor(distributor, distributorType, data)] - 
[
changeDistributorType(distributorNftId, newDistributorType, data)] - 
[
createReferral(distributorNftId, code, discountPercentage, maxReferrals, expiryAt, data)] - 
[
processReferral(distributionNftId, referralId)] - 
[
processSale(distributionNftId, referralId, premium)] - 
[
referralIsValid(distributorNftId, referralId)] - 
[
withdrawCommission(distributorNftId, amount)] - 
[
getDiscountPercentage(instanceReader, referralId)] 
- 
[
getDomain()] - 
[
getRoleId()] 
- 
[
initializeVersionable(activatedBy, activationData)] - 
[
upgradeVersionable(upgradeData)] - 
[
getVersion()] 
- 
[
isActive()] - 
[
getInitialInfo()] 
- 
[
getRelease()] 
- 
[
linkToRegisteredNftId()] - 
[
getNftId()] - 
[
getOwner()] 
- 
[
getRegistry()] 
- 
[
supportsInterface(interfaceId)] 
- 
[
authority()] - 
[
setAuthority()] - 
[
isConsumingScheduledOp()] 
- 
[
LogDistributionServiceCommissionWithdrawn(distributorNftId, recipient, amount, tokenAddress)] - 
[
LogDistributionServiceDistributorTypeCreated(distributionNftId, distributorType, name, commissionPercentage)] - 
[
LogDistributionServiceDistributorCreated(distributionNftId, distributorNftId, distributor, distributorType)] - 
[
LogDistributionServiceDistributorTypeChanged(distributorNftId, oldDistributorType, newDistributorType)] - 
[
LogDistributionServiceReferralCreated(distributorNftId, referralId, code, discountPercentage, maxReferrals, expiryAt)] - 
[
LogDistributionServiceReferralProcessed(distributorNftId, referralId, usedReferrals)] - 
[
LogDistributionServiceSaleProcessed(distributionNftId, premium, distributionOwnerFee)] - 
[
LogDistributionServiceSaleProcessedWithReferral(distributionNftId, distributorNftId, referralId, numPoliciesSold, premium, distributionOwnerFee, commissionAmount)] 
- 
[
LogNftOwnableNftLinkedToAddress(nftId, owner)] 
- 
[
AuthorityUpdated(authority)] 
createDistributorType(string name, UFixed minDiscountPercentage, UFixed maxDiscountPercentage, UFixed commissionPercentage, uint32 maxReferralCount, Seconds maxReferralLifetime, bool allowSelfReferrals, bool allowRenewals, bytes data) → DistributorType distributorType external
createDistributor(address distributor, DistributorType distributorType, bytes data) → NftId distributorNftId external
changeDistributorType(NftId distributorNftId, DistributorType newDistributorType, bytes data) external
createReferral(NftId distributorNftId, string code, UFixed discountPercentage, uint32 maxReferrals, Timestamp expiryAt, bytes data) → ReferralId referralId external
processReferral(NftId distributionNftId, ReferralId referralId) external
callback from product service when a referral is used. Calling this will increment the referral usage counter.
processSale(NftId distributionNftId, ReferralId referralId, struct IPolicy.PremiumInfo premium) external
callback from product service when selling a policy for a specific referralId
withdrawCommission(NftId distributorNftId, Amount amount) → Amount withdrawnAmount external
Withdraw commission for the distributor
getDiscountPercentage(contract InstanceReader instanceReader, ReferralId referralId) → UFixed discountPercentage, ReferralStatus status external
Returns the discount percentage for the provided referral code. The function retuns both the percentage and the status of the referral code.
LogDistributionServiceCommissionWithdrawn(NftId indexed distributorNftId, address indexed recipient, Amount amount, address indexed tokenAddress) event
LogDistributionServiceDistributorTypeCreated(NftId indexed distributionNftId, DistributorType indexed distributorType, string name, UFixed commissionPercentage) event
LogDistributionServiceDistributorCreated(NftId indexed distributionNftId, NftId indexed distributorNftId, address indexed distributor, DistributorType distributorType) event
LogDistributionServiceDistributorTypeChanged(NftId indexed distributorNftId, DistributorType indexed oldDistributorType, DistributorType indexed newDistributorType) event
LogDistributionServiceReferralCreated(NftId indexed distributorNftId, ReferralId indexed referralId, string code, UFixed discountPercentage, uint32 maxReferrals, Timestamp expiryAt) event
LogDistributionServiceReferralProcessed(NftId indexed distributorNftId, ReferralId indexed referralId, uint32 usedReferrals) event
Distribution 
import "@etherisc/gif-next/contracts/distribution/Distribution.sol";
- 
[
processRenewal(referralId, feeAmount)] - 
[
withdrawCommission(distributorNftId, amount)] - 
[
getDiscountPercentage(referralCode)] - 
[
getReferralId(referralCode)] - 
[
calculateRenewalFeeAmount(, netPremiumAmount)] - 
[
isVerifying()] - 
[
__Distribution_init(registry, productNftId, authorization, isInterceptor, initialOwner, name)] - 
[
_setFees(distributionFee, minDistributionOwnerFee)] - 
[
_createDistributorType(name, minDiscountPercentage, maxDiscountPercentage, commissionPercentage, maxReferralCount, maxReferralLifetime, allowSelfReferrals, allowRenewals, data)] - 
[
_createDistributor(distributor, distributorType, data)] - 
[
_changeDistributorType(distributorNftId, distributorType, data)] - 
[
_createReferral(distributorNftId, code, discountPercentage, maxReferrals, expiryAt, data)] - 
[
_withdrawCommission(distributorNftId, amount)] 
- 
[
getInstance()] - 
[
getAuthorization()] - 
[
withdrawFees(amount)] - 
[
_sendRequest(oracleNftId, requestData, expiryAt, callbackMethod)] - 
[
_cancelRequest(requestId)] - 
[
_resendResponse(requestId)] - 
[
__InstanceLinkedComponent_init(registry, parentNftId, name, componentType, authorization, isInterceptor, initialOwner)] - 
[
_checkAndGetInstanceNftId(registryAddress, parentNftId, componentType)] - 
[
_checkAndGetRegistry(registryAddress, objectNftId, requiredType)] - 
[
_setWallet(newWallet)] - 
[
_getComponentInfo()] - 
[
_getInstanceReader()] - 
[
_withdrawFees(amount)] 
- 
[
__Component_init(authority, registry, parentNftId, name, componentType, isInterceptor, initialOwner, registryData)] - 
[
nftTransferFrom(from, to, tokenId, operator)] - 
[
getWallet()] - 
[
getTokenHandler()] - 
[
getToken()] - 
[
getName()] - 
[
getVersion()] - 
[
getComponentInfo()] - 
[
getInitialComponentInfo()] - 
[
isNftInterceptor()] - 
[
isRegistered()] - 
[
_approveTokenHandler(token, amount)] - 
[
_nftTransferFrom(from, to, tokenId, operator)] - 
[
_setLocked(locked)] - 
[
_getServiceAddress(domain)] 
- 
[
__Registerable_init(authority, registry, parentNftId, objectType, isInterceptor, initialOwner, data)] - 
[
isActive()] - 
[
getRelease()] - 
[
getInitialInfo()] 
- 
[
_checkNftType(nftId, expectedObjectType)] - 
[
__NftOwnable_init(registry, initialOwner)] - 
[
linkToRegisteredNftId()] - 
[
getNftId()] - 
[
getOwner()] - 
[
_linkToNftOwnable(nftOwnableAddress)] 
- 
[
__RegistryLinked_init(registry)] - 
[
getRegistry()] 
- 
[
__ERC165_init()] - 
[
_initializeERC165()] - 
[
_registerInterface(interfaceId)] - 
[
_registerInterfaceNotInitializing(interfaceId)] - 
[
supportsInterface(interfaceId)] 
- 
[
__AccessManaged_init(initialAuthority)] - 
[
__AccessManaged_init_unchained(initialAuthority)] - 
[
authority()] - 
[
setAuthority(newAuthority)] - 
[
isConsumingScheduledOp()] - 
[
_setAuthority(newAuthority)] - 
[
_checkCanCall(caller, data)] 
- 
[
__Context_init()] - 
[
__Context_init_unchained()] - 
[
_msgSender()] - 
[
_msgData()] - 
[
_contextSuffixLength()] 
- 
[
_checkInitializing()] - 
[
_disableInitializers()] - 
[
_getInitializedVersion()] - 
[
_isInitializing()] 
- 
[
LogNftOwnableNftLinkedToAddress(nftId, owner)] 
- 
[
AuthorityUpdated(authority)] 
- 
[
Initialized(version)] 
processRenewal(ReferralId referralId, uint256 feeAmount) external
Callback function to process a renewal of a policy. The default implementation is empty. Overwrite this function to implement a use case specific behaviour.
withdrawCommission(NftId distributorNftId, Amount amount) → Amount withdrawnAmount external
Withdraw commission for the distributor
getDiscountPercentage(string referralCode) → UFixed discountPercentage, ReferralStatus status external
isVerifying() → bool verifying external
Returns true iff the component needs to be called when selling/renewing policis
__Distribution_init(address registry, NftId productNftId, contract IAuthorization authorization, bool isInterceptor, address initialOwner, string name) internal
_setFees(struct Fee distributionFee, struct Fee minDistributionOwnerFee) internal
Sets the distribution fees to the provided values.
_createDistributorType(string name, UFixed minDiscountPercentage, UFixed maxDiscountPercentage, UFixed commissionPercentage, uint32 maxReferralCount, Seconds maxReferralLifetime, bool allowSelfReferrals, bool allowRenewals, bytes data) → DistributorType distributorType internal
Creates a new distributor type using the provided parameters.
_createDistributor(address distributor, DistributorType distributorType, bytes data) → NftId distributorNftId internal
Turns the provided account into a new distributor of the specified type.
_changeDistributorType(NftId distributorNftId, DistributorType distributorType, bytes data) internal
Uptates the distributor type for the specified distributor.
BasicDistribution 
import "@etherisc/gif-next/contracts/distribution/BasicDistribution.sol";
- 
[
setFees(distributionFee, minDistributionOwnerFee)] - 
[
createDistributorType(name, minDiscountPercentage, maxDiscountPercentage, commissionPercentage, maxReferralCount, maxReferralLifetime, allowSelfReferrals, allowRenewals, data)] - 
[
createDistributor(distributor, distributorType, data)] - 
[
changeDistributorType(distributorNftId, distributorType, data)] - 
[
createReferral(distributorNftId, code, discountPercentage, maxReferrals, expiryAt, data)] - 
[
_initializeBasicDistribution(registry, instanceNftId, authorization, initialOwner, name)] 
- 
[
processRenewal(referralId, feeAmount)] - 
[
withdrawCommission(distributorNftId, amount)] - 
[
getDiscountPercentage(referralCode)] - 
[
getReferralId(referralCode)] - 
[
calculateRenewalFeeAmount(, netPremiumAmount)] - 
[
isVerifying()] - 
[
__Distribution_init(registry, productNftId, authorization, isInterceptor, initialOwner, name)] - 
[
_setFees(distributionFee, minDistributionOwnerFee)] - 
[
_createDistributorType(name, minDiscountPercentage, maxDiscountPercentage, commissionPercentage, maxReferralCount, maxReferralLifetime, allowSelfReferrals, allowRenewals, data)] - 
[
_createDistributor(distributor, distributorType, data)] - 
[
_changeDistributorType(distributorNftId, distributorType, data)] - 
[
_createReferral(distributorNftId, code, discountPercentage, maxReferrals, expiryAt, data)] - 
[
_withdrawCommission(distributorNftId, amount)] 
- 
[
getInstance()] - 
[
getAuthorization()] - 
[
withdrawFees(amount)] - 
[
_sendRequest(oracleNftId, requestData, expiryAt, callbackMethod)] - 
[
_cancelRequest(requestId)] - 
[
_resendResponse(requestId)] - 
[
__InstanceLinkedComponent_init(registry, parentNftId, name, componentType, authorization, isInterceptor, initialOwner)] - 
[
_checkAndGetInstanceNftId(registryAddress, parentNftId, componentType)] - 
[
_checkAndGetRegistry(registryAddress, objectNftId, requiredType)] - 
[
_setWallet(newWallet)] - 
[
_getComponentInfo()] - 
[
_getInstanceReader()] - 
[
_withdrawFees(amount)] 
- 
[
__Component_init(authority, registry, parentNftId, name, componentType, isInterceptor, initialOwner, registryData)] - 
[
nftTransferFrom(from, to, tokenId, operator)] - 
[
getWallet()] - 
[
getTokenHandler()] - 
[
getToken()] - 
[
getName()] - 
[
getVersion()] - 
[
getComponentInfo()] - 
[
getInitialComponentInfo()] - 
[
isNftInterceptor()] - 
[
isRegistered()] - 
[
_approveTokenHandler(token, amount)] - 
[
_nftTransferFrom(from, to, tokenId, operator)] - 
[
_setLocked(locked)] - 
[
_getServiceAddress(domain)] 
- 
[
__Registerable_init(authority, registry, parentNftId, objectType, isInterceptor, initialOwner, data)] - 
[
isActive()] - 
[
getRelease()] - 
[
getInitialInfo()] 
- 
[
_checkNftType(nftId, expectedObjectType)] - 
[
__NftOwnable_init(registry, initialOwner)] - 
[
linkToRegisteredNftId()] - 
[
getNftId()] - 
[
getOwner()] - 
[
_linkToNftOwnable(nftOwnableAddress)] 
- 
[
__RegistryLinked_init(registry)] - 
[
getRegistry()] 
- 
[
__ERC165_init()] - 
[
_initializeERC165()] - 
[
_registerInterface(interfaceId)] - 
[
_registerInterfaceNotInitializing(interfaceId)] - 
[
supportsInterface(interfaceId)] 
- 
[
__AccessManaged_init(initialAuthority)] - 
[
__AccessManaged_init_unchained(initialAuthority)] - 
[
authority()] - 
[
setAuthority(newAuthority)] - 
[
isConsumingScheduledOp()] - 
[
_setAuthority(newAuthority)] - 
[
_checkCanCall(caller, data)] 
- 
[
__Context_init()] - 
[
__Context_init_unchained()] - 
[
_msgSender()] - 
[
_msgData()] - 
[
_contextSuffixLength()] 
- 
[
_checkInitializing()] - 
[
_disableInitializers()] - 
[
_getInitializedVersion()] - 
[
_isInitializing()] 
- 
[
LogNftOwnableNftLinkedToAddress(nftId, owner)] 
- 
[
AuthorityUpdated(authority)] 
- 
[
Initialized(version)] 
createDistributorType(string name, UFixed minDiscountPercentage, UFixed maxDiscountPercentage, UFixed commissionPercentage, uint32 maxReferralCount, Seconds maxReferralLifetime, bool allowSelfReferrals, bool allowRenewals, bytes data) → DistributorType distributorType external
createDistributor(address distributor, DistributorType distributorType, bytes data) → NftId distributorNftId external
BasicDistributionAuthorization 
import "@etherisc/gif-next/contracts/distribution/BasicDistributionAuthorization.sol";
- 
[
constructor(distributionName)] - 
[
_setupServiceTargets()] - 
[
_setupTokenHandlerAuthorizations()] - 
[
_setupTargetAuthorizations()] 
- 
[
getTokenHandlerName()] - 
[
getTokenHandlerTarget()] - 
[
getTarget(targetName)] - 
[
getTargets()] - 
[
targetExists(target)] - 
[
_setupTargets()] - 
[
_setupRoles()] - 
[
_addCustomRole(roleId, adminRoleId, maxMemberCount, name)] - 
[
_addGifTarget(contractName)] - 
[
_addInstanceTarget(contractName)] - 
[
_addTarget(name)] - 
[
_toTargetRoleId(targetDomain)] - 
[
_toTargetRoleName(targetName)] 
- 
[
getDomain()] - 
[
getRelease()] - 
[
getCommitHash()] - 
[
getMainTargetName()] - 
[
getMainTarget()] - 
[
getServiceDomains()] - 
[
getServiceDomain(idx)] - 
[
getServiceTarget(serviceDomain)] - 
[
getServiceRole(serviceDomain)] - 
[
getServiceAddress(serviceDomain)] - 
[
getTargetRole(target)] - 
[
roleExists(roleId)] - 
[
getRoles()] - 
[
getRoleInfo(roleId)] - 
[
getRoleName(roleId)] - 
[
getAuthorizedRoles(target)] - 
[
getAuthorizedFunctions(target, roleId)] - 
[
_setupDomains()] - 
[
_setupDomainAuthorizations()] - 
[
_authorizeServiceDomain(serviceDomain, serviceAddress)] - 
[
_addTargetWithRole(targetName, roleId, roleName)] - 
[
_addRole(roleId, info)] - 
[
_authorizeForService(serviceDomain, authorizedDomain)] - 
[
_authorizeForTarget(target, authorizedRoleId)] - 
[
_authorize(functions, selector, name)] 
- 
[
__ERC165_init()] - 
[
_initializeERC165()] - 
[
_registerInterface(interfaceId)] - 
[
_registerInterfaceNotInitializing(interfaceId)] - 
[
supportsInterface(interfaceId)] 
- 
[
_checkInitializing()] - 
[
_disableInitializers()] - 
[
_getInitializedVersion()] - 
[
_isInitializing()] 
- 
[
Initialized(version)] 
_setupServiceTargets() internal
Sets up the relevant service targets for the component. Overwrite this function for use case specific authorizations.
DistributionService 
import "@etherisc/gif-next/contracts/distribution/DistributionService.sol";
- 
[
_initialize(owner, data)] - 
[
createDistributorType(name, minDiscountPercentage, maxDiscountPercentage, commissionPercentage, maxReferralCount, maxReferralLifetime, allowSelfReferrals, allowRenewals, data)] - 
[
createDistributor(distributor, distributorType, data)] - 
[
changeDistributorType(distributorNftId, newDistributorType, data)] - 
[
createReferral(distributorNftId, code, discountPercentage, maxReferrals, expiryAt, data)] - 
[
processReferral(distributionNftId, referralId)] - 
[
processSale(distributionNftId, referralId, premium)] - 
[
withdrawCommission(distributorNftId, amount)] - 
[
referralIsValid(distributionNftId, referralId)] - 
[
getDiscountPercentage(instanceReader, referralId)] - 
[
_checkDistributionType(instanceReader, distributorType, expectedDistributionNftId)] - 
[
_getAndVerifyActiveDistribution()] - 
[
_getDomain()] 
- 
[
__Service_init(authority, registry, initialOwner)] - 
[
getDomain()] - 
[
getVersion()] - 
[
getRoleId()] - 
[
_getServiceAddress(domain)] 
- 
[
__ReentrancyGuard_init()] - 
[
__ReentrancyGuard_init_unchained()] - 
[
_reentrancyGuardEntered()] 
- 
[
initializeVersionable(activatedBy, data)] - 
[
upgradeVersionable(data)] - 
[
_upgrade(data)] 
- 
[
__Registerable_init(authority, registry, parentNftId, objectType, isInterceptor, initialOwner, data)] - 
[
isActive()] - 
[
getRelease()] - 
[
getInitialInfo()] 
- 
[
_checkNftType(nftId, expectedObjectType)] - 
[
__NftOwnable_init(registry, initialOwner)] - 
[
linkToRegisteredNftId()] - 
[
getNftId()] - 
[
getOwner()] - 
[
_linkToNftOwnable(nftOwnableAddress)] 
- 
[
__RegistryLinked_init(registry)] - 
[
getRegistry()] 
- 
[
__ERC165_init()] - 
[
_initializeERC165()] - 
[
_registerInterface(interfaceId)] - 
[
_registerInterfaceNotInitializing(interfaceId)] - 
[
supportsInterface(interfaceId)] 
- 
[
__AccessManaged_init(initialAuthority)] - 
[
__AccessManaged_init_unchained(initialAuthority)] - 
[
authority()] - 
[
setAuthority(newAuthority)] - 
[
isConsumingScheduledOp()] - 
[
_setAuthority(newAuthority)] - 
[
_checkCanCall(caller, data)] 
- 
[
__Context_init()] - 
[
__Context_init_unchained()] - 
[
_msgSender()] - 
[
_msgData()] - 
[
_contextSuffixLength()] 
- 
[
_checkInitializing()] - 
[
_disableInitializers()] - 
[
_getInitializedVersion()] - 
[
_isInitializing()] 
- 
[
LogDistributionServiceCommissionWithdrawn(distributorNftId, recipient, amount, tokenAddress)] - 
[
LogDistributionServiceDistributorTypeCreated(distributionNftId, distributorType, name, commissionPercentage)] - 
[
LogDistributionServiceDistributorCreated(distributionNftId, distributorNftId, distributor, distributorType)] - 
[
LogDistributionServiceDistributorTypeChanged(distributorNftId, oldDistributorType, newDistributorType)] - 
[
LogDistributionServiceReferralCreated(distributorNftId, referralId, code, discountPercentage, maxReferrals, expiryAt)] - 
[
LogDistributionServiceReferralProcessed(distributorNftId, referralId, usedReferrals)] - 
[
LogDistributionServiceSaleProcessed(distributionNftId, premium, distributionOwnerFee)] - 
[
LogDistributionServiceSaleProcessedWithReferral(distributionNftId, distributorNftId, referralId, numPoliciesSold, premium, distributionOwnerFee, commissionAmount)] 
- 
[
LogNftOwnableNftLinkedToAddress(nftId, owner)] 
- 
[
AuthorityUpdated(authority)] 
- 
[
Initialized(version)] 
createDistributorType(string name, UFixed minDiscountPercentage, UFixed maxDiscountPercentage, UFixed commissionPercentage, uint32 maxReferralCount, Seconds maxReferralLifetime, bool allowSelfReferrals, bool allowRenewals, bytes data) → DistributorType distributorType external
createDistributor(address distributor, DistributorType distributorType, bytes data) → NftId distributorNftId external
changeDistributorType(NftId distributorNftId, DistributorType newDistributorType, bytes data) external
createReferral(NftId distributorNftId, string code, UFixed discountPercentage, uint32 maxReferrals, Timestamp expiryAt, bytes data) → ReferralId referralId external
processReferral(NftId distributionNftId, ReferralId referralId) external
callback from product service when a referral is used. Calling this will increment the referral usage counter.
processSale(NftId distributionNftId, ReferralId referralId, struct IPolicy.PremiumInfo premium) external
callback from product service when selling a policy for a specific referralId
withdrawCommission(NftId distributorNftId, Amount amount) → Amount withdrawnAmount public
Withdraw commission for the distributor
getDiscountPercentage(contract InstanceReader instanceReader, ReferralId referralId) → UFixed discountPercentage, ReferralStatus status external
Returns the discount percentage for the provided referral code. The function retuns both the percentage and the status of the referral code.
DistributionServiceManager 
import "@etherisc/gif-next/contracts/distribution/DistributionServiceManager.sol";
- 
[
constructor(authority, registry, salt)] - 
[
getDistributionService()] 
- 
[
initialize(registry, implementation, data, salt)] - 
[
deploy(registry, initialImplementation, initializationData)] - 
[
deployDetermenistic(registry, initialImplementation, initializationData, salt)] - 
[
upgrade(newImplementation)] - 
[
upgrade(newImplementation, upgradeData)] - 
[
linkToProxy()] - 
[
getDeployData(proxyOwner, deployData)] - 
[
getUpgradeData(upgradeData)] - 
[
getProxy()] - 
[
getVersion()] - 
[
getVersionCount()] - 
[
getVersion(idx)] - 
[
getVersionInfo(_version)] 
- 
[
_checkNftType(nftId, expectedObjectType)] - 
[
__NftOwnable_init(registry, initialOwner)] - 
[
linkToRegisteredNftId()] - 
[
getNftId()] - 
[
getOwner()] - 
[
_linkToNftOwnable(nftOwnableAddress)] 
- 
[
__RegistryLinked_init(registry)] - 
[
getRegistry()] 
- 
[
__ERC165_init()] - 
[
_initializeERC165()] - 
[
_registerInterface(interfaceId)] - 
[
_registerInterfaceNotInitializing(interfaceId)] - 
[
supportsInterface(interfaceId)] 
- 
[
_checkInitializing()] - 
[
_disableInitializers()] - 
[
_getInitializedVersion()] - 
[
_isInitializing()] 
- 
[
LogProxyManagerVersionableDeployed(proxy, initialImplementation)] - 
[
LogProxyManagerVersionableUpgraded(proxy, upgradedImplementation)] 
- 
[
LogNftOwnableNftLinkedToAddress(nftId, owner)] 
- 
[
Initialized(version)]