Skip to content

Commit f0378fc

Browse files
committed
Revert "fix: remove unused bc fns"
This reverts commit 29cb2b5.
1 parent 29cb2b5 commit f0378fc

File tree

3 files changed

+273
-2
lines changed

3 files changed

+273
-2
lines changed

contracts/interfaces/workflows/IRoyaltyTokenDistributionWorkflows.sol

+25
Original file line numberDiff line numberDiff line change
@@ -89,4 +89,29 @@ interface IRoyaltyTokenDistributionWorkflows {
8989
WorkflowStructs.RoyaltyShare[] calldata royaltyShares,
9090
WorkflowStructs.SignatureData calldata sigApproveRoyaltyTokens
9191
) external;
92+
93+
////////////////////////////////////////////////////////////////////////////
94+
// DEPRECATED, WILL BE REMOVED IN V1.4 //
95+
////////////////////////////////////////////////////////////////////////////
96+
97+
/// @notice Mint an NFT and register the IP, attach PIL terms, and distribute royalty tokens.
98+
/// @dev THIS VERSION OF THE FUNCTION IS DEPRECATED, WILL BE REMOVED IN V1.4
99+
function mintAndRegisterIpAndAttachPILTermsAndDistributeRoyaltyTokens_deprecated(
100+
address spgNftContract,
101+
address recipient,
102+
WorkflowStructs.IPMetadata calldata ipMetadata,
103+
PILTerms[] calldata terms,
104+
WorkflowStructs.RoyaltyShare[] calldata royaltyShares
105+
) external returns (address ipId, uint256 tokenId, uint256[] memory licenseTermsIds);
106+
107+
/// @notice Register an IP, attach PIL terms, and deploy a royalty vault.
108+
/// @dev THIS VERSION OF THE FUNCTION IS DEPRECATED, WILL BE REMOVED IN V1.4
109+
function registerIpAndAttachPILTermsAndDeployRoyaltyVault_deprecated(
110+
address nftContract,
111+
uint256 tokenId,
112+
WorkflowStructs.IPMetadata calldata ipMetadata,
113+
PILTerms[] calldata terms,
114+
WorkflowStructs.SignatureData calldata sigMetadata,
115+
WorkflowStructs.SignatureData calldata sigAttach
116+
) external returns (address ipId, uint256[] memory licenseTermsIds, address ipRoyaltyVault);
92117
}

contracts/workflows/RoyaltyTokenDistributionWorkflows.sol

+132
Original file line numberDiff line numberDiff line change
@@ -458,4 +458,136 @@ contract RoyaltyTokenDistributionWorkflows is
458458
/// @dev Hook to authorize the upgrade according to UUPSUpgradeable
459459
/// @param newImplementation The address of the new implementation
460460
function _authorizeUpgrade(address newImplementation) internal override restricted {}
461+
462+
////////////////////////////////////////////////////////////////////////////
463+
// DEPRECATED, WILL BE REMOVED IN V1.4 //
464+
////////////////////////////////////////////////////////////////////////////
465+
466+
/// @notice Mint an NFT and register the IP, attach PIL terms, and distribute royalty tokens.
467+
/// @dev THIS VERSION OF THE FUNCTION IS DEPRECATED, WILL BE REMOVED IN V1.4
468+
function mintAndRegisterIpAndAttachPILTermsAndDistributeRoyaltyTokens_deprecated(
469+
address spgNftContract,
470+
address recipient,
471+
WorkflowStructs.IPMetadata calldata ipMetadata,
472+
PILTerms[] calldata terms,
473+
WorkflowStructs.RoyaltyShare[] calldata royaltyShares
474+
)
475+
external
476+
onlyMintAuthorized(spgNftContract)
477+
returns (address ipId, uint256 tokenId, uint256[] memory licenseTermsIds)
478+
{
479+
tokenId = ISPGNFT(spgNftContract).mintByPeriphery({
480+
to: address(this),
481+
payer: msg.sender,
482+
nftMetadataURI: ipMetadata.nftMetadataURI,
483+
nftMetadataHash: "",
484+
allowDuplicates: true
485+
});
486+
ipId = IP_ASSET_REGISTRY.register(block.chainid, spgNftContract, tokenId);
487+
MetadataHelper.setMetadata(ipId, address(CORE_METADATA_MODULE), ipMetadata);
488+
489+
licenseTermsIds = _registerMultiplePILTermsAndAttach(ipId, terms);
490+
491+
_deployRoyaltyVaultDEPR(ipId, address(PIL_TEMPLATE), licenseTermsIds[0]);
492+
_distributeRoyaltyTokens(
493+
ipId,
494+
royaltyShares,
495+
WorkflowStructs.SignatureData(address(0), 0, "") // no signature required.
496+
);
497+
498+
ISPGNFT(spgNftContract).safeTransferFrom(address(this), recipient, tokenId, "");
499+
}
500+
501+
/// @notice Register an IP, attach PIL terms, and deploy a royalty vault.
502+
/// @dev THIS VERSION OF THE FUNCTION IS DEPRECATED, WILL BE REMOVED IN V1.4
503+
function registerIpAndAttachPILTermsAndDeployRoyaltyVault_deprecated(
504+
address nftContract,
505+
uint256 tokenId,
506+
WorkflowStructs.IPMetadata calldata ipMetadata,
507+
PILTerms[] calldata terms,
508+
WorkflowStructs.SignatureData calldata sigMetadata,
509+
WorkflowStructs.SignatureData calldata sigAttach
510+
) external returns (address ipId, uint256[] memory licenseTermsIds, address ipRoyaltyVault) {
511+
if (msg.sender != sigMetadata.signer)
512+
revert Errors.RoyaltyTokenDistributionWorkflows__CallerNotSigner(msg.sender, sigMetadata.signer);
513+
if (msg.sender != sigAttach.signer)
514+
revert Errors.RoyaltyTokenDistributionWorkflows__CallerNotSigner(msg.sender, sigAttach.signer);
515+
516+
ipId = IP_ASSET_REGISTRY.register(block.chainid, nftContract, tokenId);
517+
MetadataHelper.setMetadataWithSig(
518+
ipId,
519+
address(CORE_METADATA_MODULE),
520+
address(ACCESS_CONTROLLER),
521+
ipMetadata,
522+
sigMetadata
523+
);
524+
525+
PermissionHelper.setTransientPermissionForModule(
526+
ipId,
527+
address(LICENSING_MODULE),
528+
address(ACCESS_CONTROLLER),
529+
ILicensingModule.attachLicenseTerms.selector,
530+
sigAttach
531+
);
532+
533+
licenseTermsIds = _registerMultiplePILTermsAndAttach(ipId, terms);
534+
535+
ipRoyaltyVault = _deployRoyaltyVaultDEPR(ipId, address(PIL_TEMPLATE), licenseTermsIds[0]);
536+
}
537+
538+
/// @dev Deploys a royalty vault for the IP.
539+
/// @dev THIS FUNCTION IS DEPRECATED, WILL BE REMOVED IN V1.4
540+
function _deployRoyaltyVaultDEPR(
541+
address ipId,
542+
address licenseTemplate,
543+
uint256 licenseTermsId
544+
) internal returns (address ipRoyaltyVault) {
545+
// if no royalty vault, mint a license token to trigger the vault deployment
546+
if (ROYALTY_MODULE.ipRoyaltyVaults(ipId) == address(0)) {
547+
address[] memory parentIpIds = new address[](1);
548+
uint256[] memory licenseTermsIds = new uint256[](1);
549+
parentIpIds[0] = ipId;
550+
licenseTermsIds[0] = licenseTermsId;
551+
552+
LicensingHelper.collectMintFeesAndSetApproval({
553+
payerAddress: msg.sender,
554+
royaltyModule: address(ROYALTY_MODULE),
555+
licensingModule: address(LICENSING_MODULE),
556+
licenseTemplate: licenseTemplate,
557+
parentIpIds: parentIpIds,
558+
licenseTermsIds: licenseTermsIds
559+
});
560+
561+
LICENSING_MODULE.mintLicenseTokens({
562+
licensorIpId: ipId,
563+
licenseTemplate: licenseTemplate,
564+
licenseTermsId: licenseTermsId,
565+
amount: 1,
566+
receiver: msg.sender,
567+
royaltyContext: "",
568+
maxMintingFee: 0,
569+
maxRevenueShare: 0
570+
});
571+
}
572+
573+
ipRoyaltyVault = ROYALTY_MODULE.ipRoyaltyVaults(ipId);
574+
if (ipRoyaltyVault == address(0)) revert Errors.RoyaltyTokenDistributionWorkflows__RoyaltyVaultNotDeployed();
575+
}
576+
577+
/// @notice THIS FUNCTION IS DEPRECATED, WILL BE REMOVED IN V1.4
578+
function _registerMultiplePILTermsAndAttach(
579+
address ipId,
580+
PILTerms[] calldata terms
581+
) private returns (uint256[] memory licenseTermsIds) {
582+
licenseTermsIds = new uint256[](terms.length);
583+
uint256 length = terms.length;
584+
for (uint256 i; i < length; i++) {
585+
licenseTermsIds[i] = LicensingHelper.registerPILTermsAndAttach(
586+
ipId,
587+
address(PIL_TEMPLATE),
588+
address(LICENSING_MODULE),
589+
terms[i]
590+
);
591+
}
592+
}
461593
}

test/workflows/RoyaltyTokenDistributionWorkflows.t.sol

+116-2
Original file line numberDiff line numberDiff line change
@@ -29,9 +29,15 @@ contract RoyaltyTokenDistributionWorkflowsTest is BaseTest {
2929
WorkflowStructs.RoyaltyShare[] private royaltyShares;
3030
WorkflowStructs.MakeDerivative private derivativeData;
3131

32+
/// DEPRECATED, WILL BE REMOVED IN V1.4----------------------------------------------------------------------------
33+
PILTerms[] private commRemixTerms;
34+
WorkflowStructs.MakeDerivativeDEPR private derivativeDataDEPR;
35+
///----------------------------------------------------------------------------------------------------------------
36+
3237
function setUp() public override {
3338
super.setUp();
3439
_setUpTest();
40+
_setUpDEPR();
3541
}
3642

3743
function test_RoyaltyTokenDistributionWorkflows_mintAndRegisterIpAndAttachPILTermsAndDistributeRoyaltyTokens()
@@ -53,7 +59,7 @@ contract RoyaltyTokenDistributionWorkflowsTest is BaseTest {
5359
vm.stopPrank();
5460

5561
assertTrue(ipAssetRegistry.isRegistered(ipId));
56-
assertEq(tokenId, 2);
62+
assertEq(tokenId, 3);
5763
assertEq(spgNftPublic.tokenURI(tokenId), string.concat(testBaseURI, ipMetadataDefault.nftMetadataURI));
5864
assertMetadata(ipId, ipMetadataDefault);
5965
_assertAttachedLicenseTerms(ipId, licenseTermsIds);
@@ -79,7 +85,7 @@ contract RoyaltyTokenDistributionWorkflowsTest is BaseTest {
7985
});
8086
vm.stopPrank();
8187

82-
assertEq(tokenId, 2);
88+
assertEq(tokenId, 3);
8389
assertEq(spgNftPublic.tokenURI(tokenId), string.concat(testBaseURI, ipMetadataDefault.nftMetadataURI));
8490
assertEq(ipAssetRegistry.ipId(block.chainid, address(spgNftPublic), tokenId), ipId);
8591
assertMetadata(ipId, ipMetadataDefault);
@@ -540,4 +546,112 @@ contract RoyaltyTokenDistributionWorkflowsTest is BaseTest {
540546
(uint8 v, bytes32 r, bytes32 s) = vm.sign(signerSk, digest);
541547
signature = abi.encodePacked(r, s, v);
542548
}
549+
550+
////////////////////////////////////////////////////////////////////////////
551+
// DEPRECATED, WILL BE REMOVED IN V1.4 //
552+
////////////////////////////////////////////////////////////////////////////
553+
554+
function test_RoyaltyTokenDistributionWorkflows_mintAndRegisterIpAndAttachPILTermsAndDistributeRoyaltyTokens_DEPR()
555+
public
556+
{
557+
vm.startPrank(u.alice);
558+
mockToken.mint(u.alice, nftMintingFee + licenseMintingFee);
559+
mockToken.approve(address(spgNftPublic), nftMintingFee);
560+
mockToken.approve(address(royaltyTokenDistributionWorkflows), licenseMintingFee);
561+
562+
(address ipId, uint256 tokenId, uint256[] memory licenseTermsIds) = royaltyTokenDistributionWorkflows
563+
.mintAndRegisterIpAndAttachPILTermsAndDistributeRoyaltyTokens_deprecated({
564+
spgNftContract: address(spgNftPublic),
565+
recipient: u.alice,
566+
ipMetadata: ipMetadataDefault,
567+
terms: commRemixTerms,
568+
royaltyShares: royaltyShares
569+
});
570+
vm.stopPrank();
571+
572+
assertTrue(ipAssetRegistry.isRegistered(ipId));
573+
assertEq(tokenId, 3);
574+
assertEq(spgNftPublic.tokenURI(tokenId), string.concat(testBaseURI, ipMetadataDefault.nftMetadataURI));
575+
assertMetadata(ipId, ipMetadataDefault);
576+
assertEq(licenseTermsIds[0], pilTemplate.getLicenseTermsId(commRemixTerms[0]));
577+
(address licenseTemplateAttached, uint256 licenseTermsIdAttached) = licenseRegistry.getAttachedLicenseTerms(
578+
ipId,
579+
0
580+
);
581+
assertEq(licenseTemplateAttached, address(pilTemplate));
582+
assertEq(licenseTermsIdAttached, pilTemplate.getLicenseTermsId(commRemixTerms[0]));
583+
(licenseTemplateAttached, licenseTermsIdAttached) = licenseRegistry.getAttachedLicenseTerms(ipId, 1);
584+
assertEq(licenseTemplateAttached, address(pilTemplate));
585+
assertEq(licenseTermsIdAttached, pilTemplate.getLicenseTermsId(commRemixTerms[1]));
586+
_assertRoyaltyTokenDistribution(ipId);
587+
}
588+
589+
function test_RoyaltyTokenDistributionWorkflows_revert_RoyaltyVaultNotDeployed_DEPR() public {
590+
vm.startPrank(u.alice);
591+
mockToken.mint(u.alice, licenseMintingFee);
592+
mockToken.approve(address(spgNftPublic), licenseMintingFee);
593+
594+
PILTerms[] memory terms = new PILTerms[](1);
595+
terms[0] = PILFlavors.nonCommercialSocialRemixing();
596+
vm.expectRevert(Errors.RoyaltyTokenDistributionWorkflows__RoyaltyVaultNotDeployed.selector);
597+
royaltyTokenDistributionWorkflows.mintAndRegisterIpAndAttachPILTermsAndDistributeRoyaltyTokens_deprecated({
598+
spgNftContract: address(spgNftPublic),
599+
recipient: u.alice,
600+
ipMetadata: ipMetadataDefault,
601+
terms: terms,
602+
royaltyShares: royaltyShares
603+
});
604+
vm.stopPrank();
605+
}
606+
607+
function _setUpDEPR() private {
608+
uint32 testCommRevShare = 5 * 10 ** 6; // 5%
609+
610+
commRemixTerms.push(
611+
PILFlavors.commercialRemix({
612+
mintingFee: licenseMintingFee,
613+
commercialRevShare: testCommRevShare,
614+
royaltyPolicy: address(royaltyPolicyLAP),
615+
currencyToken: address(mockToken)
616+
})
617+
);
618+
619+
commRemixTerms.push(
620+
PILFlavors.commercialRemix({
621+
mintingFee: licenseMintingFee,
622+
commercialRevShare: testCommRevShare,
623+
royaltyPolicy: address(royaltyPolicyLRP),
624+
currencyToken: address(mockToken)
625+
})
626+
);
627+
628+
PILTerms[] memory commRemixTermsParent = new PILTerms[](1);
629+
commRemixTermsParent[0] = PILFlavors.commercialRemix({
630+
mintingFee: licenseMintingFee,
631+
commercialRevShare: testCommRevShare,
632+
royaltyPolicy: address(royaltyPolicyLRP),
633+
currencyToken: address(mockToken)
634+
});
635+
636+
address[] memory ipIdParent = new address[](1);
637+
uint256[] memory licenseTermsIdsParent;
638+
vm.startPrank(u.alice);
639+
mockToken.mint(u.alice, licenseMintingFee);
640+
mockToken.approve(address(spgNftPublic), licenseMintingFee);
641+
(ipIdParent[0], , licenseTermsIdsParent) = licenseAttachmentWorkflows
642+
.mintAndRegisterIpAndAttachPILTerms_deprecated({
643+
spgNftContract: address(spgNftPublic),
644+
recipient: u.alice,
645+
ipMetadata: ipMetadataDefault,
646+
terms: commRemixTermsParent
647+
});
648+
vm.stopPrank();
649+
650+
derivativeDataDEPR = WorkflowStructs.MakeDerivativeDEPR({
651+
parentIpIds: ipIdParent,
652+
licenseTemplate: address(pilTemplate),
653+
licenseTermsIds: licenseTermsIdsParent,
654+
royaltyContext: ""
655+
});
656+
}
543657
}

0 commit comments

Comments
 (0)